연습문제 sql은 모두 제가 직접 작성한 것이므로 오타, 오답이 존재할 수 있습니다.
궁금하신 점이 추가로 있을 시에는 문의하시면 최대한 답변드리겠습니다.
1. EMP 테이블과 같은 구조, 같은 데이터를 갖는 테이블 REEMP 테이블을 생성하고, 테이블의 구조와 데이터를 확인하여라.
[답]
EMP 테이블과 같은 구조, 같은 데이터를 갖는 테이블 REEMP 테이블을 생성
CREATE TABLE REEMP
AS
SELECT *
FROM EMP;
테이블의 구조 확인
DESC REEMP
테이블의 데이터를 확인
SELECT *
FROM REEMP;
2. DEPT 테이블과 같은 구조, 같은 데이터를 갖는 테이블 REDEPT 테이블을 생성하고, 테이블의 구조와 데이터를 확인하여라.
[답]
DEPT 테이블과 같은 구조, 같은 데이터를 갖는 테이블 REDEPT 테이블을 생성
CREATE TABLE REDEPT
AS
SELECT *
FROM DEPT;
테이블의 구조 확인
DESC REDEPT
테이블의 데이터를 확인
SELECT *
FROM REDEPT;
3. REEMP 테이블을 토대로 EMPNO, ENAME, DEPTNO를 포함하는 뷰 REEMP_VIEW를 작성하여라.
+) 뷰 REEMP_VIEW를 작성하여라.
[답]
CREATE OR REPLACE VIEW REEMP_VIEW
AS
SELECT EMPNO, ENAME, DEPTNO
FROM REEMP;
1) 뷰 REEMP_VIEW의 구조를 확인하여라.
[답]
DESC REEMP_VIEW
2) 뷰 REEMP_VIEW의 데이터를 확인하여라.
[답]
SELECT *
FROM REEMP_VIEW;
3) 뷰 REEMP_VIEW의 EMPNO의 데이터를 EMPNO+100으로 변경하여라.
[답]
UPDATE REEMP_VIEW
SET EMPNO = EMPNO + 100;
4) EMPNO의 값이 변경되었는지를 REEMP_VIEW에서 확인하여라.
[답]
SELECT *
FROM REEMP_VIEW;
5) EMPNO의 값이 변경되었는지를 REEMP 테이블에서 확인하여라.
[답]
SELECT *
FROM REEMP;
DML을 사용하여 VIEW의 데이터를 수정하게 되면 원본 테이블도 같이 수정이 됩니다.
6) 데이터 사전을 이용해서 생성된 뷰 REEMP_VIEW의 이름과 생성 구문을 확인하여라.
[답]
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS;
4. REEMP 테이블로부터 DEPTNO=30인 사원들로 된 REEMP_VIEW30을 만들어라. 단 DEPTNO의 값은 변경될 수 없도록 하여라.
+) 뷰 REEMP_VIEW30을 만들어라.
[답]
CREATE OR REPLACE VIEW REEMP_VIEW30
AS
SELECT *
FROM REEMP
WHERE DEPTNO = 30
WITH CHECK OPTION;
1) 뷰 REEMP_VIEW30의 구조를 확인하여라.
[답]
DESC REEMP_VIEW30
2) 뷰 REEMP_VIEW30의 데이터를 확인하여라.
[답]
SELECT *
FROM REEMP_VIEW30;
3) 뷰 REEMP_VIEW30 에서 DEPTNO가 30인 것을 10으로 바꾸어라. 바꿀 수 없다면 그 이유에 대해 설명하여라.
[답]
UPDATE REEMP_VIEW30
SET DEPTNO = 10
WHERE DEPTNO = 30;
뷰를 생성할 때 WITH CHECK OPTION은 사용한 조건의 칼럼 값을 변경 못하도록 하는 기능을 제공하기 때문에
추후에 DEPTNO 칼럼 값을 변경하지 못한다.
4) 데이터 사전을 이용해서 생성된 뷰 REEMP_VIEW30의 이름과 생성 구문을 확인하여라.
[답]
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS;
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'REEMP_VIEW30';
5. REEMP 테이블과 REDEPT 테이블로부터 EMPNO, ENAME, DEPTNO, DNAME을 포함하는 뷰 E_D_VIEW를 작성하여라.
+) 뷰 E_D_VIEW를 작성하여라.
[답]
CREATE OR REPLACE VIEW E_D_VIEW
AS
SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM REEMP E, REDEPT D
WHERE E.DEPTNO = D.DEPTNO;
1) 뷰 E_D_VIEW의 구조를 확인하여라.
[답]
DESC E_D_VIEW
2) 뷰 E_D_VIEW의 모든 데이터를 확인하여라.
[답]
SELECT *
FROM E_D_VIEW;
3) 뷰 E_D_VIEW 에 하나의 데이터 (9000, 'KIM', 30, 'MARKETING')를 추가하여라. 만약 추가할 수 없다면 그 이유에 대해 설명하여라.
[답]
INSERT INTO E_D_VIEW
VALUES(9000, 'KIM', 30, 'MARKETING');
오라클에서 자체적으로 복합뷰에는 DML 연산을 가능하지 않도록 설계를 해놓았다.
(PK, FK 등의 조인을 진행하다가 사용자로부터 각종 오류가 나기 때문에)
4) 데이터 사전을 이용해서 생성된 뷰 E_D_VIEW의 이름과 생성 구문을 확인하여라.
[답]
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS;
SELECT VIEW_NAME, TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'E_D_VIEW';
궁금한 점이 있을 시 덧글 주시면 최대한 답글 드리겠습니다.
'연습 문제' 카테고리의 다른 글
예제 따라가며 쉽게 배우는 오라클 연습 문제 p.208 (0) | 2023.01.03 |
---|---|
예제 따라가며 쉽게 배우는 오라클 연습 문제 p.198 (0) | 2023.01.03 |
예제 따라가며 쉽게 배우는 오라클 연습 문제 p.178 (0) | 2023.01.02 |
예제 따라가며 쉽게 배우는 오라클 연습 문제 p.153 ~ 154 (0) | 2023.01.01 |
예제 따라가며 쉽게 배우는 오라클 연습 문제 p.127 ~ 128 (0) | 2022.12.31 |
댓글