VIEW
CREATE VIEW 뷰이름 AS(
쿼리문
)
기존의 테이블은 그대로 놔둔 채 필요한 컬럼 및 새로운 컬럼을 만드는 가상의 테이블
실제 데이터가 저장되는 것은 아니지만 VIEW를 통해 데이터를 관리할 수 있다.
VIEW의 특징
독립성 : 다른곳에서 수정하는 것이 어려움
편리성 : 긴 쿼리문을 짧게 해줌
보안성 : 짧게 만들기 때문에 기존의 쿼리는 보이지 않음
VIEW의 사용목적
1. 기존 테이블은 그대로 놔둔 채 필요한 컬럼 및 새로운 컬럼만 사용할 수 있음
2. 복잡한 쿼리문을 쉽게 만들어줌
3. 여러테이블의 JOIN, GROUP BY와 같은 복잡한 쿼리를 VIEW 형태로 저장해두면 다음부터는 그 VIEW에 대한 정보만 가져오면 됨
--기존방법
SELECT FIRST_NAME, SALARY, (SALARY*COMMISSION_PCT) COMM FROM EMPLOYEES;
--VIEW 사용
CREATE VIEW MY_EMPL AS (SELECT FIRST_NAME, SALARY, (SALARY*COMMISSION_PCT) COMM FROM EMPLOYEES);
SELECT * FROM MY_EMPL;
결과는 동일

--급여를 많이 받는 순서대로 순위를 매겨보자
CREATE VIEW DATA_PLUS AS(
SELECT SALARY, RANK() OVER(ORDER BY SALARY DESC) "rank"
FROM EMPLOYEES);
SELECT * FROM DATA_PLUS;

** RANK() 와 OVER()
RANK() : 순위를 계산하는 윈도우함수
OVER() : 윈도우함수를 사용할 때 정의하는 역할. 일반적으로 OVER() 다음에 ORDER BY절을 사용해 윈도우 함수를 정의함
--사번, 이름, 부서이름을 조회하는 TEST_EMPL 이라는 VIEW 만들기
CREATE VIEW TEST_EMPL AS (
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_NAME FROM EMPLOYEES e
INNER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID );
SELECT * FROM TEST_EMPL;

'DBMS (MySQL) > DBMS (Oracle)' 카테고리의 다른 글
[DB] 시퀀스(SEQUENCE) (0) | 2023.10.19 |
---|---|
[DB] PL/SQL, 프로시저(Procedure), IF문 (0) | 2023.10.18 |
[DB] 서브쿼리 (1) | 2023.10.17 |
[DB] ROLLUP과 CUBE (0) | 2023.10.17 |
[DB] Oracle SQL 함수 (그룹함수_최소, 최대, 평균, GROUP BY, HAVING 등) (0) | 2023.10.17 |