Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 생성자
- 리액트
- Spring
- dart
- Sort()
- Node.js
- 깃허브
- app.use
- Pug
- qqOperater
- 추상클래스
- git
- 콘솔게임
- Middleware
- 자바스크립트
- 삼항연산자
- DB
- 자바
- 다형성
- 코딩테스트
- mybatis
- java
- js
- 오류
- Oracle
- int와 integer
- 배열
- push함수
- 네임드생성자
- React
Archives
- Today
- Total
평행코드
VIEW 본문
SELECT 쿼리의 실행 결과를 화면에 저장한 논리적 가상 테이블
실제 테이블과는 다르게 실질적 데이터를 저장하고 있진 않지만
사용자는 테이블을 사용하는 것과 동일하게 사용 가능
예시
CREATE OR REPLACE VIEW V_EMPLOYEE
AS SELECT EMP_ID, EMP_NAME, DEPT_TITLE, NATIONAL_NAME
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON(DEPT_ID = DEPT_CODE)
LEFT JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE)
LEFT JOIN NATIONAL USING(NATIONAL_CODE);
SELECT * FROM V_EMPLOYEE;
DML명령어로 VIEW 조작이 불가능한 경우
1. 뷰 정의에 포함되지 않은 컬럼을 조작하는 경우
CREATE OR REPLACE VIEW V_JOB2
AS SELECT JOB_CODE
FROM JOB;
INSERT INTO V_JOB2 VALUES(‘J8’, ‘인턴’);
* 뷰 정의에 포함되지 않은 컬럼을 INSERT/UPDATE하는 경우 에러 발생
* 단 DELETE는 가능
2. 뷰에 포함되지 않은 컬럼 중에 베이스가 되는 컬럼이 NOT NULL 제약조건이 지정된 경우
CREATE OR REPLACE VIEW V_JOB3
AS SELECT JOB_NAME
FROM JOB;
INSERT INTO V_JOB3 VALUES(‘인턴’);
* 뷰에 포함되지 않은 NOT NULL제약조건이 있는 컬럼이 존재하면
INSERT/UPDATE 시 에러 발생
* 단 DELETE는 가능
3. 산술 표현식으로 정의된 경우
CREATE OR REPLACE VIEW EMP_SAL
AS SELECT EMP_ID, EMP_NAME, SALARY,
(SALARY + (SALARY*NVL(BONUS, 0)))*12 연봉
FROM EMPLOYEE;
INSERT INTO EMP_SAL VALUES(800, ‘정진훈’, 3000000, 4000000);
* 뷰에 산술 계산식이 포함된 경우 INSERT/UPDATE 시 에러 발생
* 단 DELETE는 가능
4. 그룹함수나 GROUP BY절을 포함한 경우
CREATE OR REPLACE VIEW V_GROUPDEPT
AS SELECT DEPT_CODE, SUM(SALARY) 합계, AVG(SALARY) 평균
FROM EMPLOYEE
GROUP BY DEPT_CODE;
INSERT INTO V_GROUPDEPT VALUES(‘D10’, 6000000, 4000000);
DELETE FROM V_GROUPDEPT WHERE DEPT_CODE = ‘D1’;
* 그룹함수 또는 GROUP BY를 사용한 경우 INSERT/UPDATE/DELETE 시 에러 발생
5. DISTINCT를 포함한 경우
CREATE OR REPLACE VIEW V_DT_EMP
AS SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;
INSERT INTO V_DT_EMP VALUES(‘J9’);
DELETE FROM V_DT_EMP WHERE JOB_CODE = ‘J1’;
* DISTINCT를 사용한 경우 INSERT/UPDATE/DELETE 시 에러 발생
6. JOIN을 이용해 여러 테이블을 연결한 경우
CREATE OR REPLACE VIEW V_JOINEMP
AS SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);
INSERT INTO V_JOINEMP VALUES(888, ‘조세오’, ‘인사관리부’);
* 뷰 정의 시 JOIN을 사용한 경우 INSERT/UPDATE 시 에러 발생
* 단 DELETE는 가능
'Oracle Database' 카테고리의 다른 글
SEQUENCE (0) | 2023.11.02 |
---|---|
DDL(ALTER, DROP) (2) | 2023.10.22 |
DML (0) | 2023.10.22 |
제약조건(CONSTRAINTS) (2) | 2023.10.09 |
조인문 (JOIN) (0) | 2023.09.28 |