SQL 기본 | DDL : 데이터 정의 언어 | VIEW
뷰(View)는 가상 테이블로 볼 수 있다. 테이블과의 차이점은 테이블에 데이터가 실제로 저장되어 있지만, 뷰는 테이블에 만들어진 구조에서 데이터가 실제로 저장되지 않는다.
CREATE VIEW
뷰를 생성하는 명령문은 다음과 같다.
CREATE VIEW "VIEW_NAME" AS "SQL문";
“SQL문"는 어떠한 SQL이라도 상관없다.
VIEW 생성
예를 들면, 다음과 같은 테이블이 있다고 하자.
customer 테이블
컬럼명 | 자료형 |
---|---|
first_name | char(50) |
last_name | char(50) |
address | char(50) |
city | char(50) |
country | char(25) |
birth_date | datetime |
이 테이블에서 first_name, last_name과 country 3개의 필드가 포함된 뷰를 만드는 경우 다음과 같이 입력한다.
CREATE VIEW v_customer
AS SELECT first_name, last_name, country
FROM customer;
그러면 v_customer라는 뷰가 생성된다.
v_customer 뷰
컬럼명 | 자료형 |
---|---|
first_name | char(50) |
last_name | char(50) |
country | char(25) |
테이블 결합하여 만든 VIEW
뷰를 사용하여 두 테이블을 조인할 수도 있다. 따라서 사용자는 두 개의 서로 다른 테이블을 결합하지 않아도, 뷰로 사용하여 필요한 정보를 직접 확인할 수 있다. 가령 다음과 같은 두 테이블이 있다고 하자.
store_information 테이블
store_name | sales | txn_date |
---|---|---|
Los Angeles | 1500 | Jan-05-2018 |
San Diego | 250 | Jan-07-2018 |
Los Angeles | 300 | Jan-08-2018 |
Boston | 700 | Jan-08-2018 |
Geography 테이블
region_name | store_name |
---|---|
East | Boston |
East | New York |
West | Los Angeles |
West | San Diego |
아래 명령으로 지역(Region)의 판매(Sales)가 포함된 뷰를 만들 수 있다.
CREATE VIEW v_region_sales
AS SELECT A1.region_name region, SUM(A2.sales) sales
FROM geography A1, store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name;
이것으로 v_region_sales라는 뷰가 생성되었다. 이 뷰에 다른 지역의 매출 데이터가 포함된다. 이 뷰에서 데이터를 검색하는 경우 다음과 같이 입력한다.
SELECT * FROM v_region_sales;
위 명령의 결과는 아래와 같다.
region | sales |
---|---|
east | 700 |
west | 2050 |
DROP VIEW
DROP VIEW 명령을 사용하여 기존 뷰를 삭제한다.
DROP VIEW "[데이터베이스명.]VIEW_NAME";
최종 수정 : 2021-08-27