VIEW trong MySQL là một bảng ảo được tạo từ kết quả của một câu lệnh SELECT. Bạn có thể truy vấn VIEW như một bảng thường, bao gồm việc sử dụng mệnh đề WHERE để lọc dữ liệu.
Ví dụ minh họa
Tạo bảng sinh viên:
mysql> CREATE TABLE DemoTable1432 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentBranchName VARCHAR(20)
);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable1432 (StudentName, StudentBranchName) VALUES ('Chris', 'CS');
mysql> INSERT INTO DemoTable1432 (StudentName, StudentBranchName) VALUES ('David', 'CE');
mysql> INSERT INTO DemoTable1432 (StudentName, StudentBranchName) VALUES ('Mike', 'ME');
Tạo VIEW:
mysql> CREATE VIEW DemoTable1432_View AS
SELECT * FROM DemoTable1432;
Truy vấn VIEW với WHERE
Lọc sinh viên ngành CS:
mysql> SELECT * FROM DemoTable1432_View
WHERE StudentBranchName = 'CS';
Kết quả:
+-----------+-------------+-------------------+ | StudentId | StudentName | StudentBranchName | +-----------+-------------+-------------------+ | 1 | Chris | CS | +-----------+-------------+-------------------+
Lợi ích của VIEW
- Đơn giản hóa truy vấn phức tạp: Ẩn logic JOIN, WHERE phức tạp bên trong VIEW.
- Bảo mật: Chỉ công khai các cột cần thiết, ẩn cột nhạy cảm.
- Tái sử dụng: Viết một lần, dùng nhiều nơi.
- Dễ bảo trì: Thay đổi logic tại VIEW, không cần sửa ứng dụng.
Lưu ý
- VIEW không lưu trữ dữ liệu vật lý (trừ khi là MATERIALIZED VIEW - MySQL không hỗ trợ bản gốc).
- Mệnh đề
WHEREtrên VIEW sẽ được MySQL tối ưu hóa kết hợp với định nghĩa VIEW. - Một số VIEW không thể cập nhật (UPDATE/INSERT/DELETE) nếu chứa: GROUP BY, DISTINCT, hàm tập hợp, JOIN phức tạp, subquery trong SELECT.