Sử Dụng VIEW Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts

SQL cơ bản

SQL là gì? SQL - RDBMS là gì? SQL - Các hệ quản trị CSDL SQL - Cú pháp SQL - Kiểu dữ liệu SQL - Toán tử SQL - Biểu thức SQL - Create Database SQL - Drop Database SQL - Select Database SQL - Create Table SQL - Drop Table SQL - Câu lệnh Insert SQL - Câu lệnh Select SQL - Mệnh đề Where SQL - Toán tử AND & OR SQL - Câu lệnh Update SQL - Câu lệnh Delete SQL - Mệnh đề Like SQL - Mệnh đề Top SQL - Mệnh đề Order By SQL - Mệnh đề Group By SQL - Từ khóa Distinct

SQL nâng cao

SQL - Các ràng buộc SQL - Mệnh đề JOIN SQL - INNER JOIN SQL - RIGHT JOIN SQL - LEFT JOIN SQL - FULL JOIN SQL - SELF JOIN SQL - Mệnh đề UNION SQL - Giá trị NULL SQL - Sử dụng Alias SQL - Sử dụng Index SQL - Lệnh Alter SQL - Lệnh Truncate Table SQL - Sử dụng View SQL - Mệnh đề Having SQL - Transaction SQL - Ký tự đại diện SQL - Các hàm xử lý Date SQL - Bảng tạm thời SQL - Clone Table SQL - Sub Querie SQL - Sequence SQL - Xử lý Duplicate Lệnh TRUNCATE TABLE trong SQL Mệnh đề HAVING 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 );

Nội dung chính

  • Tạo View trong SQL
    • Ví dụ
  • Tùy chọn WITH CHECK OPTION
  • Update một view
  • Insert một view
  • Xóa hàng trong một view
  • Xóa view

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; Bài tiếp theo: Mệnh đề HAVING trong SQL Lệnh TRUNCATE TABLE trong SQL Mệnh đề HAVING trong SQL

Recent Updates

Xử lý duplicate trong SQLWeb SQL Database trong HTML5Lệnh DELETE MySQL trong PythonLệnh UPDATE MySQL trong PythonLệnh SELECT MySQL trong PythonLệnh INSERT MySQL trong PythonTạo bảng MySQL trong PythonTạo new database MySQL trong PythonKết nối Python với MySQLCài đặt môi trường MySQL cho PythonVí dụ Hibernate 3 XML Mapping - SQLServer 2017Ví dụ Hibernate 4 Annotation Mapping - MySQLSắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring Học Excel | Excel VBA Học Servlet | JSP | Struts2 Học C | C++ | C# Học Python Học SQL

Bài Tập Có Lời Giải

Bài tập Java Bài tập C Bài tập C++ Bài tập C# Bài tập Python Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java 25 câu hỏi phỏng vấn servlet 75 câu hỏi phỏng vấn jsp 52 câu hỏi phỏng vấn Hibernate 70 câu hỏi phỏng vấn Spring 57 câu hỏi phỏng vấn SQL

Từ khóa » Bài Tập Về View Trong Sql Có Lời Giải