Khung nhìn VIEW trong SQL

Trong SQL, Một cái nhìn Nó là một bảng ảo trong cơ sở dữ liệu và nội dung của nó được xác định bởi một câu lệnh SQL nhất định. VIEW bao gồm các hàng và cột, giống như một bảng thực. Các trường trong dạng xem là các trường từ một hoặc nhiều bảng thực tế trong cơ sở dữ liệu. Sự khác biệt giữa dạng xem VIEW và bảng là VIEW không được coi là cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ liệu. Trên thực tế, dữ liệu quan sát trong VIEW được truy xuất từ ​​bảng thông qua các câu lệnh truy vấn dữ liệu, được sử dụng để hạn chế quyền truy cập cơ sở dữ liệu hoặc ẩn dữ liệu phức tạp. Và các ví dụ cụ thể để hình dung rõ hơn và nắm vững các lệnh.

Tạo chế độ XEM trong SQL

Chế độ xem đã tạo Tạo câu lệnh chế độ xem. CHẾ ĐỘ XEM có thể được tạo từ một bảng, nhiều bảng hoặc các CHẾ ĐỘ XEM khác. Cú pháp cơ bản của lệnh SQL CREATE VIEW như sau:

CREATE VIEW ten_view AS
SELECT cot1, cot2.....
FROM ten_bang
WHERE [dieu_kien];

Bạn có thể thêm nhiều bảng trong một câu lệnh SELECT, tương tự như việc sử dụng chúng trong một truy vấn SQL SELECT thông thường.

Ví dụ về chế độ xem SQL

Giả sử bảng NHANVIEN có các bản ghi sau:

 +----+----------+-----+-----------+----------+
| ID | TEN      |TUOI | DIACHI    | LUONG    |
+----+----------+-----+-----------+----------+
|  1 | Thanh    |  32 | Haiphong  |  2000.00 |
|  2 | Loan     |  25 | Hanoi     |  1500.00 |
|  3 | Nga      |  23 | Hanam     |  2000.00 |
|  4 | Manh     |  25 | Hue       |  6500.00 |
|  5 | Huy      |  27 | Hatinh    |  8500.00 |
|  6 | Cao      |  22 | HCM       |  4500.00 |
|  7 | Lam      |  24 | Hanoi     | 10000.00 |
+----+----------+-----+-----------+----------+

Sau đây là ví dụ về cách tạo XEM từ bảng NHANVIEN. XEM này được sử dụng để lấy tên và tuổi từ bảng NHANVIEN.

SQL > CREATE VIEW NHANVIEN_VIEW AS
SELECT ten, tuoi
FROM NHANVIEN;

Bây giờ bạn có thể truy vấn NHANVIEN_VIEW giống như truy vấn bảng thực tế, ví dụ:

SQL > SELECT * FROM NHANVIEN_VIEW;

Lệnh trên trả về các kết quả sau:

 +----------+-----+
| ten      | tuoi|
+----------+-----+
| Thanh    |  32 |
| Loan     |  25 |
| Nga      |  23 |
| Manh     |  25 |
| Huy      |  27 |
| Cao      |  22 |
| Lam      |  24 |
+----------+-----+

VỚI tùy chọn kiểm tra trong SQL

Với tùy chọn kiểm tra Nó là một tùy chọn của lệnh CREATE VIEW. Mục đích của WITH CHECK OPTION là đảm bảo rằng tất cả UPDATE và INSERT đều đáp ứng các điều kiện trong định nghĩa VIEW. Nếu không đáp ứng các điều kiện, UPDATE và INSERT sẽ trả về lỗi. Ví dụ sau tạo dạng xem NHANVIEN_VIEW. Sử dụng tùy chọn WITH CHECK option.

CREATE VIEW NHANVIEN_VIEW AS
SELECT ten, tuoi
FROM NHANVIEN
WHERE tuoi IS NOT NULL
WITH CHECK OPTION;

Trong trường hợp này, nếu bạn cố gắng sử dụng age = null cho UPDATE hoặc INSERT NHANVIEN_VIEW, một lỗi sẽ xảy ra và nếu tuổi khác với NULL, UPDATE hoặc INSERT sẽ thành công.

Cập nhật dạng xem trong SQL

