본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
관계형 데이터베이스에서 기본 테이블로부터 파생하여 만든 가상의 테이블
  • 사용자에게 접근이 허용된 제한된 데이터만 보여주기 위해 구성
  • 저장장치 내에 물리적으로 존재하지 않지만 사용자 입장에선 동일하게 보여짐
  • 데이터 임시 열람, 보안적인 목적으로 제한된 범위 내 데이터 제공 등의 목적으로 사용될 수 있다.
  • 뷰는 삽입, 삭제, 갱신 연산에 제약사항이 따른다.
  • 뷰는 데이터 접근 제어로 보안을 제공한다.
  • 뷰는 물리적이 아닌 논리적으로 구현되는 테이블이다.
  • 뷰는 데이터의 논리적 독립성을 제공한다.
  • 뷰의 정의를 ALTER문으로 바꿀 수 있는지는 DBMS마다 다르다(아래 DBMS별 차이 참고).
  • 뷰 위에 또 다른 뷰를 정의할 수 있다.
  • 뷰 생성 시 사용되는 SELECT문에서 GROUP BY 구문은 사용 가능하다. ORDER BY 구문을 쓸 수 있는지는 DBMS마다 다르다(아래 DBMS별 차이 참고).

"뷰 정의에 ORDER BY를 쓸 수 없다", "뷰는 ALTER문으로 변경할 수 없다"는 정보처리기사 등 이론 시험에서 자주 나오는 설명이지만, 모든 DBMS에 맞는 말은 아니다.

구분 오라클 SQL Server
뷰 정의 SELECT의 ORDER BY 쓸 수 있다 TOP 절(또는 OFFSET 절)과 함께 쓸 때만 쓸 수 있다
ALTER VIEW로 정의(SELECT문) 변경 할 수 없다. CREATE OR REPLACE VIEW로 다시 정의한다. ALTER VIEW는 재컴파일(COMPILE)이나 제약조건 변경에 쓴다 할 수 있다. ALTER VIEW 뷰이름 AS SELECT ...
CREATE VIEW V_EMP AS
SELECT 사번, 이름, 급여 FROM EMP WHERE 부서 = 'IT'
ORDER BY 급여 DESC;            -- 오류 없이 만들어진다

SELECT * FROM V_EMP;          -- 박민수 6000, 김철수 5000 순서로 나온다

ALTER VIEW V_EMP AS SELECT 사번 FROM EMP;
-- ORA-00922: missing or invalid option

CREATE OR REPLACE VIEW V_EMP AS
SELECT 사번, 이름 FROM EMP ORDER BY 사번;   -- 정의는 이렇게 바꾼다
CREATE VIEW V_EMP AS
SELECT 사번, 이름, 급여 FROM EMP ORDER BY 급여 DESC;            -- 오류

CREATE VIEW V_EMP AS
SELECT TOP (3) 사번, 이름, 급여 FROM EMP ORDER BY 급여 DESC;    -- 가능

ALTER VIEW V_EMP AS
SELECT 사번, 이름 FROM EMP;                                    -- 정의 변경 가능
  • SQL Server에서 TOP과 함께 쓴 ORDER BY는 어떤 행을 고를지만 정한다. 뷰를 조회한 결과가 그 순서로 나온다는 보장은 없으며, 순서가 필요하면 뷰를 조회하는 쿼리에 ORDER BY를 쓴다.
  • 오라클에서도 결과 순서가 꼭 필요하면 뷰를 조회하는 바깥 쿼리에 ORDER BY를 쓰는 것이 안전하다.
  • 이론 시험(정보처리기사 등)의 "뷰 정의에 ORDER BY 불가, ALTER로 변경 불가"는 일반론으로 출제된다. 문제의 보기가 이 설명을 기준으로 하는지 확인한다.
  • SQL 개발자 시험처럼 오라클을 기준으로 하는 문제에서는 뷰 정의에 ORDER BY를 쓸 수 있고, 정의 변경은 CREATE OR REPLACE VIEW로 한다.
  • 뷰의 장점: 독립성(테이블 구조가 바뀌어도 뷰를 쓰는 응용은 그대로), 편리성(복잡한 질의를 단순하게), 보안성(보여 줄 칼럼·행만 공개)