DBMS (MySQL)/DBMS (Oracle)

[DB] VIEW

(งᐛ)ว 2023. 10. 18. 22:34
728x90

VIEW 

CREATE VIEW 뷰이름 AS( 

      쿼리문 

 ) 

기존의 테이블은 그대로 놔둔 채 필요한 컬럼 및 새로운 컬럼을 만드는 가상의 테이블

실제 데이터가 저장되는 것은 아니지만 VIEW를 통해 데이터를 관리할 수 있다. 

 

VIEW의 특징 

독립성 : 다른곳에서 수정하는 것이 어려움 

편리성 : 긴 쿼리문을 짧게 해줌 

보안성 : 짧게 만들기 때문에 기존의 쿼리는 보이지 않음 

 

VIEW의 사용목적

1. 기존 테이블은 그대로 놔둔 채 필요한 컬럼 및 새로운 컬럼만 사용할 수 있음 

2. 복잡한 쿼리문을 쉽게 만들어줌 

3. 여러테이블의 JOIN, GROUP BY와 같은 복잡한 쿼리를 VIEW 형태로 저장해두면 다음부터는 그 VIEW에 대한 정보만 가져오면 됨

 


 

--기존방법

SELECT FIRST_NAMESALARY, (SALARY*COMMISSION_PCTCOMM FROM EMPLOYEES;

 

--VIEW 사용

CREATE VIEW MY_EMPL AS (SELECT FIRST_NAMESALARY, (SALARY*COMMISSION_PCTCOMM 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;

 

 

 

728x90