JOIN là một trong những câu lệnh quan trọng để kết hợp hai hay nhiều bảng khác nhau để tạo nên những bảng dữ liệu mới chứa những thông tin cần thiết. Chẳng hạn bạn muốn lấy thông tin từ nhiều bảng thì chúng ta sử dụng câu lệnh JOIN trong SQL.
Vậy định nghĩa, cách dùng của câu lệnh này như nào. Cùng tìm hiểu chi tiết trong bài viết này ngay nhé!
Lệnh Join SQL được sử dụng để tổng hợp những bản ghi với nhau từ 2 hoặc nhiều bảng dữ liệu dựa trên cột chung được sử dụng để kết nối.
Hàm Join trong SQL giúp lấy dữ liệu từ hai hoặc nhiều bảng cơ sở dữ liệu. Các bảng có liên kết với nhau bằng cách sử dụng khóa chính và khóa ngoài.
Lưu ý: Cách join nhiều bảng trong SQL thường khá phức tạp khi sử dụng . Để đơn giản và dễ hiểu, chúng ta sẽ sử dụng Cơ sở dữ liệu mới để thực hành mẫu như hình dưới đây:
Xem thêm: Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL
Cross Join là hình thức kết nối đơn giản nhất nhằm kết hợp mỗi hàng từ một bảng với tất cả các hàng từ bảng khác.
Nói cách khác, nó cung cấp cho chúng ta sự kết hợp của từng hàng của bảng đầu tiên với tất cả các bản ghi trong bảng thứ hai.
Giả sử chúng ta muốn có tất cả các hồ sơ thành viên đối với tất cả các bộ phim, chúng ta có thể làm như sau:
SELECT * FROM 'movies' CROSS JOIN 'members'
Chúng ta được kết quả như sau.
Inner Join là một lệnh Join được sử dụng để kết hợp các hàng từ cả hai bảng thỏa mãn điều kiện đã cho.
Giả sử, bạn muốn có được danh sách các thành viên đã thuê phim cùng với các tựa phim được họ thuê. Bạn chỉ có thể sử dụng Inner Join để thực hiện điều đó, kết quả từ cả hai bảng thỏa mãn với các điều kiện đã cho.
SELECT members.'first_name' , members.'last_name' , movies.'title' FROM members, movies
WHERE movies.'id' = members.'movie_id'
Xem thêm: Hướng dẫn cách phân biệt SQL Và MySQL
Chúng ta được kết quả như sau
Lưu ý kết quả trên cũng có thể được viết như sau để đạt được kết quả tương tự.
SELECT A.'first_name' , A.'last_name' , B.'title' FROM 'members'AS A INNER JOIN 'movies' AS B ON B.'id' = A.'movie_id'
Outer Join là lệnh Join sử dụng cho tất cả kết quả các bản ghi khớp từ cả hai bảng.
Nó có thể phát hiện các bản ghi không có kết quả khớp trong bảng đã tham gia. Nó cho giá trị NULL các bản ghi của bảng đã tham gia nếu không tìm thấy kết quả khớp.
Giả sử bây giờ bạn muốn có được tiêu đề của tất cả các bộ phim cùng với tên của các thành viên đã thuê chúng. Chúng ta có thể sử dụng lệnh Join hay còn gọi là LEFT OUTER JOIN trong SQL để thực hiện.
Hàm Left Join trong SQL cho kết quả tất cả các hàng từ bảng bên trái ngay cả khi không tìm thấy hàng phù hợp trong bảng bên phải. Trường hợp không tìm thấy kết quả phù hợp trong bảng bên phải, kết quả sẽ là Null.
SELECT A.'title' , B.'first_name' , B.'last_name' FROM 'movies' AS A LEFT JOIN 'members' AS B ON B.'movie_id' = A.'id'
Chạy đoạn mã, bạn có thể thấy rằng trong kết quả trả về được liệt kê bên dưới đối với phim không được thuê các trường tên thành viên đang có giá trị NULL. Điều đó có nghĩa là không có thành viên thuê bộ phim đó
Right Join trái ngược với Left Join. Right Join là lệnh Join cho tất cả kết quả các cột từ bảng bên phải ngay cả khi không tìm thấy hàng phù hợp trong bảng bên trái. Trường hợp không tìm thấy kết quả phù hợp trong bảng bên trái, kết quả là Null.
Ví dụ của chúng ta, giả sử rằng bạn cần lấy tên của các thành viên và phim do họ thuê. Bây giờ chúng ta có một vài thành viên mới chưa thuê bất kỳ bộ phim nào
SELECT A.'first_name' , A.'last_name', B.'title' FROM 'members' AS A RIGHT JOIN 'movies' AS B ON B.'id' = A.'movie_id'
Chạy script trên cho kết quả như sau.
Trong các ví dụ kết quả truy vấn với lệnh join ở trên, chúng ta đã sử dụng mệnh đề “ON” để khớp với các bản ghi giữa bảng.
Mệnh đề “Using” cũng có thể được sử dụng cho cùng một mục đích. Sự khác biệt là nó cần phải có tên giống hệt nhau giữa các cột trong cả hai bảng.
Trong bảng “movie” cho đến nay, chúng tôi đã sử dụng khóa chính của nó với tên “id”. Chúng tôi đã đề cập đến cùng trong bảng “members” với tên “movie_id”.
Hãy đổi tên trường “movie” kết hợp với “id” để có tên “movie_id”. Chúng ta làm như sau.
ALTER TABLE 'movies' CHANGE 'id' 'movie_id' INT( 11 ) NOT NULL AUTO_INCREMENT;
Tiếp theo, hãy sử dụng Using với ví dụ Left Join ở trên.
SELECT A.title, B.first_name, B.last_name
FROM movies AS A
LEFT JOIN members AS B USING (movie_id);
Ngoài việc sử dụng “On” và”Using” để kết hợp với Join bạn có thể sử dụng nhiều mệnh đề MySQL khác như GROUP BY trong SQL, WHERE trong SQL và thậm chí các chức năng như SUM , AVG, v.v.
Bằng cách sử dụng “Join”, bạn có thể hoàn thành công việc bằng cách chỉ sử dụng một truy vấn với bất kỳ tham số tìm kiếm nào. Chỉ cần sử dụng truy vấn duy nhất thay vì chạy nhiều truy vấn điều đó giúp chúng ta sẽ giảm được chi phí .
Thay vào đó, sử dụng nhiều truy vấn sẽ dẫn đến việc chuyển nhiều dữ liệu hơn giữa MySQL và các ứng dụng (phần mềm). Hơn nữa, nó đòi hỏi nhiều thao tác dữ liệu hơn trong ứng dụng.
Rõ ràng là chúng ta có thể đạt được hiệu suất ứng dụng và MySQL tốt hơn bằng cách sử dụng Lệnh Join.
Hy vọng rằng, qua bài viết trên, bạn đã có cái nhìn sâu và rõ hơn về lệnh Join và cách sử dụng các loại Join trong SQL. Để học bài bản về MySQL, hãy đăng ký ngay khóa học SQL cùng Gitiho nhé!
Gitiho chúc bạn thành công!
Khóa học giúp bạn làm chủ ngôn ngữ truy vấn dữ liệu phổ biến SQL từ cơ bản đến nâng cao. Từ đó có thể tự tin xây dựng, truy vấn, và tối ưu hóa các cơ sở dữ liệu phức tạp, hỗ trợ phân tích, làm báo cáo và ra quyết định kinh doanh một cách hiệu quả.
Đăng ký học thử để trải nghiệm ngay hôm nay!