반응형
뷰 (View)
- 하나 이상의 테이블에 저장된 데이터에 대한 특정 관점을 제공하는 가상 테이블
- 데이터 자체를 저장하지 않고 특정 쿼리를 기반으로 테이블에 저장된 데이터에 동적으로 액세스
- 사용자에 관점에 따라 데이터 조작을 간소화하며 사용자 지정 가능
- 원본이 되는 테이블에 직접 액세스 하지 않고 뷰를 통하므로 보안 메커니즘으로 사용
- 스키마가 변경된 경우에도 테이블에 저장된 데이터에 엑세스 할 수 있는 하위 호환 인터페이스 제공
- 이전 스키마에 의존하는 프로그램은 업데이트된 테이블에 액세스 시 중단
- 뷰를 사용하면 이전 테이블 구조를 에뮬레이트하여 이전 스키마로 뷰 작성
- 즉, 열이 추가되어도 상관없이 뷰는 출력된다는 말
구문
- view_name : 사용할 뷰의 이름
- column : 데이터를 조회할 컬럼명
- table_name : 데이터를 조회할 테이블명
- condition : where절에 들어갈 조건
CREATE VIEW view_name
AS
SELECT column1, column2, ...
FROM table_name
WHERE condition
사용 예시
select * from testTable
- 이름만 보여주는 뷰 생성
CREATE VIEW onlyNameView
AS
SELECT name FROM testTable
- 뷰 호출
select * from onlyNameView
분할 뷰 (Partitioned Views)
- 여러 테이블의 데이터를 하나로 뷰로 결합하는 것
구문
- UNION ALL
- 두 개 이상의 SELECT문의 결과를 단일 결과 집합으로 결합하는데 사용
- 각 SELECT문에서 모든 행을 검색하여 중복을 포함한 단일 결과 집합으로 결합
- 여러 테이블의 데이터를 단일 결과 집합으로 중복있이 결합할 때 유용
- 요약 : UNION ALL=중복포함 / UNION=중복제외
- WITH SCHEMABINDING
- 뷰 정의에 사용된 테이블의 기본 스키마에 바인딩
- 뷰를 먼저 삭제하지 않고는 기본 테이블의 구조를 변경 할 수 없음
- 기본 테이블의 구조 변경을 방지하여 무결성과 안정성을 보장
CREATE VIEW view_name
WITH SCHEMABINDING
AS
SELECT column1, column2, ...
FROM table_name
UNION ALL
SELECT column1, column2, ...
FROM table_name_2
UNION ALL
...
사용 예시
select * from Orders_East
select * from Orders_West
select * from Orders_South
select * from Orders_North
- 동서남북의 각 매출을 하나로 결합하는 뷰 생성
CREATE VIEW SalesByRegion
WITH SCHEMABINDING
AS
SELECT Region, SUM(Sales) AS TotalSales
FROM dbo.Orders_North
GROUP BY Region
UNION ALL
SELECT Region, SUM(Sales) AS TotalSales
FROM dbo.Orders_South
GROUP BY Region
UNION ALL
SELECT Region, SUM(Sales) AS TotalSales
FROM dbo.Orders_East
GROUP BY Region
UNION ALL
SELECT Region, SUM(Sales) AS TotalSales
FROM dbo.Orders_West
GROUP BY Region
- 결합된 분할 뷰 호출
select * from SalesByRegion
반응형