Chào mừng bạn đến với Vimentor!

Hỏi đáp
Đăng ký

02. JOIN trong SQL

Khái niệm JOIN trong SQL

Giống như tên của của nó, JOIN có nghĩa là kết hợp những thứ gì đó. Ở trong SQL thì JOIN là kết hợp nội dung của hai hay nhiều hơn các bảng dữ liệu.

SQL chuẩn ANSI đưa ra các loại JOIN sau:

  • Inner JOIN
  • Left outer JOIN
  • Right outer JOIN
  • Full outer JOIN
  • Cross JOIN

Tại sao lại phải sử dụng JOIN trong SQL?

Khi bạn muốn truy cập hai hay nhiều bảng trong một lệnh SELECT.

Khi bạn muốn kết hợp dữ liệu của nhiều bảng thành một bảng và sau khi JOIN bạn có thể thao tác với các bảng đã JOIN như một bảng đơn.

Việc kết hợp hai hay nhiều bảng phụ thuộc vào trường dữ liệu chung giữa hai bảng.

Inner JOIN là kỹ thuật đơn giản và hay được sử dụng nhất trong SQL. Khi ta không nhắc gì đến loại của JOIN thì ta có thể coi đó là JOIN thông thường hoặc inner JOIN.

Cách sử dụng kỹ thuật JOIN (hay inner JOIN)

Xét ví dụ triển khai quá trình JOIN trong SQL, ta có hai bảng dữ liệu chứa các bản ghi của các nhân viên và bảng lương của họ trong một bộ phận.

Bảng "Nhan_vien":

ID

Ten

Tuoi

Dia_chi

Tro_cap

1

Yen

22

Ha Noi

200

2

Hai

32

Ha Noi

200

3

Tran

31

Hai Phong

200

4

Van

34

Ha Noi

200

5

Tuyen

20

Hai Phong

200

Bảng "Luong":

ID

Ngay

Ma_nhan_vien

Luong

202

27/08/2017

1

800

203

28/08/2017

2

900

302

27/08/2017

5

1500

Các bạn hãy xem kết quả của lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n, Luong l 

WHERE n.ID =l.Ma_nhan_vien;

Như bạn thấy ở hình trên, một bảng dữ liệu mới được tạo ra dựa trên dữ liệu của hai bảng "Nhan_vien" và "Luong".

Câu lệnh trong ví dụ trên sẽ có chung kết quả với các câu lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n INNER JOIN Luong l 

WHERE n.ID =l.Ma_nhan_vien;

Hoặc

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n INNER JOIN Luong l 

ON n.ID =l.Ma_nhan_vien;

Khái niệm outer JOIN trong SQL

Outer Join là cách dữ liệu của tất cả các bảng được kết hợp lại với nhau cho dù là chúng có điểm chung nào hay không.

Chú ý: Các khái niệm JOIN trong SQL chúng tôi không sử dụng những từ tiếng việt, bởi vì các khái niệm này có liên quan tới nội dung của các câu lệnh của chúng.

Xét hai bảng dữ liệu T1 và T2 lần lượt như sau:

T1C

1

2

3

4

 

T2C

3

4

5

6

Outer JOIN bao gồm các loại:

Full outer JOIN: Sẽ tạo ra sự hợp nhất nội dung của các bảng. Tức là nó sẽ tạo ra một bảng tạm mà chứa nội dung của tất cả các bảng được kết hợp.

Giả sử ta muốn full outer JOIN hai bảng dữ liệu T1 và T2 ở trên với câu lệnh:

SELECT  * FROM T1 FULL OUTER JOIN T2 ON T1.T1C = T2.T2C

Kết quả thu được bởi câu lệnh trên là một bảng tạm có dạng như sau:

T1C

T2C

1

NULL

2

NULL

3

3

4

4

NULL

5

NULL

6

Left outer JOIN (hay left JOIN): Sẽ trả về tất cả các bản ghi (các hàng)  của bảng nằm bên trái phép JOIN (Ví dụ khi A <JOIN> B thì A là bảng nằm phía bên trái, và B là bảng nằm phía bên phải) và các giá trị trùng khớp của bảng bên phải. Nếu không có dữ liệu trùng khớp giữa hai bảng, khi đó giá trị NULL sẽ được trả về.

Right outer JOIN (hay right JOIN): Sẽ trả về tất cả các hàng của bảng nằm bên phải phép JOIN được kết hợp với các hàng trùng khớp của bảng bên trái. Nếu không có cột nào trùng khớp trong bảng bên trái. Kết quả trả về sẽ là giá trị NULL

Để tìm hiểu kĩ hơn về left JOIN và right JOIN bạn có thể tìm hiểu ở bài sau.

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải