Tạo và dạng xem truy vấn

Đã hoàn thành

Dạng xem là các truy vấn đã lưu mà bạn có thể tạo trong cơ sở dữ liệu của mình. Một dạng xem duy nhất có thể tham chiếu đến một hoặc nhiều bảng. Và giống như bảng, dạng xem bao gồm các hàng và cột dữ liệu. Bạn có thể sử dụng các dạng xem làm nguồn cho truy vấn của mình theo cách rất giống với bảng. Tuy nhiên, các dạng xem không liên tục lưu trữ dữ liệu; định nghĩa của dạng xem của bạn được giải nén khi chạy và các đối tượng nguồn được truy vấn.

Sự giống nhau rõ ràng giữa bảng và dạng xem mang lại lợi ích quan trọng. Các ứng dụng của bạn có thể được viết để sử dụng các dạng xem thay vì các bảng cơ sở, bảo vệ ứng dụng thực hiện thay đổi đối với bảng. Điều này cung cấp cho bạn một lớp bảo mật bổ sung cho dữ liệu của bạn.

Miễn là dạng xem tiếp tục trình bày cùng một cấu trúc cho ứng dụng gọi điện, ứng dụng cũng sẽ nhận được kết quả nhất quán. Bằng cách này, các dạng xem có thể được coi là một giao diện lập trình ứng dụng (API) đối với một cơ sở dữ liệu cho mục đích truy xuất dữ liệu.

Ghi

Các dạng xem phải được tạo bởi người phát triển cơ sở dữ liệu hoặc người quản trị với quyền thích hợp trong cơ sở dữ liệu.

Tạo dạng xem

Để tạo dạng xem, bạn sử dụng câu lệnh CREATE VIEW để đặt tên và lưu trữ một câu lệnh SELECT duy nhất. Bạn sẽ tạo dạng xem bằng cú pháp sau đây:

CREATE VIEW <schema_name.view_name> [<column_alias_list>] 
[WITH <view_options>]
AS select_statement;

Ghi

Mệnh đề ORDER BY không được phép trong định nghĩa dạng xem trừ khi dạng xem sử dụng thành phần TOP, OFFSET/FETCH hoặc FOR XML.

Ví dụ: để tạo dạng xem có tên Sales.CustOrders dựa trên câu lệnh SELECT tùy chỉnh bao gồm nhiều bảng, bạn có thể viết truy vấn sau đây:

CREATE VIEW Sales.CustOrders
AS
SELECT
  O.custid, 
  DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
  SUM(OD.qty) AS qty
FROM Sales.Orders AS O
  JOIN Sales.OrderDetails AS OD
    ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);

Lưu ý rằng hầu hết các mã trong ví dụ đều bao gồm câu lệnh SELECT của bạn. Các câu lệnh SELECT bên trong định nghĩa dạng xem có thể phức tạp hoặc đơn giản như bạn muốn.

Truy vấn dạng xem

Để truy vấn dạng xem và truy xuất kết quả từ dạng xem đó, hãy tham khảo mục đó trong mệnh đề FROM của câu lệnh SELECT, khi bạn tham chiếu đến bảng. Ví dụ: để trả về ID khách hàng, tháng đặt hàng và số lượng mặt hàng từ mỗi đơn hàng trong dạng xem Sales.CustOrders , bạn có thể chạy truy vấn sau:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;