Chào mừng bạn quay trở lại với trong chuỗi series SQL Nâng Cao cùng MCNA Technology School!
Trong các hệ thống doanh nghiệp, việc chia sẻ toàn bộ bảng dữ liệu gốc cho bộ phận nhân sự hay phòng tiếp thị thường ẩn chứa nhiều rủi ro bảo mật thông tin (như lộ số điện thoại, mật khẩu, thông tin lương thưởng). Làm thế nào để chỉ cho phép họ khai thác đúng các cột dữ liệu cần thiết mà không cho chạm vào bảng gốc? VIEW trong SQL chính là giải pháp hoàn hảo.
1. VIEW Trong SQL Là Gì?
VIEW (Bảng ảo) là một tập hợp kết quả của một câu truy vấn SQL được lưu dưới dạng một đối tượng trong Cơ sở dữ liệu.
Về mặt bản chất:
-
VIEW không lưu trữ dữ liệu thực tế (trừ trường hợp Materialized View).
-
Mỗi khi bạn gọi VIEW, hệ thống sẽ tự động thực thi câu truy vấn
SELECTđược định nghĩa bên trong nó để lấy dữ liệu mới nhất từ các bảng gốc.
2. Tại Sao Nên Sử Dụng VIEW Trong Thực Tế?
-
Bảo mật & Phân quyền dữ liệu: Giấu đi các cột thông tin nhạy cảm (như
MatKhau,SoCMND,Luong) và chỉ hiển thị các cột được phép cho người dùng cuối. -
Đơn giản hóa truy vấn phức tạp: Đóng gói các câu lệnh
JOIN4-5 bảng rắc rối lại thành 1 bảng ảo đơn giản. -
Tái sử dụng code: Viết cấu trúc báo cáo một lần và truy vấn lại nhiều lần từ các ứng dụng khác nhau.
-
Đảm bảo tính đồng nhất: Giúp tất cả các phòng ban trong công ty cùng khai thác một chuẩn công thức báo cáo duy nhất.
3. Cú Pháp Tạo, Sử Dụng Và Xóa VIEW
3.1. Cú pháp tạo VIEW (CREATE VIEW)
SQL
CREATE VIEW Ten_View AS
SELECT cột_1, cột_2
FROM bảng_gốc
WHERE điều_kiện;
3.2. Truy vấn từ VIEW (Dùng như một bảng bình thường)
SQL
SELECT * FROM Ten_View;
3.3. Cập nhật hoặc Xóa VIEW
SQL
-- Cập nhật cấu trúc View
ALTER VIEW Ten_View AS
SELECT cột_1, cột_2, cột_3
FROM bảng_gốc;
-- Xóa View
DROP VIEW Ten_View;
4. Ví Dụ Thực Tế: Phân Quyền Báo Cáo Tại MCNA
Giả sử bảng HocVien chứa các thông tin: MaHV, HoTen, SoDienThoai, Email, HocPhiDaNop. MCNA muốn tạo một bảng ảo cho bộ phận chăm sóc khách hàng khai thác mà không được xem thông tin HocPhiDaNop.
SQL
-- 1. Tạo View chỉ chứa thông tin liên hệ
CREATE VIEW vw_DanhSachLienHe AS
SELECT MaHV, HoTen, SoDienThoai, Email
FROM HocVien;
-- 2. Bộ phận CSKH chỉ cần truy vấn qua View
SELECT * FROM vw_DanhSachLienHe
WHERE HoTen LIKE N'Nguyễn%';
🔒 BẢO MẬT & CHUẨN HÓA DỮ LIỆU CẤP DOANH NGHIỆP
Thiết kế VIEW không chỉ dừng lại ở việc ẩn cột dữ liệu, mà còn phải đảm bảo khả năng tối ưu hiệu năng (Indexing on Views/Materialized Views) khi hệ thống chịu tải hàng triệu lượt gọi mỗi ngày.
🚀 Tham gia Khóa học SQL Nâng Cao & Database Security tại MCNA Technology School:
Chuẩn hóa hệ thống: Học cách thiết kế kiến trúc phân quyền dữ liệu đa tầng cho doanh nghiệp.
Thực hành bài toán lớn: Đóng gói các báo cáo BI (Business Intelligence) phức tạp thành hệ thống VIEW tối ưu.
Đội ngũ chuyên gia: Được trực tiếp giảng dạy bởi các Senior Data Engineer & Data Architect.
👉 [ĐĂNG KÝ NHẬN TƯ VẤN LỘ TRÌNH VÀ HỌC THỬ MIỄN PHÍ] (Điền link đăng ký)
5. Bài Tập Thực Hành SQL Nâng Cao (Bài 5)
Hãy áp dụng kiến thức về VIEW trong SQL để giải bài tập tạo báo cáo dưới đây:
Đề bài: Cho bảng
NhanVien(MaNV,HoTen,PhongBan,Luong,TrangThai).
Viết câu lệnh tạo một VIEW tên là
vw_NhanVien_KyThuathiển thịMaNV,HoTen,Luongcủa những nhân viên thuộc phòng'Kỹ thuật'và cóTrangThai = 'Đang làm việc'.Viết câu lệnh
SELECTđể lọc ra các nhân viên có mức lương trên 15,000,000 từ VIEWvw_NhanVien_KyThuatvừa tạo.
SQL
-- 1. Tạo View dành riêng cho Phòng Kỹ thuật
CREATE VIEW vw_NhanVien_KyThuat AS
SELECT MaNV, HoTen, Luong
FROM NhanVien
WHERE PhongBan = N'Kỹ thuật'
AND TrangThai = N'Đang làm việc';
-- 2. Truy vấn lọc lương > 15,000,000 từ View
SELECT *
FROM vw_NhanVien_KyThuat
WHERE Luong > 15000000;

