Bài viết giải thích cách tạo, cập nhật và xóa VIEW trong SQL Server với cú pháp và ví dụ.
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 một 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];
Tham số
ten_schema: Tên schema (lược đồ) mà bảng thuộc về.
ten_view: Tên VIEW muốn tạo.
ENCRYPTION: Mã hóa văn bản lệnh ALTER VIEW trong sys.syscomments.
SCHEMABINDING: Đảm bảo định nghĩa bảng không bị sửa đổi ảnh hưởng đến VIEW.
VIEW_METADATA: Đảm bảo SQL Server có 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 thỏa mãn để bản ghi 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 trên sẽ tạo một bảng ảo dựa trên tập kết quả của câu lệnh SELECT. VIEW này sẽ được đặt tên là sp_htk.
Bây giờ bạn có thể truy vấn VIEW như sau.
SELECT *
FROM sp_htk;
Cập nhật VIEW
Bạn có thể sửa đổi VIEW trong SQL Server mà không cần xóa và 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 sẽ cập nhật VIEW tên sp_htk mà không xóa. VIEW phải tồn tại trước khi thực thi lệnh cập nhật.
Xóa VIEW
Cú pháp
DROP VIEW ten_view;
Tham số
ten_view: Tên VIEW muốn xóa.
Ví dụ
DROP VIEW sp_htk;
Lệnh DROP VIEW này sẽ xóa VIEW tên sp_htk trong SQL Server.