icantech
Lập trình chung
1379
18/12/2023

Tất cả những gì bạn cần biết về SQL join

Trong cơ sở dữ liệu quan hệ, tất cả thông tin chỉ nên có một lần và thông tin được tách thành các bảng khác nhau có liên quan với nhau. Nếu muốn tập hợp các thông tin này lại để phân tích dữ liệu chúng ta có thể nối tất cả dữ liệu (hoặc một số dữ liệu) lại với nhau. Trong trường hợp này, chúng ta sẽ sử dụng SQL join. Cùng ICANTECH tìm hiểu trong bài viết dưới đây nhé!

1. Join trong SQL là gì?

Toán tử JOIN cho phép chúng ta kết hợp thông tin liên quan theo nhiều cách khác nhau. Có nhiều loại kết nối khác nhau, được chia thành hai loại chính – kết nối INNER và kết nối OUTER.

Sự khác biệt lớn nhất giữa INNER JOIN và OUTER JOIN là phép nối bên trong sẽ chỉ giữ thông tin từ cả hai bảng có liên quan với nhau (trong bảng kết quả). Mặt khác, Outer Join cũng sẽ giữ thông tin không liên quan đến bảng khác trong bảng kết quả.

2. Các loại join trong SQL

Dưới đây là một số câu lệnh join trong SQL:

2.1. Cách sử dụng INNER JOIN trong SQL

Phép nối bên trong sẽ chỉ giữ lại thông tin từ hai bảng đã nối có liên quan. Tưởng tượng hai bảng dưới dạng sơ đồ Venn, bảng kết quả từ INNER JOIN sẽ là phần được đánh dấu màu xanh lục bên dưới nơi chúng chồng lên nhau:

sql-join

Cú pháp inner join:

SELECT * FROM table1

    JOIN table2

    ON relation;

2.2. Cách sử dụng OUTER JOIN trong SQL

Nếu chúng ta muốn giữ lại tất cả dữ liệu chứ không chỉ dữ liệu liên quan với nhau, chúng ta có thể sử dụng phép nối OUTER.

Có ba loại Outer join: LEFT JOIN, RIGHT JOIN, và FULL JOIN. Sự khác biệt của cả ba loại này đều liên quan đến những dữ liệu không liên quan mà chúng lưu giữ - có thể từ bảng đầu tiên, từ bảng thứ hai hoặc từ cả hai bảng. Các ô không có dữ liệu cần điền sẽ có giá trị NULL.

Lưu ý: LEFT JOIN được triển khai phổ biến nhất trong tất cả các phiên bản SQL. Nhưng đây không phải là trường hợp của RIGHT JOIN và FULL JOIN, vốn không được triển khai trong các phiên bản SQL khác nhau. Dưới đây là cách lệnh join trong SQL:

2.2.1. Left join trong SQL

LEFT OUTER JOIN, hay đơn giản là Left Join, sẽ giữ dữ liệu không liên quan từ bảng bên trái (đầu tiên).

Bạn có thể tưởng tượng bằng cách sử dụng sơ đồ Venn có hai vòng tròn, với bảng kết quả là phần được đánh dấu màu xanh lục bao gồm cả phần chung/chồng chéo và phần còn lại của vòng tròn bên trái.

sql-join

Cú pháp outer join:

SELECT columns

  FROM table1

  LEFT JOIN table2

  ON relation;

2.2.2. Right Outer Join trong SQL

Right Outer Join hay đơn giản là Right Join, sẽ giữ dữ liệu trong bảng thứ hai không liên quan đến bảng đầu tiên.

Bạn có thể tưởng tượng nó bằng sơ đồ Venn có hai vòng tròn, với bảng kết quả là phần được đánh dấu màu xanh lục bao gồm cả phần chồng lên nhau và phần còn lại của vòng tròn bên phải.

sql-join

Cú pháp:

SELECT columns

  FROM table1

  RIGHT JOIN table2

  ON relation;

2.2.3. Full Outer Join trong SQL

Bạn có thể coi FULL OUTER JOIN là sự kết hợp của Left Join và Right Join. Full Outer sẽ giữ tất cả các hàng từ cả hai bảng và dữ liệu còn thiếu sẽ được điền bằng NULL.

Bạn có thể tưởng tượng bằng cách sử dụng sơ đồ Venn có hai vòng tròn, với bảng kết quả là phần được đánh dấu màu xanh lục bao gồm mọi thứ: phần chồng lên nhau, vòng tròn bên trái và vòng tròn bên phải.

sql-join

Cú pháp:

SELECT columns

  FROM table1

  FULL JOIN table2

  ON relation;

3. Ví dụ về toán tử JOIN trong SQL

Một cơ sở dữ liệu cho một phòng khám thú y có thể có một bàn dành cho vật nuôi và một bàn dành cho chủ sở hữu. Vì chủ sở hữu có thể có nhiều thú cưng nên bảng thú cưng sẽ có cột owner_id trỏ đến bảng chủ sở hữu.

sql-join

Bạn có thể sử dụng truy vấn đơn giản để lấy một bảng có tên thú cưng và tên chủ sở hữu cạnh nhau. Hãy thực hiện điều đó với tất cả các toán tử JOIN khác nhau.

4. Ví dụ SQL INNER JOIN

Nối tiếp ví dụ trên, trước tiên hãy sử dụng JOIN.

Trong trường hợp này, chúng ta sẽ chọn SELECT cột name trong bảng pets (và đổi tên nó pet_name). Sau đó, chúng ta sẽ chọn cột name từ bảng owners và đổi tên nó owner. Nó sẽ trông như thế này: SELECT pets.name AS pet_name, owners.name AS owner.

Bạn sẽ sử dụng FROM để nói rằng các cột đến từ bảng pets và JOIN để nối nó với bảng owners bằng cú pháp sau: FROM pets JOIN owner.

Và cuối cùng chúng ta sẽ nối hai hàng lại với nhau khi cột owner_id trong bảng pets bằng cột id trong bảng owner có ON pets.owner_id = owners.id.

Kết quả:

SELECT pets.name AS pet_name, owners.name AS owner

  FROM pets

  JOIN owners

  ON pets.owner_id = owners.id;

Bạn sẽ nhận được một bảng như bên dưới, trong đó chỉ bao gồm những thú cưng được kết nối với chủ sở hữu và những người chủ được kết nối với thú cưng.
sql-join

Trong cơ sở dữ liệu quan hệ, tất cả dữ liệu chỉ được ghi một lần. Để phân tích dữ liệu này, bạn cần một cái gì đó để nối các dữ liệu liên quan lại với nhau.

5. Lời Kết

Như vậy, ICANTECH đã cùng bạn tìm hiểu về SQL join cũng như các kiến thức tổng quan hàm join trong SQL. Hi vọng bạn sẽ ứng dụng các kiến thức trên vào chương trình lập trình hiệu quả. 

Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình dưới đây tại ICANTECH nhé

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình chung

Bài tương tự