Cách sử dụng VIEW trong SQL Server

Combo 8 khóa học lập trình FullStack cực rẻ

Đây là gói combo được freetuts tạo ra nhằm giúp các bạn mua 8 khóa học tại FEDU với chi phí cực rẻ, nói chung là rẻ nhất :)

Xem tại đây

Combo 5 khóa học lập trình Frontend cực rẻ

Đây là gói combo được freetuts tạo ra nhằm giúp các bạn mua 5 khóa học tại FEDU với chi phí cực rẻ, nói chung là rẻ nhất :)

Xem tại đây

Trong bài này bạn sẽ được học về view và các thao tác quản lý view như: tạo view, xóa view, cập nhật dữ liệu cho view, và cuối cùng là các kiến thức liên quan như cơ chế hoạt động của view.

1. View là gì?

Đặt vấn đề: Giả sử bạn là một nhà quản trị database (DBA) và bạn có nhiệm vụ mỗi cuối ngày sẽ lấy danh sách đơn hàng của hôm đó gửi lên cho leader.

Như vậy mỗi ngày bạn sẽ phải viết một câu truy vấn để lấy dữ liệu, hoặc bạn sẽ phải lưu câu SQL đó vào một file txt rồi mỗi khi cần thì copy và execute.

Giải pháp trên liệu có hay? Rất may là SQL Server cho bạn lưu trữ câu SQL thông qua view, nghĩa là bạn sẽ tạo một view dựa vào cấu trúc câu SQL đó và sau này mỗi khi cần lấy đơn hàng thì chỉ việc lấy trong view là được.

View cũng là một table nhưng chức năng của nó là chỉ để đọc, nên bạn không thể thực hiện các thao tác như insert, update hay delete trên view.

2. Tạo View trong SQL Server

Giả sử ta có hai bảng products và brands, bây giờ mình cần lấy danh sách tất cả sản phẩm kèm theo thương hiệu tương ứng của mỗi sản phẩm thì sẽ viết câu truy vấn như sau:

SELECT
    product_name, 
    brand_name, 
    list_price
FROM
    production.products p
INNER JOIN production.brands b 
        ON b.brand_id = p.brand_id;

Và để tạo view cho câu SQL này thì ta viết như sau:

CREATE VIEW sales.product_info
AS
SELECT
    product_name, 
    brand_name, 
    list_price
FROM
    production.products p
INNER JOIN production.brands b 
        ON b.brand_id = p.brand_id;

Trong đó product_info là tên của view và sales là tên của schema.

Sau này khi muốn lấy danh sách sản phẩm và thương hiệu của nó thì mình chỉ cần chạy câu SQL sau:

SELECT * FROM sales.product_info;

Rất đơn giản phải không các bạn, không cần phải nhớ câu SQL dài dòng trên kia.

Mỗi một view có thể lưu trữ dữ liệu của nhiều table khác nhau vì nó là kết quả của câu truy vấn SELECT, đây chính là ưu điểm khiến view trở nên mạnh mẽ.

3. Các tính năng của View

Nói chung khi bạn sử dụng View thì sẽ có những lợi thế sau:

Về bảo mật

Bạn có thể hạn chế người dùng truy cập trực tiếp vào table, thay vào đó cho họ truy cập thông qua view nên sẽ an toàn hơn. Tại sao? Tại vì view chỉ là một khung nhìn nên chỉ cho phép đọc được thông tin tồn trại trong view, không được xem thêm thông tin hoặc thay đổi dữ liệu.

Ví dụ bạn có thể cho phép người dùng truy cập tên khách hàng, điện thoại, email thông qua chế độ xem nhưng hạn chế họ truy cập vào tài khoản ngân hàng và các thông tin nhạy cảm khác.

Đơn giản hóa

Khi viết câu truy vấn với nhiều bảng thì sẽ rất phức tạp, ban phải test nhiều thì mới chắc chắn là ra kết quả đúng, cũng có khi chưa chắc đúng. Tuy nhiên nếu kết hợp view thì bạn phân ra thành nhiều phân đoạn và mỗi view là một phân đoạn, sao đó thực hiện các phép truy vấn trên view thì sẽ dễ hiểu hơn nhiều.

Tính nhất quán

Đôi khi bạn cần viết một công thức phức tạp và được sử dụng trong nhiều câu truy vấn, lúc này bạn sẽ phải viết đi viết lại nhiều lần.

Nhưng nếu đưa công thức đó vào một view, sau đó các câu truy vấn kia tham chiếu từ view thì sẽ tiện lợi và nhất quán, sau này chỉnh sửa công thức thì chỉ cần sửa ở view.

Khóa học nên xem

Nguồn: freetuts.net