혼공 SQL(Oracle) - 뷰

Jobmania·2023년 2월 13일
0

SQL 잘쓰기

목록 보기
8/16
post-thumbnail

뷰는 직접 테이블에 접근하는 것이 아니라 테이블에서 사용자가 필요로 하는 부분만 선택하여 만들어 놓은 데이터의 집합입니다. 즉, 가상의 테이블이라 할 수 있습니다.

테이블이 아닌 뷰를 사용하는 이유

대체로 사용자의 편의와 데이터베이스의 보안 때문입니다. 원본 테이블에 직접 접근하지 않아도 사용자가 임의의 뷰를 구성하여 별도의 이름을 붙이거나 접근 가능한 사람을 지정할 수 있습니다. 이렇게 하면 데이터베이스의 데이터를 안전하게 유지하면서 필요한 사용자에게 적절한 데이터를 제공할 수 있습니다. 또한 임의의 뷰 구성을 통해 자주 사용되는 복잡한 SQL 문을 매번 작성하지 않도록 할 수 있습니다. 이처럼 테이블을 대체하여 편리하게 사용하기 위한 것이 뷰입니다.

뷰(View)의 특징

  1. 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.

  2. 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.

  3. 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.

  4. 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.

뷰 정리

  1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다.

  2. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다.

  3. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다.

----- 뷰는 가상의 테이블 

-- 단순한 뷰 만들기
CREATE VIEW EMP_V1 (직원번호, 이름,, 이메일, 고용일, 직종)
AS
SELECT employee_id, first_name, last_name, email, hire_date, job_id
FROM employees;

SELECT * FROM emp_v1;
-- 뷰에 데이터 입력( 실제 테이블이 아니기 때문에 실제 테이블에 입력이 된다.!)
INSERT INTO emp_v1(직원번호, 이름,, 이메일, 고용일, 직종)
VALUES (333,'David','King','DKing',SYSDATE,'IT_PROG');

-- 복잡한 뷰 만들기!!
--원본 테이블의 열의 이름에 별칭을 붙임
-- 그룹함수를 쓴 뷰는 dml(작성,수정,삭제 불가)
CREATE OR REPLACE VIEW 부서별_직원_보고서
AS
    SELECT department_id 부서번호, COUNT(*) 직원수,
    Min(salary) 최저급여, MAX(salary) 최고급여,
    ROUND(AVG(salary)) 평균급여
    from employees
    GROUP BY department_id
    ORDER BY department_id;
    
--    90번 전용 부서 읽ㄱ ㅣ 전용 뷰
CREATE OR REPLACE VIEW EMP90_read (직원번호, 이름,, 이메일, 고용일, 직종)
AS
    SELECT employee_id , first_name,
           last_name, email, hire_date, job_id
    from employees where department_id = 90
    with read only;
    
 SELECT * FROM EMP90_READ;    
    
--    입력, 수정 ,삭제  DML 작업은 안됨
DELETE FROM EMP90_READ WHERE 직원번호 = 100;



-- 뷰삭제
DROP VIEW emp_v1;
DROP VIEW EMP90_READ; 
profile
HelloWorld에서 RealWorld로

0개의 댓글