SQL Cơ bản - JOIN
Nếu bạn đã từng cảm thấy mơ hồ khi nghe đến từ “JOIN”, đừng lo! Chúng ta sẽ cùng nhau làm rõ điều đó một cách chi tiết nhất có thể.
1. JOIN là gì?
Trước khi lao vào cú pháp và ví dụ, hãy cùng nhau tìm hiểu xem JOIN là gì. JOIN trong SQL là một cách để kết hợp dữ liệu từ hai bảng trở lên. Khi bạn cần lấy thông tin từ nhiều bảng, JOIN chính là vị cứu tinh của bạn.
Hãy tưởng tượng bạn có một bảng KhachHang và một bảng DonHang. Bảng KhachHang chứa thông tin về khách hàng, trong khi bảng DonHang chứa thông tin về các đơn hàng mà họ đã đặt. Nếu bạn muốn biết khách hàng nào đã đặt đơn hàng nào, bạn sẽ cần dùng JOIN.
2. Các loại JOIN
Trong SQL, có nhiều loại JOIN khác nhau. Dưới đây là bốn loại JOIN phổ biến mà bạn nên biết:
2.1 INNER JOIN
INNER JOIN chỉ trả về các bản ghi mà có sự tương ứng giữa các bảng. Nếu một bên không có dữ liệu phù hợp, nó sẽ không xuất hiện trong kết quả.
Cú pháp:
1
2
3
4
SELECT *
FROM BangA
INNER JOIN BangB
ON BangA.khoa_chinh = BangB.khoa_ngoai;
Giả sử bạn có bảng KhachHang và bảng DonHang, bạn có thể sử dụng INNER JOIN để tìm các đơn hàng đã được đặt bởi khách hàng.
1
2
3
SELECT KhachHang.ten, DonHang.madonk
FROM KhachHang
INNER JOIN DonHang ON KhachHang.id = DonHang.khachhang_id;
2.2 LEFT JOIN
LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải. Nếu không có sự phù hợp, giá trị từ bảng bên phải sẽ là NULL.
Cú pháp:
1
2
3
4
SELECT *
FROM BangA
LEFT JOIN BangB
ON BangA.khoa_chinh = BangB.khoa_ngoai;
Sử dụng LEFT JOIN để tìm tất cả khách hàng và các đơn hàng của họ, kể cả những khách hàng chưa đặt hàng.
1
2
3
SELECT KhachHang.ten, DonHang.madonk
FROM KhachHang
LEFT JOIN DonHang ON KhachHang.id = DonHang.khachhang_id;
2.3 RIGHT JOIN
RIGHT JOIN ngược lại với LEFT JOIN, nó sẽ trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái.
Cú pháp:
1
2
3
4
SELECT *
FROM BangA
RIGHT JOIN BangB
ON BangA.khoa_chinh = BangB.khoa_ngoai;
Giả sử bạn muốn biết tất cả các đơn hàng và khách hàng tương ứng (bao gồm cả đơn hàng không có khách hàng).
1
2
3
SELECT KhachHang.ten, DonHang.madonk
FROM KhachHang
RIGHT JOIN DonHang ON KhachHang.id = DonHang.khachhang_id;
2.4 FULL JOIN
FULL JOIN trả về tất cả các bản ghi khi có sự tương ứng trong một trong hai bảng. Nếu không có sự phù hợp, giá trị sẽ là NULL. và các bản ghi phù hợp từ bảng bên trái.
Cú pháp:
1
2
3
4
SELECT *
FROM BangA
FULL JOIN BangB
ON BangA.khoa_chinh = BangB.khoa_ngoai;
Nếu bạn muốn lấy tất cả khách hàng và tất cả đơn hàng, bạn có thể dùng FULL JOIN.
1
2
3
SELECT KhachHang.ten, DonHang.madonk
FROM KhachHang
FULL JOIN DonHang ON KhachHang.id = DonHang.khachhang_id;
3. Một số lưu ý khi sử dụng JOIN
-
Hiệu suất: Sử dụng
JOINcó thể ảnh hưởng đến hiệu suất truy vấn, đặc biệt là khi bạn làm việc với các bảng lớn. Hãy nhớ kiểm tra kế hoạch thực thi để tối ưu hóa. -
Tránh dùng SELECT: Khi sử dụng
JOIN, tránh dùngSELECT *. Thay vào đó, hãy chỉ định các cột bạn cần để tránh lãng phí tài nguyên. -
Aliases: Sử dụng bí danh
(aliases)để làm cho câu truy vấn của bạn dễ đọc hơn.
Kết luận
Vậy là chúng ta đã đi qua tất cả những điều cần biết về SQL JOIN. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về JOIN và cách sử dụng chúng trong truy vấn SQL của mình. Hãy nhớ rằng, khi làm việc với dữ liệu, SQL JOIN là một trong những công cụ mạnh mẽ nhất mà bạn có thể sử dụng.
Cuối cùng, hãy luôn giữ tinh thần vui vẻ khi làm việc với SQL, vì nó không chỉ là công việc mà còn là một nghệ thuật. Chúc bạn có những truy vấn thật thú vị và hiệu quả!
Bài viết mang tính chất “ghi chú, lưu trữ, chia sẻ và phi lợi nhuận”.
Nếu bạn thấy hữu ích, đừng quên chia sẻ với bạn bè và đồng nghiệp của mình nhé!
Happy coding! 😎 👍🏻 🚀 🔥