Là cách để kết hợp hai bảng liên quan với nhau thông qua khóa chính-khóa ngoại và tạo thành một bảng duy nhất trong RDB. Đây là vai trò quan trọng nhất khi sử dụng RDB .
Chúng ta hãy tìm hiểu cách kết hợp ba bảng: danh sách sách, danh sách tác giả của từng cuốn sách và danh sách nhà xuất bản của từng tác giả. Chúng ta sẽ tìm hiểu cách thực hiện điều này thông qua một ví dụ sử dụng MariaDB.
Một bảng chứa tất cả tên sách, tác giả và nhà xuất bản mà không sử dụng các liên kết
id
book
author
publisher
1
Java
jimmy
malang
2
C/C#
jose
malang
3
Linear Algebra
tom
dandan
4
Calculus
jimmy
malang
5
SQL
NULL
NULL
Bảng danh sách sách
book_id
name
author_id
1
Java
1
2
C/C#
2
3
Linear Algebra
3
4
Calculus
1
5
SQL
NULL
Bảng tác giả
author_id
name
publisher_id
1
jimmy
1
2
jose
1
3
tom
2
4
george
NULL
Bảng nhà xuất bản
publisher_id
name
1
malang
2
dandan
3
moolcung
Bạn có thể tạo nhanh chóng mariadb container thông qua docker
Ngoài ra bạn có thể dùng các phần mềm quản lý database nếu chưa quen với command line hay terminal. Có khá nhiều phần mềm nhưng tôi đề xuất Table Plus.
🖇️ 1. Inner Join
Inner Join là một phép toán tương tự như phép giao (intersection) trong tập hợp
Nó cho phép chúng ta chỉ lấy những bản ghi hợp lệ mà có giá trị liên quan trong cả hai bảng mà chúng ta muốn kết hợp. Bất kỳ bản ghi nào có giá trị NULL hoặc không có liên quan sẽ bị loại bỏ.
Có hai cách để thực hiện Inner Join: Explicit Inner Join và Implicit Inner Join. Kết quả của cả hai cách này là giống nhau, nhưng có một số khác biệt về cú pháp.
Explicit Inner Join
Cú pháp
Implicit Inner Join
Cú pháp
Ví dụ sử dụng
Bảng sách + Bảng tác giả
Sách SQL có giá trị author_id là NULL bị loại khỏi danh sách sách và george bị loại khỏi danh sách tác giả vì không có cuốn sách nào mà george được đăng ký là tác giả.
Bảng sách + Bảng tác giả + Bảng nhà xuất bản
Theo nguyên tắc tương tự, vì không có tác giả nào liên kết với nhà xuất bản moolcung, nó đã bị loại khỏi đầu ra.
Chỉ xuất các bản ghi có tên tác giả là jimmy từ bảng đã join
Khi phép chiếu được áp dụng
🔗 2. Outer Join
Outer Join là một phép toán kết hợp cho phép lấy tất cả các bản ghi từ một hoặc cả hai bảng dựa trên điều kiện liên quan. Outer Join được chia thành ba loại: Left Join, Right Join và Full Join.
Left/Right Join
Cho phép lấy tất cả các bản ghi từ bảng gốc (bảng trái hoặc bảng phải) và kết hợp chúng với các bản ghi tương ứng từ bảng liên quan. Nếu không có bản ghi tương ứng với bảng cơ sở trong bảng liên quan, các trường sẽ được điền bằng giá trị NULL.
Cú pháp
Ví dụ sử dụng
Sách + Tác giả / Bảng cơ sở: book
Sách SQL trong bảng cơ sở chứa đầy thông tin tác giả với NULL.
Sách + Tác giả + Nhà xuất bản / Bảng cơ sở: author
Các cột còn lại trong hàng tương ứng với tác giả george của bảng cơ sở được điền bằng NULL.
Áp dụng phép chiếu
Full Outer Join
Cho phép lấy tất cả các bản ghi từ cả hai bảng dựa trên điều kiện liên quan. Tuy nhiên, hỗ trợ Full Outer Join có thể khác nhau giữa các DBMS. Oracle hỗ trợ cú pháp Full Outer Join, nhưng Mysql/MariaDB không hỗ trợ nó, vì vậy phải sử dụng cú pháp UNION để thực hiện tương tự.