- 뷰 : 테이블과 같은 부률의 데이터베이스 객체 중 하나
- FROM 구에 기술된 서브쿼리에 이름을 붙이고 데이터베이스 객체화하여 쓰기 쉽게 한 것을 뷰라고 함
1. 뷰
- 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것
- SELECT 명령 실행 시 테이블에 저장된 데이터를 결과값으로 반환, 따라서 뷰를 참조하면 정의된 SELECT 명령의 실행결과를 테이블처럼 사용 가능
* 뷰는 SELECT 명령을 기록하는 데이터베이스 객체!
- FROM 구에 서브쿼리 사용할 수 있음
SELECT * FROM (SELECT * FROM sample54) sq;
- 위 서브쿼리 부분을 '뷰 객체'로 만듬
SELECT * FROM sample_view_67;
- sample_view_67은 뷰 이름
- 뷰를 정의할 때는 이름과 SELECT 명령을 지정, 뷰를 만든 후에는 SELECT 명령에서 뷰의 이름을 지정하면 참조가능
* 뷰를 작성하는 것으로 복잡한 SELECT 명령을 간략하게 표현할 수 있음!
가상 테이블
- 뷰는 테이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미로 '가상 테이블'이라 불리기도함
- SELECT 명령으로 이루어지는 뷰는 테이블처럼 쓰거나 지울 수 있는 저장공간을 가지지 않음
- SELECT 명령에서만 사용하는 것 권장(INSERT, UPDATE, DELETE에서는 권장 X)
2. 뷰 작성과 삭제
- 데이터베이스 객체이므로 DDL로 작성하거나 삭제
뷰의 작성
CREATE VIEW 뷰명 AS SELECT 명령
CREATE VIEW sample_view_67 AS SELECT * FROM sample54;
SELECT * FROM sample_view_67;
뷰 작성하기
CREATE VIEW에서 열 지정하기
CREATE VIEW 뷰명 (열명1, 열명2, ...) AS SELECT 명령
CREATE VIEW sample_view_672(n, v, v2) AS
SELECT no, a, a*2 FROM sample54;
SELECT * FROM sample_view_672 WHERE n =1;
열을 지정해 뷰 작성하기
- 뷰의 열 지정을 생략한 경우 SELECT 명령의 SELECT 구에서 지정하는 열 정보가 수집되어 자동적으로 뷰의 열로 지정됨
- 열을 지정한 경우는 SELECT 명령의 SELECT 구에 지정한 열보다 우선
- SELECT 명령의 모든 열을 사용할 경우에는 열을 지정하지 않는 것이 나음
- 열 이외는 정의할 수 없음, 자료형이나 제약도 지정할 수 없음
뷰 삭제
DROP VIEW 뷰명
DROP VIEW sample_view_67;
뷰 삭제하기
3. 뷰의 약점
- 데이터베이스 객체로서 저장장치에 저장, 그러나 테이블과 달리 대량의 저장공간을 필요로 하지 않음
- 데이터베이스에 저장되는 것은 SELECT 명령뿐!
- 뷰를 참조하면 뷰에 등록되어 있는 SELECT 명령이 실행됨, 실행 결과는 일시적으로 보존, 뷰를 참조할 때마다 SELECT 명령이 실행됨
머티리얼라이즈드 뷰
- 뷰의 근원이 되는 테이블에 보관하는 데이터양이 많은 경우, 집계처리를 할 때도 뷰가 사용된다면 처리속도가 많이 떨어짐
- 뷰를 중첩해서 사용하는 경우에도 처리속도가 떨어짐
- 일반적으로 뷰는 데이터를 일시적으로 저장, 쿼리가 실행 종료될 때 함께 삭제됨,
머티리얼라이즈드 뷰는 데이터를 일시적으로 저장해 사용하는 것이 아니라 테이블처럼 저장장치에 저장해두고 사용
- 머티리얼라이즈드 뷰는 처음 참조된 데이터를 저장, 이후 다시 참조할 때 저장해두었던 데이터 그대로 사용
- 뷰에 지정된 테이블의 데이터가 변경된 경우는 SELECT 명령을 재실행하여 데이터를 다시 저장
- 뷰에 지정된 테이블의 데이터가 자주 변경되지 않는 경우는 머티리얼라이즈드 뷰를 사용하여 뷰의 약점 보완가능
- Oracle, DB2에서만 사용할 수 있는 데이터객체 / MySQL X
함수 테이블
- 뷰를 구성하는 SELECT 명령은 단독으로도 실행할 수 있어야함
'데이터분석 > SQL' 카테고리의 다른 글
SQL 첫걸음 - 테이블 결합(JOIN) (0) | 2025.03.07 |
---|---|
SQL 첫걸음 - 집합 연산 (0) | 2025.03.07 |
SQL 첫걸음 - 인덱스 구조 & 인덱스 작성과 삭제 (0) | 2025.03.07 |
SQL 첫걸음 - 제약 (0) | 2025.03.06 |
SQL 첫걸음 - 데이터베이스 객체 & 테이블 작성, 삭제, 변경 (0) | 2025.03.06 |