수색…


CREATE VIEW

CREATE VIEW view_EmployeeInfo
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        HireDate  
    FROM Employee
GO

뷰의 행은 테이블과 매우 유사하게 선택할 수 있습니다.

SELECT FirstName
FROM view_EmployeeInfo

계산 된 열이있는 뷰를 만들 수도 있습니다. 계산 된 열을 추가하여 위의보기를 다음과 같이 수정할 수 있습니다.

CREATE VIEW view_EmployeeReport
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        Coalesce(FirstName,'') + ' ' + Coalesce(LastName,'') as FullName,
        HireDate  
    FROM Employee
GO

이보기 때 나타납니다 추가 열 추가 SELECT 그것에서 행을. 이 추가 열의 값은 Employee 테이블의 FirstNameLastName 필드에 종속되며 해당 필드가 업데이트 될 때 자동으로 비하인드 스토리를 업데이트합니다.

암호화로보기 만들기

CREATE VIEW view_EmployeeInfo
WITH ENCRYPTION
AS   
SELECT EmployeeID, FirstName, LastName, HireDate  
FROM Employee
GO

INNER JOIN으로 뷰 만들기

CREATE VIEW view_PersonEmployee
AS  
    SELECT P.LastName,
        P.FirstName,
        E.JobTitle
    FROM Employee AS E
    INNER JOIN Person AS P  
        ON P.BusinessEntityID = E.BusinessEntityID
GO

뷰는 조인을 사용하여 테이블, 테이블 함수 또는 다른 뷰와 같은 다양한 소스의 데이터를 선택할 수 있습니다. 이 예에서는 Person 테이블의 FirstName 및 LastName 열과 Employee 테이블의 JobTitle 열을 사용합니다.

이보기를 사용하여 데이터베이스의 관리자에 해당하는 모든 행을 볼 수 있습니다.

SELECT *
FROM view_PersonEmployee
WHERE JobTitle LIKE '%Manager%'

CREATE INDEXED VIEW

색인이있는보기를 작성하려면 WITH SCHEMABINDING 키워드를 사용하여보기를 작성해야합니다.

CREATE VIEW view_EmployeeInfo
WITH SCHEMABINDING
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        HireDate  
    FROM [dbo].Employee
GO

클러스터 된 인덱스 또는 클러스터되지 않은 인덱스를 이제 만들 수 있습니다.

CREATE UNIQUE CLUSTERED INDEX IX_view_EmployeeInfo
ON view_EmployeeInfo
(
     EmployeeID ASC
)

인덱싱 된 뷰에는 몇 가지 제한 사항이 있습니다.

  • 뷰 정의는 동일한 데이터베이스에있는 하나 이상의 테이블을 참조 할 수 있습니다.

  • 고유 한 클러스터 된 인덱스가 만들어지면 뷰에 대해 추가 비 클러스터형 인덱스를 만들 수 있습니다.

  • 삽입, 업데이트, 삭제 및 자르기를 포함하여 원본으로 사용하는 테이블의 데이터를 업데이트 할 수 있습니다.

  • 기본 테이블과 컬럼은 수정할 수 없습니다. 보기는 WITH SCHEMABINDING 옵션으로 작성됩니다.

  • COUNT, MIN, MAX, TOP, 외부 조인 또는 몇 개의 다른 키워드 또는 요소를 포함 할 수 없습니다.

인덱싱 된 뷰를 만드는 방법에 대한 자세한 내용은이 MSDN 문서를 참조하십시오.

그룹화 된보기

그룹화 된 VIEW는 GROUP BY 절이있는 쿼리를 기반으로합니다. 각 그룹은베이스에서 하나 이상의 행을 가질 수 있으므로이 행은 반드시 읽기 전용 뷰입니다. 이러한 VIEW에는 대개 하나 이상의 집계 함수가 있으며보고 용도로 사용됩니다. 또한 SQL의 약점을 해결하는 데 유용합니다. 각 주에서 가장 큰 판매량을 보여주는 VIEW를 고려하십시오. 쿼리는 간단합니다.

https://www.simple-talk.com/sql/t-sql-programming/sql-view-beyond-the-basics/

CREATE VIEW BigSales (state_code, sales_amt_total)
AS SELECT state_code, MAX(sales_amt)
     FROM Sales
    GROUP BY state_code;

유니언 에디션보기

UNION 또는 UNION ALL 연산을 기반으로 한 VIEW는 기본 테이블 중 하나의 한 행에 변경 사항을 매핑하는 단일 방법이 없기 때문에 읽기 전용입니다. UNION 연산자는 결과에서 중복 행을 제거합니다. UNION 및 UNION ALL 연산자는 행이 어느 테이블에서 왔는지 숨 깁니다. UNION [ALL]의 열에는 자체 이름이 없으므로 이러한 VIEW에는 a를 사용해야합니다. 이론적으로, 중복되지 않은 두 개의 테이블 중 UNION은 둘 다 자체적으로 중복 행을 포함하여 업데이트 할 수 있어야합니다.

https://www.simple-talk.com/sql/t-sql-programming/sql-view-beyond-the-basics/

CREATE VIEW DepTally2 (emp_nbr, dependent_cnt)
AS (SELECT emp_nbr, COUNT(*)
      FROM Dependents
     GROUP BY emp_nbr)
   UNION
   (SELECT emp_nbr, 0
      FROM Personnel AS P2
     WHERE NOT EXISTS 
          (SELECT *
             FROM Dependents AS D2
            WHERE D2.emp_nbr = P2.emp_nbr));


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow