Thao tác nối bảng (Join) trong lệnh truy vấn dữ liệu SELECT có nhiều biến thể (inner join, các dạng outer join). Việc hiểu rõ cách dùng chúng rất quan trọng trong việc lập trình các ứng dụng cần lưu trữ dữ liệu trong CSDL quan hệ. Bài viết này trình bày về một ví dụ đơn giản minh họa việc sử dụng các biến thể của thao tác nối bảng JOIN.
Tạo dữ liệu minh họa
Tạo 2 bảng dữ liệu A và B:
Chèn dữ liệu minh hoạ cho Bảng A và B:
INNER JOIN
Thực hiện truy vấn từ 2 Table A và B, với điều kiện B.A_B = A.A1:
select A2, A1, A_B, B1, B2 from A, B where A_B = A1;
Kết quả truy vấn như sau:
Ta có nhận xét là các bản ghi nằm trong bảng A và bảng B mà không có quan hệ với nhau đều bị loại khỏi kết quả truy vấn trên.
Ta có thể viết câu lệnh SQL trên theo một cú pháp tương đương khác như sau:
select A2, A1, A_B, B1, B2 from A INNER JOIN B ON A_B = A1;
LEFT OUTER JOIN
Trong trường hợp ta muốn truy vấn nối 2 Table A và B, đồng thời lại muốn hiển thị tất các bản ghi của Table A cho dù các bản ghi này không có bản ghi nào thuộc Table liên kết tới, thì ta cần sử dụng OUTER JOIN. Lưu ý là ta chỉ lấy tất cả bản ghi của Table A, ở phía trái của phép nối, nên ta sử dụng LEFT OUTER JOIN.
select A2, A1, A_B, B1, B2 from A left outer join B on B.A_B = A.A1;
Kết quả thực hiện lệnh truy vấn trên:
RIGHT OUTER JOIN
Ngược lại, một số trường hợp ta cần truy vấn ghép nối 2 Table A, B và chọn ra cả những bản ghi của B không tham chiếu đến bản ghi nào của A. Vì các bản ghi được chọn nằm về bên phải của phép nối nên ta sử dụng mệnh đề RIGHT OUTER JOIN trong câu lệnh truy vấn:
select A2, A1, A_B, B1, B2 from A right outer join B on B.A_B = A.A1;
Kết quả thực hiện lệnh truy vấn trên:
FULL OUTER JOIN
Trong trường hợp muốn truy vấn nối table A và B để chọn ra:
- các bản ghi của A nối với các bản ghi của B tham chiếu đến A
- tất cả các bản ghi A không có bản ghi nào của B tham chiếu đến
- tất cả các bản ghi B không tham chiếu đến bản ghi nào của A
thì ta có thể sử dụng câu lệnh truy vấn FULL OUTER JOIN:
select A2, A1, A_B, B1, B2 from A full outer join B on B.A_B = A.A1;
Kết quả thực hiện câu lệnh:
Các bạn có thể tải mã nguồn của ví dụ minh họa trên để thử nghiệm.
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* 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
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 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: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Đị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
=============================
TRANSACT-SQL: VÍ DỤ MINH HỌA VỀ INNER JOIN VÀ OUTER JOIN, 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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty