Bỏ qua đến nội dung
Bỏ qua điều hướng
Đăng nhập
MT.NET.VN

Viewbh Su Dung View Trong Sql2023 04 12 11 14 13

Tìm kiếm
Thuộc khóa học · baihoc_sub = 50

MS SQL ( Basic to Pro )

Bài 1 / 1 trong khóa học.

Xem khóa học
100%
Bài trướcĐây là bài đầu tiên Bài sauĐây là bài cuối cùng
MT LEARNING · LESSON

Sử dụng VIEW trong SQL

Sử dụng VIEW trong SQL

Sử dụng VIEW trong SQL

Sử dụng VIEW trong SQL



Bài này sẽ hướng dẫn bạn sử dụng View trong SQL. Trong SQL, một View là một bảng thực dựa trên tập kết quả của một câu lệnh SQL, một View chứa các hàng và các cột như một bảng thực. Các trường trong View là các trường của một hoặc nhiều bảng trong database.

Để thực hành việc sử dụng View trong SQL, bạn có thể thực hành trên bất kỳ hệ quản trị cơ sở dữ liệu (CSDL) nào.

Trước tiên, chúng ta tạo ra bảng CUSTOMERS như sau:

 CREATE TABLE CUSTOMERS (    ID   INT              NOT NULL,    NAME VARCHAR (20)     NOT NULL,    AGE  INT,    ADDRESS  CHAR (25),    SALARY   DECIMAL (18, 2),    PRIMARY KEY (ID) ); 

