SQL_ View(뷰)

김지영·2024년 3월 7일

SQL 기본

목록 보기
9/10

1. 뷰(View)

- View 란?

: 1개 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블

  • 목적
    1) 보안을 유지하기 위해 사용
    예) 실무 : 사원테이블 (급여:SALARY, 대외비(비밀))
    2) SQL 문을 미리 코딩해놓고 재활용 : 코딩 생산성 향상

★ View 사용법

① View 생성
CREATE OR REPLACE VIEW 뷰이름(컬럼명, 컬럼명2,...) AS SELECT 원본컬러명, 원본컬럼명2, ... FROM 테이블명 WHERE 조건식;

-> 참고) 뷰이름(컬럼명, 컬럼명2,...) => 뷰이름 : 생략가능(컬럼명)

CREATE OR REPLACE VIEW VW_EMP_JOB(ENO, ENAME, DNO, JOB)
AS
SELECT ENO, ENAME, DNO, JOB
FROM EMPLOYEE
WHERE JOB LIKE 'SALESMAN%';

② View 조회
SELECT * FROM 뷰이름;

SELECT * FROM VW_EMP_JOB;
  • 시스템 테이블 : 데이터사전(Dictionary view) : USER_VIEWS
SELECT * FROM USER_VIEWS;

③ View 삭제
DROP VIEW 뷰이름;

DROP VIEW VW_EMP_JOB;

(심화*) 뷰에 INSERT 가능? O
예제 2) VW_EMP_JOB 에 INSERT 하기
뷰컬럼 : ENO(사원번호), ENAME(사원명), DNO(부서번호), JOB(직위)

INSERT INTO VW_EMP_JOB
VALUES(8000, '윤정화', 30, 'SALESMAN');

-- 데이터 확인

SELECT * FROM VW_EMP_JOB;

-- 확정

COMMIT;

예제 3) 뷰에 그룹함수를 사용해서 만들기
부서별(DNO) 급여합계(SUM(SALARY)), 급여평균(AVG(SALARY))을 출력하는 뷰를 생성하세요
뷰이름 : VW_EMP_SALARY
컬럼 별칭 : 급여합계(SUM(SALARY)) AS SAL_SUM
컬럼 별칭 : 급여평균(AVG(SALARY)) AS SAL_AVG
주의점 ) 그룹함수로 뷰생성시 그룹함수 별명을 넣어야함

CREATE OR REPLACE VIEW VW_EMP_SALARY
AS
SELECT SUM(SALARY) AS SAL_SUM
      ,AVG(SALARY) AS SAL_AVG
FROM EMPLOYEE
GROUP BY DNO;

-- 데이터 확인

SELECT * FROM VW_EMP_SALARY;

-- 그룹함수 사용 뷰에서 INSERT 가능 ? X

INSERT INTO VW_EMP_SALARY
VALUES(1000, 3000);            -- 에러

예제 3) 뷰(View) 삭제
사용법) DROP VIEW 뷰이름;

DROP VIEW VW_EMP_SALARY;

(참고) 뷰에 INSERT 가능 : (그룹함수 없을때)
뷰에 INSERT 기능 제한 : WITH READ ONLY

예제 4) WITH READ ONLY 옵션을 붙여서 뷰 만들기
SQL : 직위가 MANAGER 인 사원을 출력하는 뷰 만들기

CREATE OR REPLACE VIEW VW_EMP_JOB_READ
AS
SELECT ENO, ENAME, DNO, JOB
FROM EMPLOYEE
WHERE JOB LIKE '%MANAGER%' WITH READ ONLY;

-- INSERT 테스트

INSERT INTO VW_EMP_JOB_READ
VALUES(9000,'김주현',30, 'MANAGER'); -- 에러 발생
profile
그냥 졍이라구하자

0개의 댓글