Chủ Nhật, 30 tháng 7, 2023

Subquery trong SQL - truy vấn con

Trong bài này mình sẽ nói đến một cách sử dụng câu truy vấn SLECT nâng cao đó là subquery, đây là cách chạy nhiều câu truy vấn trong một câu lệnh.

Mục lục

  • 1. Subquery là gì?
  • 2. Một vài ví dụ với subquery

1. Subquery là gì?

Subquery hay còn gọi là truy vấn con, đây là cách viết một câu lệnh SQL mà trong đó có lồng thêm một hoặc nhiều câu truy vấn khác, và thường được sử dụng trong bốn lệnh: SELECT, INSERT, UPDATE hoặc DELETE.

Trước khi đi vào phần chi tiết thì mình xin nhắc lại kiến thức cũ một chút. Khi bạn thực hiện một câu SELECT thì kết quả nó sẽ trả về một bảng tạm, bảng tạm này có số records và column phụ thuộc vào câu SELECT, vì là một bảng nên ta có thể viết câu truy vấn dạng readonly trên bangr đó.

Ví dụ
1
2
SELECT SV.MASINHVIEN, SV.TENSINHVIEN
FROM (SELECT MASINHVIEN, TENSINHVIEN FROM SINHVIEN) AS SV

Trong ví dụ này mình đã thực hiện một câu truy vấn và trong đó có thêm một câu truy vấn con (subquery). Vì là bảng tạm nên ta phải sử dụng từ khóa AS để đặt tên cho nó thì ở câu SELECT cha bên ngoài mới hiểu, đây là cách viết tường minh. Nếu bạn không thích tường minh thì cũng có thể viết như sau:

Bài viết này được đăng tại tranvanbinh.vn, vietdba.vn

1
2
SELECT MASINHVIEN, TENSINHVIEN
FROM (SELECT MASINHVIEN, TENSINHVIEN FROM SINHVIEN)

Nhìn gọn hơn nhưng mình khuyên không nên viết theo cách này.

2. Một vài ví dụ với subquery

Truy vấn con (subquery) rất hữu ích trong một số trường hợp liên quan đến nhiều bảng. và sau đây là một vài ví dụ tham khảo.

SỬ DỤNG TRONG IN
1
2
SELECT * FROM EMPLOYEES E
WHERE E.ID IN (SELECT s.SalesPersonID FROM Sales s);

SỬ DỤNG TRONG ANY
1
2
SELECT * FROM Customers c
WHERE c.ID =ANY (SELECT s.CustomerID FROM Sales s);

SỬ DỤNG TRONG SOME
1
2
SELECT * FROM Students s
WHERE s.id = SOME (SELECT l.Student_id FROM Library l);

SỬ DỤNG TRONG EXISTS
1
2
SELECT * FROM Students s
WHERE EXISTS (SELECT * FROM Students_Math m WHERE m.id=s.id);

SỬ DỤNG TRONG NOT EXISTS
1
2
SELECT * FROM Students s
WHERE NOT EXISTS (SELECT * FROM Students_Math m WHERE m.id=s.id);

Trên là một vài cách sử dụng căn bản, thực tế có có những trường hợp viết rất phức tạp nên mình không thể đăng lên đây được, sẽ rất khó hiểu.

=============================
Nếu bạn muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin1_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master