Bài MySQL 22: Lệnh JOIN trong MySQL

0
365

Xin chào các bạn, trong bài học ngày hôm nay mình sẽ hướng dẫn các bạn sử dụng câu lệnh JOIN trong MySQL để để truy vấn dữ liệu từ nhiều bảng.

Giới thiệu

Một cơ sở dữ liệu quan hệ bao gồm nhiều bảng liên kết với nhau bằng cách sử dụng các cột chung hay còn được gọi là cột khóa ngoại.

Ví dụ: trong cơ sở dữ liệu chúng ta có các bảng ordersorderdetails được liên kết bằng cách sử dụng cột orderNumber.

Để nhận dữ liệu của một đơn đặt hàng hoàn chỉnh thì bạn cần phải truy vấn dữ liệu từ cả hai bảng ordersorderditals. Và đó chính là lý do tại sao chúng ta cần sử dụng đến câu lệnh JOIN.

Lệnh JOIN là một phương thức liên kết dữ liệu giữa một hoặc nhiều bảng dựa trên các giá trị của cột chung giữa các bảng.

MySQL hỗ trợ các kiểu JOIN sau:

  • Cross join
  • Inner join
  • Left join
  • Right join

Để nối các bảng lại với nhau, bạn sử dụng các câu lệnh CROSS JOIN, INNER JOIN, LEFT JOIN hoặc RIGHT JOIN cho kiểu kết hợp tương ứng. Câu lệnh JOIN thường được sử dụng trong câu lệnh SELECT xuất hiện sau mệnh đề FROM.

Để các bạn có thể hiểu hơn về các kiểu JOIN thì bây giờ chúng ta sẽ đi vào nội dung chi tiết của từng loại nhé.

CROSS JOIN

CROSS JOIN tạo kết quả tích Descartes của các hàng từ nhiều bảng. Giả sử, bạn join các bảng t1 và t2 bằng cách sử dụng lệnh CROSS JOIN, tập kết quả trả về sẽ bao gồm các hàng từ bảng t1 với các hàng trong bảng t2.

Ví dụ:

kết quả trả về là:

INNER JOIN

Để tạo một INNER JOIN thì bạn cần một điều kiện được gọi là  join-predicate. Một INNER JOIN yêu cầu các hàng trong hai bảng được nối với nhau để có các giá trị cột phù hợp. INNER JOIN tạo ra tập kết quả bằng cách kết hợp các giá trị cột của hai bảng được nối dựa trên join-predicate.

Để nối hai bảng, INNER JOIN sẽ so sánh từng hàng trong bảng đầu tiên với mỗi hàng trong bảng thứ hai để tìm các hàng thỏa mãn  join-predicate. Bất cứ khi nào join-predicate được thỏa mãn bằng cách khớp các giá trị không NULL, các giá trị cột cho mỗi cặp hàng phù hợp của hai bảng được trả về trong tập kết quả.

Câu lệnh sau sử dụng lệnh INNER JOIN để nối các bảng t1 và t2:

kết quả trả về là:

LEFT JOIN

Cũng giống như lệnh INNER JOIN, một LEFT JOIN cũng yêu cầu một join-predicate.

Tuy nhiên một JOIN LEFT sẽ trả về tất cả các hàng trong bảng bên trái bao gồm các hàng thỏa mãn join-predicate và các hàng không có. Đối với các hàng không khớp với join-predicate, giá trị NULL sẽ xuất hiện trong các cột của bảng bên phải trong tập kết quả.

Câu lệnh sau sử dụng mệnh đề LEFT JOIN để nối các bảng t1 và t2:

kết quả trả về là:

RIGHT JOIN

RIGHT JOIN tương tự như LEFT JOIN ngoại trừ việc xử lý các bảng sẽ ngược lại. Đối với RIGHT JOIN, mỗi hàng từ bảng bên phải (t2) sẽ xuất hiện trong tập kết quả. Đối với các hàng trong bảng bên phải không có các hàng phù hợp trong bảng bên trái (t1), giá trị NULL sẽ xuất hiện cho các cột trong bảng bên trái (t1).

Câu lệnh sau nối các bảng t1 và t2 bằng RIGHT JOIN:

kết quả trả về là:

Kết luận

Như vậy trong bài học ngày hôm nay mình đã hướng dẫn các bạn sử dụng lệnh JOIN để nối các bảng lại với nhau. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về câu lệnh GROUP BY trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây