공든탑앱 열기

뷰

SQLD (SQL 개발자) · 서브쿼리와 집합 연산 · 약 9분

쉽게 말하면

뷰는 자주 쓰는 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테이블처럼 조회. 뷰 위에 또 뷰를 만들 수도 있다

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. 뷰(View)에 대한 설명으로 옳은 것은?

  1. 인덱스의 한 종류다
  2. 데이터를 따로 복사해 저장한다
  3. 한 번 만들면 원본 테이블이 바뀌어도 내용이 그대로다
  4. SELECT 문을 저장해 둔 가상 테이블이다
정답 보기

4번 SELECT 문을 저장해 둔 가상 테이블이다

뷰는 SELECT 문만 저장해 둔 가상 테이블이다. 조회할 때마다 원본 테이블에서 다시 읽으므로 원본이 바뀌면 뷰 결과도 바뀐다. 데이터를 따로 저장하지 않는다.

Q2. 뷰의 장점이 아닌 것은?

  1. 편리성
  2. 독립성
  3. 저장 공간 절약을 위한 데이터 압축
  4. 보안성
정답 보기

3번 저장 공간 절약을 위한 데이터 압축

뷰의 장점은 독립성·편리성·보안성. 데이터를 압축하는 기능은 없다.

Q3. 급여 열을 숨기고 이름과 부서만 보이게 하려 할 때 알맞은 방법은?

  1. 인덱스를 만든다
  2. 테이블을 복사한다
  3. 급여 열을 지운다
  4. 이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다
정답 보기

4번 이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다

이름과 부서만 SELECT 하는 뷰를 만들어 그 뷰에만 권한을 준다. 뷰는 필요한 열만 보여 줘 보안에 쓴다. 급여 열을 지우면 데이터를 잃는다.

Q4. 뷰에 대한 설명으로 틀린 것은?

  1. ALTER VIEW로 뷰의 SELECT 정의를 바꿀 수 있다
  2. 원본 테이블이 바뀌면 뷰 조회 결과도 바뀐다
  3. DROP VIEW로 뷰를 지워도 원본 데이터는 남는다
  4. 뷰 위에 다른 뷰를 만들 수 있다
정답 보기

1번 ALTER VIEW로 뷰의 SELECT 정의를 바꿀 수 있다

뷰 정의를 바꾸려면 다시 만들거나 CREATE OR REPLACE VIEW를 쓴다.

Q5. 인라인 뷰는 SQL의 어디에 쓰나?

  1. FROM 절
  2. ORDER BY 절
  3. SELECT 절
  4. WHERE 절
정답 보기

1번 FROM 절

FROM 절에서 그 자리에서만 쓰는 이름 없는 뷰다.

Q6. 뷰를 DROP 하면 기반 테이블의 데이터는?

  1. 함께 지워진다
  2. 잠긴다
  3. NULL로 바뀐다
  4. 그대로 남는다
정답 보기

4번 그대로 남는다

뷰는 SELECT 문을 저장한 것뿐이라 지워도 테이블 데이터는 그대로다.

헷갈리기 쉬운 O·X

뷰를 만들면 원본 테이블의 데이터가 뷰로 복사된다.

정답 보기

X SELECT 문만 저장된다. 조회할 때 원본을 읽는다.

DROP VIEW를 하면 뷰만 사라지고 원본 테이블은 그대로다.

정답 보기

O 뷰는 정의만 갖고 있기 때문이다.

인라인 뷰는 CREATE VIEW로 미리 만들어 두어야 쓸 수 있다.

정답 보기

X FROM 절에 바로 쓰는 일회용 서브쿼리다.

함께 보면 좋은 개념