CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

Tìm hiểu về View trong SQL Server

Đăng lúc: 10:44 AM - 05/10/2023 bởi Charles Chung - 675

Trong SQL Server, View là câu lệnh truy vấn đã được viết sẵn và lưu bên trong cơ sở dữ liệu với một tên. Các bạn có thể tưởng tượng View giống như một bảng ảo mà nó có thể tổng hợp dữ liệu từ một hoặc nhiều bảng.

1. Ưu điểm của View

  • Hạn chế truy cập tới các Table cụ thể. Chỉ cho phép được xem qua View.
  • Hạn chế truy cập vào vào Column của Table. Khi truy cập thông qua View bạn không thể biết được tên Column mà View đó truy cập vào.
  • Liên kết các Column từ rất nhiều Table vào thành Table mới được thể hiện qua View.
  • Trình bày các thông tin tổng hợp (VD: sử dụng funtion như COUNT, SUM, ...)

2. Một số quy tắc trong View

  • Câu lệnh CREATE VIEW chỉ có thể bao gồm mệnh đề ORDER BY nếu như có từ khóa TOP được sử dụng.
  • Câu lệnh CREATE VIEW không thể bao gồm từ khóa INTO
  • Nội dung câu lệnh tạo VIEW chỉ gồm câu  lệnh SELECT
  • View không thể tạo trên các bảng tạm.
  • View không thể có full-text index

3. Cú pháp

CREATE VIEW <view_name>

AS

<select_statement>

 

Trong đó:

View_name là tên view

Select_statement là lệnh select định nghĩa trong view

4. Một số ví dụ (Tải file script database ở cuối bài để thực hành view)

  • Tạo View

-------Tạo view để đưa ra thông tin tồn kho của từng mặt hàng--------

create view vw_Inventory

as

select sp.storeid, p.productid, p.productname, sp.quantity, p.price

from product p inner join storeproduct sp on p.productid=sp.productid

  • Thực thi View

-------Thực thi view--------

select * from vw_Inventory

  • Chỉnh sửa View

-------Chỉnh sửa view--------

alter view vw_Inventory

as

select top 100 percent sp.storeid, p.productid, p.productname, sp.quantity, p.price

from product p inner join storeproduct sp on p.productid=sp.productid

order by p.price

  • Xóa View

-------Xóa view---------

Drop view vw_Inventory

  • Tạo view với tùy chọn SchemaBinding: không cho phép người dùng chỉnh sửa tên bảng và các cột dùng trong view của bảng cơ sở. Tên của các đối tượng được chỉ ra trong câu lệnh SELECT cần phải kèm cùng với tên của lược đồ.

-------Tùy chọn Schemabiding---------

create view vw_Inventory

with schemabinding

as

select top 100 percent sp.storeid, p.productid, p.productname, sp.quantity, p.price

from dbo.product p inner join dbo.storeproduct sp on p.productid=sp.productid

order by p.price

  • Tạo view với tùy chọn CheckOption: chỉ cho phép người dùng insert, delete, update dữ liệu vào bảng thông qua view mà thỏa mãn điều kiện where trong câu SELECT của view. Câu SELECT trong view phải lấy ra tất cả các cột từ 1 bảng ngoại trừ các cột null hoặc default.

-------Tạo view với tùy chọn CHECKOPTION---------

create view vw_ProductGreaterThan100k

as

select * from product where price>100000

with check option

go

--Lệnh thêm này sẽ báo lỗi vì giá 50000 không thỏa mãn điều kiện trong View--

insert into vw_ProductGreaterThan100k  values('P0002',N'Sản phẩm test',6,3,'test.jpg',50000,N'Chiếc',N'Hàng mới')

  • Xem nội dung view

--Xem lại câu lệnh tạo view

sp_helptext vw_ProductGreaterThan100k

  • Xem nội dung view: ngăn chặn người dùng xem được nội dung câu lệnh tạo view

--Tạo view với tùy chọn with encryption

create view vw_InventoryEncrypt

with encryption

as

select sp.storeid, p.productid, p.productname, sp.quantity, p.price from product p inner join storeproduct sp on p.productid=sp.productid

 

---Câu lệnh này sẽ không hiển thị được nội dung view---

sp_helptext vw_InventoryEncrypt

 

Tải file Script database để thực hành phần view

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