MSSQL - View - 뷰의 개념과 사용 방법, 분할 뷰 사용법

반응형

 

뷰 (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

반응형