Chế độ XEM có thể được cập nhật trong các điều kiện cụ thể sau:

  • Mệnh đề SELECT không được chứa từ khóa DISTINCT.
  • Mệnh đề SELECT không được chứa một hàm tổng kết.
  • Mệnh đề SELECT không được chứa các hàm tổng hợp.
  • Mệnh đề SELECT không được chứa các biểu thức tính toán.
  • Mệnh đề SELECT không được chứa mệnh đề ORDER BY.
  • Mệnh đề FROM không được chứa nhiều bảng.
  • Mệnh đề WHERE không được chứa các truy vấn con.
  • Truy vấn không chứa GROUP BY hoặc HAVING.
  • Không thể cập nhật cột đã đánh giá.
  • Tất cả các cột KHÔNG ĐẦY ĐỦ trong bảng gốc phải được chọn trong XEM để truy vấn CHÈN hoạt động.

Do đó, nếu VIEW thỏa mãn tất cả các quy tắc trên, bạn có thể sử dụng Cập nhật báo cáo Đối với XEM đó. Ví dụ sau cập nhật tuổi của nhân viên tên Thanh.

SQL > UPDATE NHANVIEN_VIEW
SET AGE = 35
WHERE ten = 'Thanh';

Cuối cùng, cập nhật bảng NHANVIEN gốc và cập nhật VIEW cho phù hợp. Bây giờ, hãy thử truy vấn bảng gốc, SELECT sẽ cho kết quả:

 +----+----------+-----+-----------+----------+
| ID | TEN      |TUOI | DIACHI    | LUONG    |
+----+----------+-----+-----------+----------+
|  1 | Thanh    |  35 | Haiphong  |  2000.00 |
|  2 | Loan     |  25 | Hanoi     |  1500.00 |
|  3 | Nga      |  23 | Hanam     |  2000.00 |
|  4 | Manh     |  25 | Hue       |  6500.00 |
|  5 | Huy      |  27 | Hatinh    |  8500.00 |
|  6 | Cao      |  22 | HCM       |  4500.00 |
|  7 | Lam      |  24 | Hanoi     | 10000.00 |
+----+----------+-----+-----------+----------+

Chèn các hàng vào XEM trong SQL

Các hàng dữ liệu có thể được chèn vào XEM.Các quy tắc tương tự như UPDATE cũng áp dụng cho Chèn. LệnhKhông thể chèn các hàng vào NHANVIEN_VIEW, vì chúng tôi đã không chọn tất cả các cột KHÔNG ĐỦ trong bảng gốc vào XEM. Chúng tôi chèn các hàng vào XEM giống như cách chúng tôi chèn chúng vào bảng.

Xóa các hàng khỏi VIEW trong SQL

Bạn có thể xóa các hàng dữ liệu khỏi XEM.Các quy tắc tương tự như UPDATE và INSERT cũng áp dụng cho Xóa lệnh Trong SQL. Ví dụ sau đây xóa dòng có TUOI = 22:

SQL > DELETE FROM NHANVIEN_VIEW
WHERE tuoi = 22;

Do đó, một hàng trong bảng NHANVIEN ban đầu bị xóa và kết quả giống như chính XEM. Bây giờ, hãy thử truy vấn bảng gốc, lệnh SELECT sẽ cho kết quả như sau:

 +----+----------+-----+-----------+----------+
| ID | TEN      |TUOI | DIACHI    | LUONG    |
+----+----------+-----+-----------+----------+
|  1 | Thanh    |  32 | Haiphong  |  2000.00 |
|  2 | Loan     |  25 | Hanoi     |  1500.00 |
|  3 | Nga      |  23 | Hanam     |  2000.00 |
|  4 | Manh     |  25 | Hue       |  6500.00 |
|  5 | Huy      |  27 | Hatinh    |  8500.00 |
|  7 | Lam      |  24 | Hanoi     | 10000.00 |
+----+----------+-----+-----------+----------+

Xóa chế độ XEM trong SQL

Nếu VIEW không còn cần thiết, bạn có thể xóa nó. Cú pháp như sau:

DROP VIEW ten_view;

Ví dụ về xóa chế độ xem NHANVIEN_VIEW khỏi bảng gốc:

DROP VIEW NHANVIEN_VIEW;

Trong phần tiếp theo, chúng ta sẽ hiểu Cách sử dụng mệnh đề HAVING trong SQL, Các bạn nhớ theo dõi bài viết trước: Lệnh SQL TRUNCATE TABLE

Bài tiếp theo: Mệnh đề HAVING trong SQL