본문 바로가기

콩's EDUCATION/콩's DATABASE

SQL 문제 4차

===================== table ===================== 1) 다음 조건을 만족하는 테이블 생성 DDL을 작성하십시오. 테이블 명 : board 테이블에 대한 이해 : 게시판 정보를 가지는 테이블 컬럼명: board_seq (게시물 번호) 정수 최대 10자리, board_title (게시물 제목) 문자 가변 자릿수 255자리, board_contents (게시물 내용) 문자 가변 자릿수 4000자리 board_writer (게시물 작성자) 문자 가변 자릿수 100자리, board_date (게시물 작성시간) 날짜, board_viewcount (게시물 조회수) 정수 최대 6자리, board_password (게시물 암호) 문자 가변 자릿수 20자리, 제약조건 : board_seq : 기본 키(Primary Key), 제약 조건명은 BOARD_SEQ_PK board_title : 값이 반드시 존재(NOT NULL) board_writer : Member 테이블의 member_id 컬럼 참조(Member 테이블 member_id 문자 가변 자릿수 100자리 primary key 라고 가정합니다) CREATE TABLE board(board_seq NUMBER(10) CONSTRAINT BOARD_SEQ_PK PRIMARY KEY,board_title VARCHAR2(255) NOT NULL,board_contents VARCHAR2(4000),board_writer VARCHAR2(100), board_date DATE,board_viewcount NUMBER(6),board_password VARCHAR2(20)); COMMIT; 2) 기존 EMPLOYEES 테이블에 있는 레코드들 중, 'Marketing'부서에 근무하는 직원 레코드를 이용하여 EMPLOYEES_MARKETING 테이블을 만들기 위한 DDL을 작성하십시오. 단, EMPLOYEES_MARKETING 테이블의 키는 없어도 관계없습니다. CREATE TABLE EMPLOYEES_MARKETINGAS SELECT * FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE lower(department_name) like '%marketing%'); SELECT * FROM employees_marketing; 3) 인사관리를 위하여 현재 직원정보에 대한 백업테이블을 생성하여 보관하기로 합니다. 새로 생성하는 백업테이블명은 "EMPLOYEES_BACKUP" 이며 기존테이블(EMPLOYEES)의 Constraint는 필요로 하지 않습니다. 단 급여(Salary)가 5000을 초과하는 직원만 백업테이블 내에 존재해야 합니다. 위 설명에 해당하는 테이블을 생성하기 위한 sql 스크립트를 작성하시오. CREATE TABLE EMPLOYEES_BACKUPASSELECT * FROM employees WHERE salary > 5000; COMMIT; SELECT * FROM EMPLOYEES_BACKUP; ===================== subquery(scott 계정의 emp, dept 테이블 대상) ===================== 8. 사번(empno)이 7934인 사원보다 연봉(sal)이 높고 직종(job)이 SALESMAN인 사원의 사번과 이름과 연봉을 조회한다. 단, 연봉이 낮은 순서로 출력한다. SELECT empno, ename, sal FROM emp WHERE sal > (SELECT sal FROM emp WHERE empno = 7934) and lower(job) like '%salesman'; 9. 연봉등급(GRADE)이 4등급인 사원들의 사원번호(EMPNO), 사원명(ENAME), 연봉(SAL), 연봉등급(GRADE)을 조회한다. 연봉이 낮은 순서로 정렬하고, 연봉이 같은 경우에는 사원번호가 낮은 순서로 정렬한다. SELECT ename, dname, sal, grade FROM emp, dept, salgrade WHERE emp.deptno = dept.deptno and sal between losal and hisal and grade = 4ORDER BY 3; or SELECT ename, dname, sal, (SELECT decode(grade,4,4,0) FROM salgrade)FROM emp a, dept b WHERE a.deptno = b.deptno ORDER BY 3; 10. 자신의 매니저(MGR)와 동일한 부서에 근무하는 사원들의 사원번호(EMPNO), 사원명(ENAME), 부서번호(DEPTNO)를 조회한다. 단, 사원번호가 낮은 순서로 정렬한다. (레코드 없을 수도 있습니다) SELECT empno 사원번호, ename 사원명, deptno 부서번호 FROM empWHERE mgr IN (SELECT empno FROM emp) ORDER BY 1 DESC; 11. 부서지역명(LOC)이 "DALLAS"인 부서에 근무하면서 직종(JOB)이 "CLERK"인 사원들의 사원번호, 이름, 연봉을 조회한다. 단, 사원번호가 낮은 순서로 정렬한다. SELECT empno, ename, sal FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE upper(loc) like '%DALLAS') and upper(job) like '%CLERK'; http://192.168.104.198:8000/db/sqltest1_3.zip