Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Create View trong SQL là gì? Cách tạo view trong SQL như thế nào? Hãy cùng Quantrimang.com tìm hiểu mọi điều cần biết về view trong SQL nhé!
Ngôn ngữ truy vấn có cấu trúc (Structured Query Language = SQL) sử dụng nhiều cấu trúc dữ liệu khác nhau, trong đó bảng là một cấu trúc được sử dụng phổ biến nhất. Tuy nhiên, các bảng có những hạn chế nhất định. Chẳng hạn, bạn không thể giới hạn người dùng chỉ có quyền truy cập vào một phần của bảng. Người dùng phải được cấp quyền truy cập vào toàn bộ bảng, không chỉ một vài cột trong đó.
Một ví dụ khác, giả sử bạn muốn kết hợp dữ liệu từ nhiều bảng khác vào một cấu trúc mới, nhưng lại không muốn xóa các bảng gốc. Bạn chỉ có thể tạo một bảng khác, tuy nhiên, sau đó bạn sẽ có dữ liệu dư thừa được lưu trữ ở nhiều nơi. Điều này có thể gây ra nhiều bất tiện: nếu một số dữ liệu của bạn thay đổi, bạn sẽ phải cập nhật dữ liệu đó ở nhiều nơi. Trong những trường hợp như thế này, cách tạo view trong SQL sẽ hữu ích.
Trong SQL, một khung nhìn VIEW là một bảng ảo trong cơ sở dữ liệu có nội dung được định nghĩa thông qua một câu lệnh SQL nào đó. Một 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 một khung nhìn là các trường từ một hoặc nhiều bảng thực trong Database.
Điểm khác biệt giữa khung nhìn VIEW và bảng là VIEW không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ liệu. Thực chất dữ liệu quan sát được trong VIEW được lấy từ các bảng thông qua câu lệnh truy vấn dữ liệu và được sử dụng để hạn chế truy cập cơ sở dữ liệu hoặc để ẩn dữ liệu phức tạp.
Ở bài viết này, Quantrimang sẽ hướng dẫn chi tiết cho bạn cách sử dụng VIEW trong SQL với cú pháp và những ví dụ cụ thể để dễ hình dung và nắm bắt lệnh tốt hơn.
VIEW được tạo ra bởi câu lệnh CREATE VIEW. Các VIEW có thể được tạo từ một bảng đơn, nhiều bảng hoặc từ VIEW khác.
Cú pháp cơ bản của lệnh CREATE VIEW trong SQL như sau:
CREATE VIEW ten_view ASSELECT cot1, cot2.....FROM ten_bangWHERE [dieu_kien];
Bạn có thể thêm nhiều bảng trong câu lệnh SELECT tương tự như cách sử dụng chúng trong một truy vấn SQL SELECT bình thường.
Giả sử bảng NHANVIEN có các bản ghi 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 | | 6 | Cao | 22 | HCM | 4500.00 | | 7 | Lam | 24 | Hanoi | 10000.00 | +----+----------+-----+-----------+----------+
Sau đây là một ví dụ để tạo một VIEW từ bảng NHANVIEN. VIEW này được sử dụng để lấy tên và tuổi từ bảng NHANVIEN.
SQL > CREATE VIEW NHANVIEN_VIEW ASSELECT ten, tuoiFROM NHANVIEN;
Bây giờ, bạn có thể truy vấn NHANVIEN_VIEW theo cách tương tự như bạn truy vấn bảng thực tế, ví dụ:
SQL > SELECT * FROM NHANVIEN_VIEW;
Lệnh trên trả về kết quả:
+----------+-----+ | ten | tuoi| +----------+-----+ | Thanh | 32 | | Loan | 25 | | Nga | 23 | | Manh | 25 | | Huy | 27 | | Cao | 22 | | Lam | 24 | +----------+-----+
WITH CHECK OPTION là một tùy chọn của lệnh CREATE VIEW. Mục đích của WITH CHECK OPTION là bảo đảm rằng tất cả UPDATE và INSERT thỏa mãn các điều kiện trong định nghĩa VIEW.
Nếu chúng không thỏa mãn các điều kiện, UPDATE và INSERT sẽ trả về một lỗi.
Ví dụ sau tạo ra view NHANVIEN_VIEW với tùy chọn WITH CHECK OPTION.
CREATE VIEW NHANVIEN_VIEW ASSELECT ten, tuoiFROM NHANVIENWHERE tuoi IS NOT NULLWITH CHECK OPTION;
Trong trường hợp này, nếu bạn cố gắng UPDATE hoặc INSERT NHANVIEN_VIEW với giá trị tuoi = null thì sẽ xảy ra lỗi, còn nếu tuoi khác NULL thì UPDATE hoặc INSERT sẽ thành công.
Một VIEW có thể được cập nhật dưới các điều kiện cụ thể sau:
Vì vậy, nếu một VIEW thỏa mãn tất cả các quy tắc trên thì bạn có thể sử dụng câu lệnh UPDATE cho VIEW đó. Ví dụ sau cập nhật tuoi cho nhân viên có tên là Thanh.
SQL > UPDATE NHANVIEN_VIEW SET AGE = 35 WHERE ten = 'Thanh';
Cuối cùng, bảng NHANVIEN ban đầu được update và theo đó VIEW được cập nhật. Bây giờ, thử truy vấn bảng ban đầu và lệnh 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 | +----+----------+-----+-----------+----------+
Các hàng dữ liệu có thể được chèn vào trong một VIEW. Các quy tắc tương tự UPDATE cũng áp dụng cho lệnh INSERT.
Ở đây không thể chèn hàng vào trong NHANVIEN_VIEW bởi ta không select tất cả các cột NOT NULL từ bảng ban đầu vào trong VIEW. Chúng ta chèn các hàng vào trong một VIEW theo cách tương tự khi bạn chèn chúng vào trong một bảng.
Các hàng dữ liệu có thể bị xóa khỏi một VIEW. Các quy tắc tương tự UPDATE và INSERT cũng áp dụng cho lệnh DELETE trong SQL.
Ví dụ sau sẽ xóa một hàng có TUOI = 22:
SQL > DELETE FROM NHANVIEN_VIEW WHERE tuoi = 22;
Kết quả một hàng trong bảng NHANVIEN ban đầu sẽ bị xóa và kết quả tương tự với chính VIEW đó. Bây giờ, thử truy vấn bảng ban đầu, và lệnh SELECT sẽ cho kết quả:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
Bạn có thể xóa VIEW nếu nó không còn cần thiết. Cú pháp như sau:
DROP VIEW ten_view;
Ví dụ xóa view NHANVIEN_VIEW từ bảng ban đầu:
DROP VIEW NHANVIEN_VIEW;
Một database tốt sẽ chứa các view vì những lí do sau đây:
Trong phần tiếp theo, chúng ta sẽ tìm hiểu về cách sử dụng mệnh đề HAVING trong SQL, các bạn nhớ theo dõi nhé.
Nguồn tin: Quantrimang.com:
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn