MySQL Joins

Giới thiệu về MySQL Joins

MySQL Joins là một kỹ thuật trong cơ sở dữ liệu cho phép chúng ta kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên một điều kiện cụ thể. Việc sử dụng Joins giúp tối ưu hoá việc truy xuất và phân tích dữ liệu, từ đó mang lại những cái nhìn sâu sắc hơn từ cơ sở dữ liệu.

Các loại Joins trong MySQL

MySQL hỗ trợ nhiều loại Join khác nhau, bao gồm:

  • INNER JOIN: Kết hợp các bản ghi từ hai bảng mà có điều kiện khớp nhau.
  • LEFT JOIN (hay LEFT OUTER JOIN): Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải. Nếu không có bản ghi khớp, kết quả sẽ có giá trị NULL từ bảng bên phải.
  • RIGHT JOIN (hay RIGHT OUTER JOIN): Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái. Nếu không có bản ghi khớp, kết quả sẽ có giá trị NULL từ bảng bên trái.
  • FULL JOIN (hay FULL OUTER JOIN): Trả về tất cả các bản ghi khi có ít nhất một bản ghi khớp từ cả hai bảng. (Lưu ý: MySQL không hỗ trợ FULL JOIN trực tiếp nhưng có thể thực hiện bằng cách kết hợp LEFT JOIN và RIGHT JOIN).
  • CROSS JOIN: Trả về积 tổng số kết hợp giữa các bản ghi của hai bảng mà không có điều kiện khớp.

Cú pháp cơ bản của MySQL Joins

INNER JOIN

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

LEFT JOIN

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

RIGHT JOIN

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

CROSS JOIN

SELECT columns
FROM table1
CROSS JOIN table2;

Ví dụ minh họa

Giả sử chúng ta có hai bảng: CustomersOrders.

Customers:
+----+----------+
| ID | Name     |
+----+----------+
| 1  | Alice    |
| 2  | Bob      |
| 3  | Charlie  |
+----+----------+

Orders:
+----+---------+----------+
| ID | Product | CustomerID|
+----+---------+----------+
| 1  | Laptop  | 1        |
| 2  | Phone   | 1        |
| 3  | Tablet   | 2        |
+----+---------+----------+

Inner Join

SELECT Customers.Name, Orders.Product
FROM Customers
INNER JOIN Orders ON Customers.ID = Orders.CustomerID;

Kết quả:

+-------+---------+
| Name  | Product |
+-------+---------+
| Alice | Laptop  |
| Alice | Phone   |
| Bob   | Tablet  |
+-------+---------+

Left Join

SELECT Customers.Name, Orders.Product
FROM Customers
LEFT JOIN Orders ON Customers.ID = Orders.CustomerID;

Kết quả:

+-------+---------+
| Name  | Product |
+-------+---------+
| Alice | Laptop  |
| Alice | Phone   |
| Bob   | Tablet  |
| Charlie| NULL   |
+-------+---------+

Right Join

SELECT Customers.Name, Orders.Product
FROM Customers
RIGHT JOIN Orders ON Customers.ID = Orders.CustomerID;

Kết quả:

+-------+---------+
| Name  | Product |
+-------+---------+
| Alice | Laptop  |
| Alice | Phone   |
| Bob   | Tablet  |
+-------+---------+

CROSS JOIN

SELECT Customers.Name, Orders.Product
FROM Customers
CROSS JOIN Orders;

Kết quả:

+-------+---------+
| Name  | Product |
+-------+---------+
| Alice | Laptop  |
| Alice | Phone   |
| Alice | Tablet  |
| Bob   | Laptop  |
| Bob   | Phone   |
| Bob   | Tablet  |
| Charlie| Laptop  |
| Charlie| Phone   |
| Charlie| Tablet  |
+-------+---------+

Kết luận

MySQL Joins là công cụ mạnh mẽ giúp kết hợp và truy xuất dữ liệu từ nhiều bảng khác nhau. Bằng cách nắm vững các loại Join và cú pháp, bạn có thể tối ưu hóa việc phân tích dữ liệu trong các ứng dụng của mình. Hãy thực hành thường xuyên để trở thành một lập trình viên giỏi hơn!