뷰
쉽게 말하면
뷰는 자주 쓰는 SELECT 문에 이름을 붙여 저장해 둔 거예요. 표처럼 조회할 수 있지만 데이터를 따로 갖고 있지는 않아요. 열 때마다 저장된 SELECT를 다시 실행해서 원래 표의 최신 내용을 보여 줘요. 사진이 아니라 즐겨찾기한 검색 조건에 가까워요.
시험용 정의
뷰(View)는 SELECT 문에 이름을 붙여 저장해 둔 가상 테이블이다. CREATE VIEW 이름 AS SELECT …로 만들고, 테이블처럼 SELECT * FROM 뷰로 조회한다. 실제 데이터는 원본 테이블에만 있고, 뷰는 조회할 때마다 저장된 SELECT를 실행한다. FROM 절의 인라인 뷰는 이름 없이 그 자리에서만 쓰는 일회용 뷰다.
비유로 이해하기
즐겨찾기한 검색 조건이다. "20번 부서 사원, 이름과 급여만"을 저장해 두면 매번 조건을 다시 쓰지 않아도 되고, 사원이 늘면 결과에도 바로 반영된다. 검색 결과를 캡처해 둔 사진이 아니다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 가상 테이블 | 실제 데이터를 갖지 않고 정의만 가진 테이블. 조회할 때 내용이 만들어진다 |
| 인라인 뷰 | FROM 절에 쓴 서브쿼리. SQL 문이 끝나면 사라진다 |
| 독립성 | 원본 테이블 구조가 바뀌어도 뷰 정의만 고치면 응용 프로그램은 그대로 쓸 수 있는 성질 |
뷰의 장단점
| 구분 | 내용 |
|---|---|
| 독립성 | 테이블 구조가 바뀌어도 뷰만 고치면 뷰를 쓰는 프로그램은 바꾸지 않아도 된다 |
| 편리성 | 복잡한 조인·집계를 뷰로 만들어 두면 간단한 SELECT로 쓸 수 있다 |
| 보안성 | 보여 주고 싶은 열·행만 뷰로 만들고 뷰에만 권한을 주면 급여 같은 민감한 열을 숨길 수 있다 |
| 단점 | 뷰 자체에 인덱스를 만들 수 없다(일반 뷰). 정의를 바꾸려면 다시 만들어야 한다(ALTER VIEW로 내용 변경 불가, CREATE OR REPLACE). 조인·집계 뷰는 INSERT·UPDATE·DELETE에 제약이 있다 |
뷰 명령
| 명령 | 뜻 |
|---|---|
| CREATE VIEW v AS SELECT … | 뷰 만들기 |
| CREATE OR REPLACE VIEW v AS … | 있으면 바꾸고, 없으면 만들기 |
| DROP VIEW v | 뷰 지우기 (원본 데이터는 그대로) |
| SELECT … FROM v | 테이블처럼 조회. 뷰 위에 또 뷰를 만들 수도 있다 |
시험에 이렇게 나와요
- 뷰는 SELECT 문을 저장한 가상 테이블, 데이터를 따로 저장하지 않음
- 장점: 독립성·편리성·보안성
- 단점: 독자적 인덱스 불가, 정의 변경 불가(재생성), 데이터 변경 제약
- 뷰와 인라인 뷰의 차이
출제 범위·공식 안내 기반
확인 문제
Q1. 뷰(View)에 대한 설명으로 옳은 것은?
- 인덱스의 한 종류다
- 데이터를 따로 복사해 저장한다
- 한 번 만들면 원본 테이블이 바뀌어도 내용이 그대로다
- SELECT 문을 저장해 둔 가상 테이블이다
정답 보기
4번 SELECT 문을 저장해 둔 가상 테이블이다
뷰는 SELECT 문만 저장해 둔 가상 테이블이다. 조회할 때마다 원본 테이블에서 다시 읽으므로 원본이 바뀌면 뷰 결과도 바뀐다. 데이터를 따로 저장하지 않는다.
Q2. 뷰의 장점이 아닌 것은?
- 편리성
- 독립성
- 저장 공간 절약을 위한 데이터 압축
- 보안성
정답 보기
3번 저장 공간 절약을 위한 데이터 압축
뷰의 장점은 독립성·편리성·보안성. 데이터를 압축하는 기능은 없다.
Q3. 급여 열을 숨기고 이름과 부서만 보이게 하려 할 때 알맞은 방법은?
- 인덱스를 만든다
- 테이블을 복사한다
- 급여 열을 지운다
- 이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다
정답 보기
4번 이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다
이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다. 뷰는 필요한 열만 보여 줘 보안에 쓴다. 급여 열을 지우면 데이터를 잃는다.
Q4. 뷰에 대한 설명으로 틀린 것은?
- ALTER VIEW로 뷰의 SELECT 정의를 바꿀 수 있다
- 원본 테이블이 바뀌면 뷰 조회 결과도 바뀐다
- DROP VIEW로 뷰를 지워도 원본 데이터는 남는다
- 뷰 위에 다른 뷰를 만들 수 있다
정답 보기
1번 ALTER VIEW로 뷰의 SELECT 정의를 바꿀 수 있다
뷰 정의를 바꾸려면 다시 만들거나 CREATE OR REPLACE VIEW를 쓴다.
Q5. 인라인 뷰는 SQL의 어디에 쓰나?
- FROM 절
- ORDER BY 절
- SELECT 절
- WHERE 절
정답 보기
1번 FROM 절
FROM 절에서 그 자리에서만 쓰는 이름 없는 뷰다.
Q6. 뷰를 DROP 하면 기반 테이블의 데이터는?
- 함께 지워진다
- 잠긴다
- NULL로 바뀐다
- 그대로 남는다
정답 보기
4번 그대로 남는다
뷰는 SELECT 문을 저장한 것뿐이라 지워도 테이블 데이터는 그대로다.
헷갈리기 쉬운 O·X
뷰를 만들면 원본 테이블의 데이터가 뷰로 복사된다.
정답 보기
X SELECT 문만 저장된다. 조회할 때 원본을 읽는다.
DROP VIEW를 하면 뷰만 사라지고 원본 테이블은 그대로다.
정답 보기
O 뷰는 정의만 갖고 있기 때문이다.
인라인 뷰는 CREATE VIEW로 미리 만들어 두어야 쓸 수 있다.
정답 보기
X FROM 절에 바로 쓰는 일회용 서브쿼리다.