Lệnh join 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 ý:Lệnh Join rất 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
Tham Gia Chéo là một hình thức Tham Gia đơn giản nhất nó khớp với từng hàng từ một bảng cơ sở dữ liệu với tất cả các hà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 này để thực hiện
Left Join 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`
Xem thêm: Tìm hiểu về mệnh đề GROUP BY và HAVING trong MySQL
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, WHERE và thậm chí các chức năng như SUM , AVG , v.v.
Bạn có thể hiểu tại sao chúng ta sử dụng “Join” khi chúng ta thực hiện cùng một tác vụ chạy truy vấn rồi chứ. Đặc biệt nếu bạn có một số kinh nghiệm về lập trình cơ sở dữ liệu, bạn có thể chạy từng truy vấn một, sử dụng kết quả của từng truy vấn liên tiếp. Nhưng 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. Mặt khác, MySQL có thể đạt được hiệu năng tốt hơn. 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 kiểu lệnh Join trong MySQL. Để học bài bản về MySQL, hãy đăng ký ngay khóa học MySQL cùng Gitiho nhé!
Gitiho chúc bạn thành công!
Nội dung liên quan