Sub Query Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts
Có thể bạn quan tâm
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 DistinctSQL 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 Clone table trong SQL Sequence trong SQLSub query trong SQL hoặc truy vấn nội bộ hoặc truy vấn Nested là truy vấn trong một truy vấn SQL khác và được nhúng trong mệnh đề WHERE.
Một sub query được sử dụng để trả về dữ liệu sẽ được sử dụng trong truy vấn chính như một điều kiện để hạn chế hơn nữa dữ liệu được truy xuất.
Sub query có thể được sử dụng với câu lệnh SELECT, INSERT, UPDATE, và DELETE cùng với các toán tử như: =, <,>,> =, <=, IN, BETWEEN, v.v ...
Có một vài quy tắc mà Sub query phải tuân theo:
- Sub query phải được đặt trong dấu ngoặc đơn.
- Một sub query có thể chỉ có một cột trong mệnh đề SELECT, trừ khi nhiều cột trong truy vấn chính cho sub query để so sánh các cột đã chọn của nó.
- Không thể sử dụng lệnh ORDER BY trong sub query, mặc dù truy vấn chính có thể sử dụng ORDER BY. Lệnh GROUP BY có thể được sử dụng để thực hiện chức năng giống như ORDER BY trong một sub query.
- Sub query trả về nhiều hơn một hàng chỉ có thể được sử dụng với toán tử nhiều giá trị như toán tử IN.
- Danh sách SELECT không được bao gồm bất kỳ tham chiếu nào đến các giá trị đánh giá BLOB, ARRAY, CLOB hoặc NCLOB.
- Một sub query không thể được chứa trực tiếp một chức năng set.
- Toán tử BETWEEN không thể được sử dụng với một sub query. Tuy nhiên, toán tử BETWEEN có thể được sử dụng trong sub query.
Nội dung chính
- Sub query với câu lệnh SELECT
- Ví dụ
- Sub query với câu lệnh INSERT
- Ví dụ về sub query với một câu lệnh INSERT
- Sub query với câu lệnh UPDATE
- Ví dụ về sub query với một câu lệnh UPDATE
- Sub query với câu lệnh DELETE
- Ví dụ về sub query với một câu lệnh DELETE
Sub query với câu lệnh SELECT
Sub query thường được sử dụng với câu lệnh SELECT. Cú pháp cơ bản như sau:
SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR (SELECT column_name [, column_name ] FROM table1 [, table2 ] [WHERE])Ví dụ
Hãy xem xét 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 | +----+----------+-----+-----------+----------+Ví dụ về sub query với một câu lệnh SELECT.
SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500) ;Điều này sẽ tạo ra kết quả sau.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+Sub query với câu lệnh INSERT
Sub query cũng có thể được sử dụng với các câu lệnh INSERT. Câu lệnh INSERT sử dụng dữ liệu được trả về từ sub query để chèn vào một bảng khác. Dữ liệu đã chọn trong sub query có thể được sửa đổi bằng bất kỳ ký tự, ngày hoặc số chức năng.
Cú pháp cơ bản như sau.
INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]Ví dụ về sub query với một câu lệnh INSERT
Xem bảng CUSTOMERS_BKP có cấu trúc tương tự như bảng CUSTOMERS. Bây giờ để sao chép bảng CUSTOMERS hoàn chỉnh vào bảng CUSTOMERS_BKP, bạn có thể sử dụng cú pháp sau.
INSERT INTO CUSTOMERS_BKP SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS) ;Sub query với câu lệnh UPDATE
Có thể sử dụng sub query kết hợp với câu lệnh UPDATE. Một hoặc nhiều cột trong một bảng có thể được cập nhật khi sử dụng một sub query với câu lệnh UPDATE.
Cú pháp cơ bản như sau.
UPDATE table SET column_name = new_value [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]Ví dụ về sub query với một câu lệnh UPDATE
Giả sử, chúng ta có bảng CUSTOMERS_BKP có sẵn là bảng sao lưu của CUSTOMERS. Ví dụ sau cập nhật SALARY gấp 0,25 lần trong bảng CUSTOMERS cho tất cả khách hàng có AGE lớn hơn hoặc bằng 27.
UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 );Điều này sẽ ảnh hưởng đến hai hàng và cuối cùng bảng CUSTOMERS sẽ có các bản ghi sau đây.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 125.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 | 2125.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+Sub query với câu lệnh DELETE
Sub query có thể được sử dụng kết hợp với câu lệnh DELETE như với bất kỳ câu lệnh nào khác đã đề cập ở trên.
Cú pháp cơ bản như sau.
DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]Ví dụ về sub query với một câu lệnh DELETE
Giả sử, chúng ta có một bảng CUSTOMERS_BKP có sẵn mà là một bản sao lưu của bảng CUSTOMERS. Ví dụ sau sẽ xóa các bản ghi từ bảng CUSTOMERS cho tất cả khách hàng có AGE lớn hơn hoặc bằng 27.
DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 );Điều này sẽ ảnh hưởng đến hai hàng và cuối cùng là bảng CUSTOMERS sẽ có các bản ghi sau.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ Bài tiếp theo: Sequence trong SQL Clone table trong SQL Sequence trong SQLRecent 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 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?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 » Các Loại Subquery Trong Sql
-
Hướng Dẫn Subquery Trong SQL Server Từ AZ - Comdy
-
Subquery Trong SQL Server - Comdy
-
Truy Vấn Con - SUBQUERY Trong SQL
-
Sub Query Trong SQL Server - Truy Vấn Con - Freetuts
-
Truy Vấn Lồng Nhau Subquery Trong SQL
-
Một Vài điều Về Subquery Trong SQL | GiangTester Blog
-
Truy Vấn Con SUBQUERY TRONG SQL - Học SQL Từ Cơ Bản đến ...
-
Subqueries Trong Mysql - Viblo
-
1-6 So Sánh Giữa Dòng Với Dòng Bằng Subquery Tương Quan - Viblo
-
Subquery Trong SQL - Truy Vấn Con - Vi
-
Phép Nối, Các Loại Phép Nối, Phép Nối Theo Chuẩn SQL-92, Mệnh đề ...
-
Truy Vấn Con SUBQUERY Trong SQL Server - NQ NEWS
-
Kỹ Thuật Tối ưu Hóa Lệnh Truy Vấn SQL Nhanh Hiệu Quả
-
Truy Vấn Con Trong SQL | 79 Bài Học SQL Hay Nhất