Truy Vấn Con Trong SQL | 79 Bài Học SQL Hay Nhất
Có thể bạn quan tâm
- Cơ bản về SQL
- Giới thiệu SQL
- SQL là gì
- Các khái niệm RDBMS
- Database là gì
- Cú pháp SQL cơ bản
- Kiểu dữ liệu
- Toán tử
- Biểu thức (Expression)
- SQL Database
- Lệnh Create Database
- Lệnh Drop Database
- Lệnh Select Database
- Lệnh Rename Database
- SQL Table
- Lệnh Create Table
- Lệnh Drop Table
- Lệnh Delete Table
- Lệnh Rename Table
- Lệnh Truncate Table
- Lệnh ALter Table
- Sao chép bảng
- Bảng tạm (Temp Table)
- Nhóm lệnh thao tác cơ bản
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Sắp xếp kết quả
- Mệnh đề trong SQL
- Mệnh đề Where
- Mệnh đề AND & OR
- Mệnh đề WITH
- Mệnh đề Like
- Mệnh đề Top
- Hoạt động SQL nâng cao
- Mệnh đề Union
- Giá trị NULL
- Cú pháp Alias
- Chỉ mục (Index)
- Sử dụng View
- Mệnh đề Having
- SQL Transaction
- Toán tử Wildcard
- Truy vấn con
- Sử dụng Sequence
- Xử lý bản sao
- SQL Injection
- Ràng buộc trong SQL
- Ràng buộc (Constraint)
- Ràng buộc NOT NULL
- Ràng buộc DEFAULT
- Ràng buộc UNIQUE
- Ràng buộc PRIMARY KEY
- Ràng buộc FOREIGN KEY
- Ràng buộc CHECK
- Ràng buộc INDEX
- SQL Join
- Sử dụng Join
- Inner Join
- Left Join
- Right Join
- Full Join
- Self Join
- Cartesian Join
- Hàm trong SQL
- Hàm hữu ích
- Hàm xử lý Date
- Hàm xử lý chuỗi
- Hàm xử lý số
- Tài liệu SQL tham khảo
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Tuning DB
- Tài liệu SQL tham khảo
Truy vấn con (còn được gọi truy vấn phụ hay truy vấn lồng nhau) là một truy vấn bên trong truy vấn SQL khác và được nhúng bên trong mệnh đề WHERE.
Một truy vấn con được sử dụng để trả về dữ liệu mà sẽ được sử dụng trong truy vấn chính như là một điều kiện để thu hẹp dữ liệu được thu nhận.
Các truy vấn con có thể được sử dụng với các lệnh SELECT, INSERT, UPDATE VÀ DELETE cùng với các toán tử như: =, <, >, >=, <=, IN, BETWEEN ...
Các truy vấn con phải tuân theo các qui tắc sau:
Các truy vấn con phải được bao trong các dấu ngoặc đơn.
Một truy vấn con có thể chỉ có một cột trong mệnh đề SELECT, trừ khi có nhiều cột là trong truy vấn chính cho truy vấn con để so sánh các cột đã chọn của nó.
Một ORDER BY không thể được sử dụng trong một truy vấn con, mặc dù truy vấn chính có thể sử dụng một ORDER BY. GROUP BY có thể được sử dụng để thực hiện cùng tính năng như ORDER BY trong một truy vấn con.
Các truy vấn con, mà trả về nhiều hơn một hàng, có thể chỉ được sử dụng với các toán tử nhân, ví dụ: toán tử IN.
Danh sách của SELECT không thể bao gồm bất kỳ tham chiếu nào tới các giá trị mà ước lượng một BLOB, ARRAY, CLOB hoặc NCLOB.
Một truy vấn con không thể bị bao quanh một cách trực tiếp trong một hàm tập hợp.
Toán tử BETWEEN không thể được sử dụng với một truy vấn con; tuy nhiên, toán tử BETWEEN có thể được sử dụng bên trong truy vấn con.
Truy vấn con với lệnh SELECT trong SQL
Các truy vấn con thường xuyên được sử dụng với lệnh SELECT. Cú pháp cơ bản của truy vấn con với lệnh SELECT là như sau:
SELECT ten_cot [, ten_cot ] FROM bang1 [, bang2 ] WHERE ten_cot TOAN_TU (SELECT ten_cot [, ten_cot ] FROM bang1 [, bang2 ] [WHERE])Ví dụ
Bảng SINHVIEN có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4000000 | | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+---------+-----+-----------+---------+Bây giờ, chúng ta kiểm tra truy vấn con với lệnh SELECT như sau:
SQL> SELECT * FROM SINHVIEN WHERE ID IN (SELECT ID FROM SINHVIEN WHERE HOCPHI > 4000000) ; Quảng cáoVí dụ trên sẽ cho kết quả:
+----+----------+-----+---------+----------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+----------+-----+---------+----------+ | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+----------+-----+---------+----------+Truy vấn con với lệnh INSERT trong SQL
Các truy vấn con cũng có thể được sử dụng với lệnh INSERT. Lệnh INSERT sử dụng dữ liệu được trả về từ truy vấn con để chèn nó vào trong bảng khác. Dữ liệu được lựa chọn trong truy vấn con có thể được sửa đổi với bất kỳ hàm xử lý ký tự, date hoặc số nào.
Cú pháp cơ bản của truy vấn con với lệnh INSERT là như sau:
INSERT INTO ten_bang [ (cot1 [, cot2 ]) ] SELECT [ *|cot1 [, cot2 ] FROM bang1 [, bang2 ] [ WHERE GIA_TRI TOAN_TU ]Ví dụ
Theo dõi bảng SINHVIEN_BK53 với cấu trúc tương tự như bảng SINHVIEN. Bây giờ, sao chép cả bảng SINHVIEN vào trong bảng SINHVIEN_BK53, sau đây là cú pháp.
SQL> INSERT INTO SINHVIEN_BK53 SELECT * FROM SINHVIEN WHERE ID IN (SELECT ID FROM SINHVIEN) ;Truy vấn con với lệnh UPDATE trong SQL
Truy vấn con có thể được sử dụng kết hợp với lệnh UPDATE. Hoặc một cột đơn hoặc nhiều cột trong một bảng có thể được cập nhật khi sử dụng một truy vấn con với lệnh UPDATE trong SQL.
Cú pháp cơ bản của truy vấn con với lệnh UPDATE là như sau:
UPDATE table SET ten_cot = gia_tri_moi [ WHERE TOAN_TU [ GIA_TRI ] (SELECT TEN_COT FROM TEN_BANG) [ WHERE) ]Ví dụ
Giả sử, chúng ta đã có bảng SINHVIEN_BK53 có sẵn, là một backup (sao lưu) của bảng SINHVIEN.
Ví dụ sau cập nhật HOCPHI * 1,2 trong bảng SINHVIEN cho tất cả sinh viên có TUOI là lớn hơn hoặc bằng 21.
SQL> UPDATE SINHVIEN SET HOCPHI = HOCPHI * 1.2 WHERE TUOI IN (SELECT TUOI FROM SINHVIEN_BK53 WHERE TUOI >= 21 );Lệnh này sẽ tác động lên một hàng và cuối cùng bảng SINHVIEN sẽ có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4800000 | | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+---------+-----+-----------+---------+Truy vấn con với lệnh DELETE trong SQL
Truy vấn con có thể được sử dụng kết hợp với lệnh DELETE giống như bất kỳ lệnh khác đã được đề cập ở trên.
Cú pháp cơ bản của truy vấn con với lệnh DELETE là như sau:
DELETE FROM TEN_BANG [ WHERE TOAN_TU [ VALUE ] (SELECT TEN_COT FROM TEN_BANG) [ WHERE) ]Ví dụ
Giả sử, chúng ta đã có bảng SINHVIEN_BK53 có sẵn, là một backup (sao lưu) của bảng SINHVIEN.
Ví dụ sau xóa các bản ghi của tất cả khách hàng có TUOI lớn hơn 20 từ bảng SINHVIEN.
SQL> DELETE FROM SINHVIEN WHERE TUOI IN (SELECT TUOI FROM SINHVIEN_BK53 WHERE TUOI > 20 );Lệnh này sẽ tác động lên hai hàng và cuối cùng bảng SINHVIEN sẽ có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | +----+---------+-----+-----------+---------+ Trang trước Trang sau Quảng cáo Bài viết liên quan160 bài học ngữ pháp tiếng Anh hay nhất
155 bài học Java tiếng Việt hay nhất
100 bài học Android tiếng Việt hay nhất
247 bài học CSS tiếng Việt hay nhất
197 thẻ HTML cơ bản
297 bài học PHP
101 bài học C++ hay nhất
97 bài tập C++ có giải hay nhất
208 bài học Javascript có giải hay nhất
Học cùng VietJack
Dịch vụ nổi bật:
-
Giải bài tập SGK & SBT -
Tài liệu giáo viên -
Sách -
Khóa học -
Thi online -
Hỏi đáp
Trang web chia sẻ nội dung miễn phí dành cho người Việt.
Giải bài tập:
Lớp 1-2-3 Lớp 4 Lớp 5 Lớp 6 Lớp 7 Lớp 8 Lớp 9 Lớp 10 Lớp 11 Lớp 12 Lập trình Tiếng Anh
Chính sách
Chính sách bảo mật
Hình thức thanh toán
Chính sách đổi trả khóa học
Chính sách hủy khóa học
Tuyển dụng
Liên hệ với chúng tôi
Tầng 2, G4 - G5 Tòa nhà Five Star Garden, số 2 Kim Giang, Phường Khương Đình, Hà Nội
Phone: 084 283 45 85
Email: [email protected]
CÔNG TY TNHH ĐẦU TƯ VÀ DỊCH VỤ GIÁO DỤC VIETJACK
Người đại diện: Nguyễn Thanh Tuyền
Số giấy chứng nhận đăng ký kinh doanh: 0108307822, ngày cấp: 04/06/2018, nơi cấp: Sở Kế hoạch và Đầu tư thành phố Hà Nội.
2015 © All Rights Reserved.
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 - Học Sql Cơ Bản đến Nâng Cao - VietTuts
-
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ả