VIEW trong SQL Server

VIEW trong SQL Server là gì?

Về cơ bản, VIEW là một bảng ảo không thực sự tồn tại trong SQL Server. Nó được tạo ra bởi truy vấn kết hợp 1 hoặc nhiều bảng.

Tạo VIEW trong SQL Server

Cú pháp

CREATE VIEW [ten_schema.]ten_view AS   [WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA}   SELECT bieu_thuc   FROM bang   [WHERE dieu_kien];

ten_schema

Đây là tên của schema (tạm dịch là lược đồ hay không gian tên) mà bảng đó thuộc về.

ten_view

Tên của VIEW muốn tạo.

ENCRYPTION

Mã hóa văn bản của lệnh ALTER VIEW trong sys.syscomments.

SCHEMABINDING

Đảm bảo các định nghĩa bảng không bị chỉnh sửa để không ảnh hưởng tới VIEW.

VIEW_METADATA

Đảm bảo SQL Server có siêu dữ liệu (metadata) của VIEW.

bieu_thuc

Cột hoặc giá trị tính toán muốn thêm vào VIEW.

bang

Bảng định nghĩa VIEW. Phải có ít nhất 1 bảng trong mệnh đề FROM.

WHERE dieu_kien

Tùy chọn. Điều kiện phải đáp ứng để bản ghi được hiển thị trong VIEW.

Ví dụ

CREATE VIEW sp_htk AS   SELECT sanpham.id_sanpham, sanpham.ten_sanpham, hangtonkho.chatluong   FROM sanpham   INNER JOIN hangtonkho   ON sanpham.id_sanpham = hangtonkho.id_sanpham   WHERE sanpham.id_sanpham >= 1000;

Lệnh CREATE VIEW nói trên sẽ tạo một bảng ảo dựa trên bộ kết quả của lệnh SELECT. VIEW này sẽ có tên sp_htk.

Giờ bạn có thể truy vấn VIEW như dưới đây.

SELECT *  FROM sp_htk;

Cập nhật VIEW

Bạn có thể chỉnh sửa VIEW trong SQL Server mà không cần xóa đi tạo mới bằng lệnh ALTER VIEW.

Cú pháp

ALTER VIEW [ten_schema.] ten_view AS   [WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}   SELECT bieu_thuc   FROM bang   WHERE dieu_kien;

Ví dụ

ALTER VIEW sp_htk AS   SELECT sanpham.ten_sanpham, hangtonkho.soluong   FROM sanpham   INNER JOIN hangtonkho   ON sanpham.id_sanpham = hangtonkho.id_sanpham   WHERE sanpham.id_sanpham >= 500   AND sanpham.id_sanpham <= 1000;

Ví dụ lệnh ALTER VIEW trên đây sẽ cập nhật VIEW có tên sp_htk mà không phải xóa đi. VIEW cần phải tồn tại trước đó thì mới thực hiện lệnh cập nhật được.

Xóa VIEW

Cú pháp

DROP VIEW ten_view;

ten_view

Tên của VIEW muốn xóa.

Ví dụ

DROP VIEW sp_htk;

Lệnh DROP VIEW này sẽ xóa VIEW có tên sp_htk trong SQL Server.