Tiếp theo, chèn 7 bản ghi vào bảng CUSTOMERS:

 INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (1, 'Ha Anh', 32, 'Da Nang', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (2, 'Van Ha', 25, 'Ha Noi', 1500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (3, 'Vu Bang', 23, 'Vinh', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (4, 'Thu Minh', 25, 'Ha Noi', 6500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (5, 'Hai An', 27, 'Ha Noi', 8500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (6, 'Hoang', 22, 'Ha Noi', 4500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)     VALUES (7, 'Binh', 24, 'Ha Noi', 10000.00 ); 

Tạo View trong SQL

Các View được tạo ra bằng cách sử dụng câu lệnh CREATE VIEW . Các view có thể được tạo ra từ một bảng, nhiều bảng hoặc từ một view khác.

Cú pháp CREATE VIEW cơ bản như sau:

 CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition]; 

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.

Ví dụ

Giả sử bảng CUSTOMERS có các bản ghi sau đây:

 +----+----------+-----+-----------+----------+ | ID | NAME     | AGE | ADDRESS   | SALARY   | +----+----------+-----+-----------+----------+ |  1 | Ha Anh   |  32 | Da Nang   |  2000.00 | |  2 | Van Ha   |  25 | Ha Noi    |  1500.00 | |  3 | Vu Bang  |  23 | Vinh      |  2000.00 | |  4 | Thu Minh |  25 | Ha Noi    |  6500.00 | |  5 | Hai An   |  27 | Ha Noi    |  8500.00 | |  6 | Hoang    |  22 | Ha Noi    |  4500.00 | |  7 | Binh     |  24 | Ha Noi    | 10000.00 | +----+----------+-----+-----------+----------+ 

Sau đây là một ví dụ để tạo một view từ bảng CUSTOMERS. View này được sử dụng để lấy name và age từ bảng CUSTOMERS.

 CREATE VIEW CUSTOMERS_VIEW AS SELECT id, name, age FROM  CUSTOMERS; 

Bây giờ, bạn có thể truy vấn CUSTOMERS_VIEW theo cách tương tự như bạn truy vấn bảng thực tế. Sau đây là một ví dụ cho cùng một.

 SELECT * FROM CUSTOMERS_VIEW; 

Kết quả:

 +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | Ha Anh   |  32 | |  2 | Van Ha   |  25 | |  3 | Vu Bang  |  23 | |  4 | Thu Minh |  25 | |  5 | Hai An   |  27 | |  6 | Hoang    |  22 | |  7 | Binh     |  24 | +----+----------+-----+ 
Mỗi lần người dùng truy vấn một View. Bộ máy của CSDL sẽ sử dụng câu lệnh SQL của View để tạo lại dữ liệu, do vậy dữ liệu của View luôn được cập nhật.


Tùy chọn WITH CHECK OPTION

Tùy chọn WITH CHECK OPTION là ràng buộc trong câu lệnh CREATE VIEW. Mục đích của WITH CHECK OPTION là đảm bảo rằng tất cả sự kiện UPDATE và INSERT view đều phải 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, câu lệnh UPDATE hoặc INSERT view sẽ trả về lỗi.

Khối lệnh sau đây là một ví dụ về việc tạo ra view CUSTOMERS_VIEW với tùy chọn WITH CHECK OPTION.

 CREATE VIEW CUSTOMERS_VIEW AS SELECT id, name, age FROM  CUSTOMERS WHERE age IS NOT NULL WITH CHECK OPTION; 

Trong trường hợp này, nếu bạn cố gắng UPDATE hoặc INSERT CUSTOMERS_VIEW với giá trị age = null thì sẽ bị lỗi, ví dụ:

 INSERT INTO CUSTOMERS_VIEW VALUES(14, 'TEST', null) 

Kết quả:

 [Err] 44000 - [SQL Server]The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint. 01000 - [SQL Server]The statement has been terminated. 

Ví dụ, age khác NULL thì sẽ UPDATE hoặc INSERT thành công:

 INSERT INTO CUSTOMERS_VIEW VALUES(14, 'TEST', 17) 

Kết quả:

 +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | Ha Anh   |  32 | |  2 | Van Ha   |  25 | |  3 | Vu Bang  |  23 | |  4 | Thu Minh |  25 | |  5 | Hai An   |  27 | |  6 | Hoang    |  22 | |  7 | Binh     |  24 | |  14| TEST     |  17 | +----+----------+-----+ 

Update một view

View có thể được update với các điều kiện nhất định được đưa ra dưới đây:

  • Mệnh đề SELECT không được chứa từ khoá DISTINCT.
  • Mệnh đề SELECT không được chứa các hàm tổng.
  • Mệnh đề SELECT có thể không chứa các hàm tập hợp.
  • Mệnh đề SELECT không được chứa các toán tử tập hợp.
  • 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.
  • Các cột được ứng lượng không thể được update.
  • Tất cả các cột NOT NULL từ bảng cơ sở phải được select trong view để truy vấn INSERT hoạt động.

Vì vậy, nếu một view thỏa mãn tất cả các quy tắc nói trên thì bạn có thể sử dụng câu lệnh UPDATE hoặc INSERT cho view đó. Ví dụ sau cập nhật age cho customers có tên là Ha Anh.

 UPDATE CUSTOMERS_VIEW    SET AGE = 35    WHERE name = 'Ha Anh'; 

Kết quả, bảng CUSTOMERS được cập nhật như sau:

 +----+----------+-----+-----------+----------+ | ID | NAME     | AGE | ADDRESS   | SALARY   | +----+----------+-----+-----------+----------+ |  1 | Ha Anh   |  35 | Da Nang   |  2000.00 | |  2 | Van Ha   |  25 | Ha Noi    |  1500.00 | |  3 | Vu Bang  |  23 | Vinh      |  2000.00 | |  4 | Thu Minh |  25 | Ha Noi    |  6500.00 | |  5 | Hai An   |  27 | Ha Noi    |  8500.00 | |  6 | Hoang    |  22 | Ha Noi    |  4500.00 | |  7 | Binh     |  24 | Ha Noi    | 10000.00 | +----+----------+-----+-----------+----------+ 


Insert một view

Bạn cũng có thể insert một bản ghi vào một view. Các quy tắc tương tự UPDATE cũng áp dụng cho lệnh INSERT.

Ở mục "Tùy chọn WITH CHECK OPTION" chúng ta đã có một ví dụ về việc insert View.


Xóa hàng trong một view

Các bản ghi có thể bị xóa khỏi một view. Các quy tắc tương tự áp dụng cho các lệnh UPDATE và INSERT áp dụng cho lệnh DELETE.

Sau đây là một ví dụ để xóa một bản ghi có age = 22.

 DELETE FROM CUSTOMERS_VIEW    WHERE AGE = 22; 

Kết quả, bảng CUSTOMERS được cập nhật như sau:

 +----+----------+-----+-----------+----------+ | ID | NAME     | AGE | ADDRESS   | SALARY   | +----+----------+-----+-----------+----------+ |  1 | Ha Anh   |  35 | Da Nang   |  2000.00 | |  2 | Van Ha   |  25 | Ha Noi    |  1500.00 | |  3 | Vu Bang  |  23 | Vinh      |  2000.00 | |  4 | Thu Minh |  25 | Ha Noi    |  6500.00 | |  5 | Hai An   |  27 | Ha Noi    |  8500.00 | |  7 | Binh     |  24 | Ha Noi    | 10000.00 | +----+----------+-----+-----------+----------+ 

Xóa view

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 view_name; 

Ví dụ xóa view CUSTOMERS_VIEW từ bảng CUSTOMERS.

 DROP VIEW CUSTOMERS_VIEW; 


ĐÁNH GIÁ NỘI DUNG 0.0/5 0 lượt đánh giá
Bạn thấy nội dung này thế nào?
Mỗi trình duyệt/tài khoản được chấm lại sau 24 giờ.
Báo bài lỗiGiúp MT.Net.VN phát hiện nội dung cần kiểm tra
Báo lỗi được ghi vào hệ thống để Admin kiểm tra. Không dùng chức năng này để gửi hỗ trợ cá nhân.

Bài học liên quan

Các bài khác có cùng khóa học cha theo baihoc_sub.

Home Dịch vụ Khóa học CPanel