Don't forget to smile
[혼자 공부하는 SQL] Chapter 5-3. 가상의 테이블: 뷰 본문
뷰(view) : 데이터베이스 개체의 일종으로 테이블처럼 데이터를 지니지는 않았지만 SELECT 문으로 이루어져 접근 시 실행
바탕화면의 바로가기 아이콘과 비슷한 개념
단순 뷰 : 하나의 테이블과 연관된 뷰
복합 뷰 : 2개 이상의 테이블과 연관된 뷰
<뷰의 개념>
CREATE VIEW 뷰_이름
AS
SELECT 문;

1) CREATE VIEW 명령을 통해 mem_id, mem_name, addr을 출력하는 SELECT 문을 뷰로 생성
뷰는 일반적으로 이름으로 구분할 수 있게 이름 앞에 v를 삽입

2) 뷰는 가상의 테이블이기 때문에 출력 역시 테이블과 동일하게 SELECT 문을 사용

3) 마찬가지로 테이블처럼 WHERE 문을 사용한 조건식 삽입도 가능
이처럼 뷰는 가상의 테이블 역할을 하기 때문에 보안성에 도움을 주며
복잡한 SQL을 뷰로 만들어 단순화할 수 있기 때문에 테이블을 대신하여 널리 사용됨
<뷰의 실제 작동>

1) 뷰 생성 시 AS를 사용하여 별칭 사용 가능
단, 뷰를 조회할 때 열 이름에 공백이 있을 경우 반드시 백틱(`)으로 묶어줘야 함

2) ALTER VIEW 명령을 통해 뷰의 수정이 가능
이 때 열 이름에 한글 역시 사용이 가능하지만, 일반적으로 오류 발생 가능성 때문에 잘 사용하지 않음

3) DROP VIEW 명령을 통해 뷰의 삭제가 가능

4) DESCRIBE 문으로 뷰의 정보 확인이 가능
이 때 CREATE OR REPLACE 명령은 뷰가 기존에 존재하더라도 덮어쓰기를 통해 오류를 발생시키지 않음

5) SHOW CREATE VIEW 명령을 통해 뷰의 소스 코드 확인이 가능


6) 뷰를 통한 데이터의 수정 또는 입력 역시 가능
그러나 위와 같이 테이블에 NOT NULL로 지정된 열이 존재할 경우 뷰를 통해서 데이터를 입력할 방법이 없음
이 경우 뷰를 재정의하거나 member 테이블의 NOT NULL 속성을 교체해야 함
단, 이는 단순 뷰에서만 가능하며 복합 뷰는 테이블에 데이터 입력/수정/삭제가 불가능

7) 위 코드처럼 뷰의 조건과 입력 데이터가 상반될 경우 문제가 발생
문법 오류가 없으므로 입력 자체는 수행되지만, 뷰의 조건에 맞지 않으므로 데이터가 출력되지 않음

8) 이럴 떄는 WITH CHECK OPTION 예약어를 설정하면 뷰의 조건과 맞지 않는 데이터의 입력을 방지


9) 뷰가 참조하는 테이블을 삭제할 경우, 참조하는 테이블이 없기 때문에 뷰 조회가 불가능
뷰 조회 불가 시 CHECK TABLE 문으로 뷰의 상태 확인이 가능하지만 참조 테이블이 없으므로 오류가 발생
'SQL' 카테고리의 다른 글
| [혼자 공부하는 SQL] Chapter 6-2. 인덱스의 내부 작동 (0) | 2022.12.09 |
|---|---|
| [혼자 공부하는 SQL] Chapter 6-1. 인덱스 개념을 파악하자 (0) | 2022.12.07 |
| [혼자 공부하는 SQL] Chapter 5-2. 제약조건으로 테이블을 견고하게 (2) | 2022.12.01 |
| [혼자 공부하는 SQL] Chapter 5-1. 테이블 만들기 (1) | 2022.11.30 |
| [혼자 공부하는 SQL] Chapter 4-3. SQL 프로그래밍 (0) | 2022.11.29 |