Ở phần kiến thức hôm nay, mình tiếp tục chia sẻ về VIEW, là một khái niệm nâng cao hơn so với các bài trước đây. Và kiến thức này cũng hay được sử dụng trong khi làm dự án.
Nội dung
1. VIEW trong SQL là gì?
Là table ảo (virtual) dựa trên kết quả từ câu lệnh SQL SELECT. Và nó cũng có các dòng và cột nhưng là table thật. Vậy hãy cùng theo dõi tiếp bên dưới nó có gì khác với table thật hay không.
Khái niệm View
2. Mục đích sử dụng VIEW
Giúp thao tác nhanh với dữ liệu mà không cần viết lại câu lệnh SQL SELECT từ đầu. Vì nó cũng chứa các dòng và cột như table thật, nên chúng ta có thể thao tác như một table thông thường.
3. Hướng dẫn thao tác với VIEW trong SQL
3.1. Tạo VIEW
Cú pháp
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Lưu ý: Dữ liệu ở VIEW luôn được cập nhật theo dữ liệu mới nhất ở table chính.
Ví dụ
Tạo ra VIEW để liệt kê ra toàn bộ thông tin các bác sĩ và thông tin tài khoản. Với các bác sĩ chưa có tài khoản, hay tài khoản chưa có ai sở hữu thì cũng phải liệt kê ra.
CREATE VIEW view_full_join AS
SELECT d.doctor_id, d.last_name, a.account
FROM doctor d
LEFT JOIN account_system a ON d.doctor_id = a.doctor_id
UNION ALL
SELECT d.doctor_id, d.last_name, a.account
FROM doctor d
RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;
3.2. Thao tác với VIEW
Tiếp tục ví dụ bên trên, vì VIEW là một table ảo, nên bạn có thể dùng SELECT để truy vấn như một table thật:
SELECT *
FROM view_full_join;
Nhưng bạn hãy nhớ một số lưu ý khi muốn cập nhật dữ liệu (INSERT, UPDATE, DELETE) trên VIEW:
- VIEW không chứa GROUP BY, ORDER BY.
- Không chứa DISTINCT.
- Nên chứa cả các column NOT NULL.
- Không chứa sub query.
- VIEW chỉ nên được tạo từ 1 table.
3.3. Để cập nhật cấu trúc VIEW
Khi bạn muốn cập nhật cấu trúc VIEW, hãy sử dụng với cú pháp:
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
3.4. Xoá VIEW
Như là các khái niệm được tạo ra bởi CREATE, thì khi xoá chúng ta cũng sẽ sử dụng DROP như bên dưới:
DROP VIEW view_name;
Kết luận
Nếu trong dự án xuất hiện nhiều câu lệnh truy vấn phức tạp, thì hãy sử dụng VIEW để giải quyết vấn đề này. Ngoài ra, VIEW cũng có nhiều loại, các bạn hãy tìm hiểu thêm để linh hoạt trong cách sử dụng nhé.
0 Lời bình