Giới thiệu
THAM GIA trong MySQL được sử dụng để kết hợp thông tin nằm trong nhiều bảng và truy xuất thông tin đó trong một kết quả duy nhất
Cơ sở dữ liệu quan hệ chứa một số bảng có liên quan logic được liên kết với nhau và mỗi bảng chứa dữ liệu duy nhất hoặc dữ liệu chung. THAM GIA giúp truy xuất dữ liệu từ các bảng dựa trên một trường chung giữa chúng
Trong hướng dẫn này, bạn sẽ tìm hiểu MySQL THAM GIA là gì và cách sử dụng chúng
điều kiện tiên quyết
- Máy chủ MySQL và vỏ MySQL được cài đặt
- Tài khoản người dùng MySQL có quyền root
THAM GIA trong MySQL là gì?
Câu lệnh
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
6 trong MySQL là một phương thức liên kết dữ liệu giữa một số bảng trong cơ sở dữ liệu dựa trên các giá trị của cột chung trong các bảng đóCác giá trị phổ biến thường có cùng tên cột và kiểu dữ liệu có trong các bảng được nối. Các cột chung đó được gọi là khóa tham gia hoặc khóa chung
THAM GIA có thể được sử dụng trong các câu lệnh
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
7, SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
8 và SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
9Ví dụ THAM GIA MySQL
Trong hướng dẫn này, chúng tôi sẽ sử dụng một cơ sở dữ liệu ví dụ với hai bảng. danh sách khách hàng và thanh toán. Mục tiêu là làm rõ khái niệm về phép nối bằng cách hiển thị kết quả của từng loại phép nối trong một ví dụ
- Bảng customer_list là danh sách những người mà chúng ta sẽ gọi là khách hàng. Nó chứa thông tin về từng khách hàng cũng như số dư tài khoản của họ. Mỗi khách hàng có một ID duy nhất
- Bảng thanh toán chứa thông tin về các khoản tiền gửi và rút tiền của từng khách hàng được kết nối với ID khách hàng
Cột chung của hai bảng này là ID khách hàng và chúng tôi sẽ sử dụng nó làm điều kiện trong THAM GIA
Các loại THAM GIA MySQL
Có một số loại THAM GIA MySQL và mỗi loại giúp nhận được các kết quả khác nhau khi tham gia các bảng
1. INNER JOIN – Kết quả trả về dữ liệu khớp từ cả hai bảng
2. LEFT OUTER JOIN – Kết quả từ bảng bên trái và dữ liệu phù hợp từ bảng bên phải
3. RIGHT OUTER JOIN – Kết quả từ bảng bên phải và dữ liệu phù hợp từ bảng bên trái
4. FULL OUTER JOIN – Kết quả từ cả hai bảng khi có dữ liệu khớp
5. THAM GIA CHÉO – Kết quả là sự kết hợp của mọi hàng từ các bảng đã tham gia
Các sơ đồ Venn sau đây biểu thị từng loại liên kết bằng đồ họa
Các kiểu nối khác nhau cho phép người dùng nhận được kết quả khi thông tin chỉ xuất hiện ở một trong các bảng đã nối
THAM GIA BÊN TRONG
Loại liên kết đơn giản nhất là
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
0. Kết quả SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
0 với một tập hợp các bản ghi đáp ứng điều kiện đã cho trong các bảng đã nối. Nó khớp từng hàng trong một bảng với mọi hàng trong các bảng khác và cho phép người dùng truy vấn các hàng chứa các cột từ cả hai bảngCú pháp của một
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
0 làSELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
INNER JOIN table2
ON table1.matching_column = table2.matching_column;
Cú pháp
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
2 biểu thị cột chung cho cả hai bảngSau câu lệnh
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
7, nếu một cột là duy nhất cho một bảng thì không cần chỉ định tên bảngVì
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
0 được coi là loại liên kết mặc định nên chỉ sử dụng câu lệnh SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
6 được chấp nhậnVí dụ
Trong ví dụ này,
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
6 là SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
7, trong khi SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
8 là SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
9. Cột chung cho cả hai bảng là CustomerIDTập hợp kết quả được trả về hiển thị danh sách khách hàng từ bảng customer_list và các khoản tiền gửi của những khách hàng đó, nằm trong bảng thanh toán
TRÁI NGOÀI THAM GIA
_______60 [hoặc
SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
1] trả về tất cả các bản ghi từ bảng ở phía bên trái của phép nối và các bản ghi phù hợp từ bảng ở phía bên phải của phép nối. Nếu có các hàng không có hàng phù hợp trên bảng bên phải, thì giá trị kết quả được hiển thị là NULLCú pháp của
SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
0 làSELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
Ví dụ
Trong ví dụ này, bảng bên trái là danh sách khách hàng, trong khi bảng bên phải là thanh toán. Tập kết quả trả về tất cả khách hàng từ bảng customer_list và kết quả khớp từ bảng thanh toán
Ở những nơi mà khách hàng không đặt cọc, giá trị được trả về được hiển thị là NULL
RIGHT NGOÀI THAM GIA
___63 [
SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
4] về cơ bản là đảo ngược của SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
0_______64 trả về tất cả các bản ghi từ bảng ở phía bên phải của phép nối và các bản ghi phù hợp từ bảng ở phía bên trái của phép nối. Nếu có các hàng không có hàng phù hợp trên bảng bên trái, thì giá trị kết quả được hiển thị là NULL
Cú pháp của
SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
3 làSELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
Ví dụ
Trong ví dụ này, kết quả trả về hiển thị bất kỳ khách hàng nào đã gửi tiền. Những khách hàng không gửi tiền không được hiển thị trong kết quả
THAM GIA NGOÀI ĐẦY ĐỦ
MySQL không hỗ trợ
SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
8. Để có kết quả tương đương, hãy sử dụng kết hợp của SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
1, SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
80 và SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
4, kết quả là kết hợp của bảng 1 và bảng 2, trả về tất cả các bản ghi từ cả hai bảng. Các cột chỉ tồn tại trong một bảng sẽ được hiển thị dưới dạng NULL trong bảng đối diệnCú pháp là
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
8Ví dụ
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
82 không loại trừ các bảng trùng lặp, đó là lý do tại sao chúng tôi sử dụng SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
80 để hiển thị sự kết hợp của hai bảng, bao gồm cả các bảng trùng lặp. Giá trị NULL được hiển thị khi không có dữ liệu phù hợp, tôi. e. , khi khách hàng không gửi tiền hoặc rút tiền hoặc không có ID khách hàngNếu bạn muốn loại trừ các hàng trùng lặp khỏi tập kết quả, hãy sử dụng câu lệnh
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
84 thay vì SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
80 để xóa các hàng trùng lặpTập hợp kết quả bao gồm tất cả các kết quả phù hợp, không bao gồm các hàng trùng lặp
THAM GIA CHÉO
_______186 [còn được gọi là THAM GIA CARTESIAN] nối từng hàng của một bảng với từng hàng của một bảng khác. ______186 xảy ra khi cột phù hợp hoặc điều kiện
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
88 không được chỉ định. Tập hợp kết quả của một ____189 liên kết là sản phẩm của số lượng hàng của các bảng đã tham giaSử dụng
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
86 khi bạn muốn kết hợp mọi hàng từ hai bảng. SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
86 hữu ích khi bạn muốn tạo kết hợp các mục, chẳng hạn như màu sắc hoặc kích thướcNếu điều kiện
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
88 được chỉ định, thì SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
86 hoạt động giống như một SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
0Cú pháp của
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
86 làSELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
4Ví dụ
Trong ví dụ này, mỗi bản ghi từ cột Tên khách hàng được nối với mỗi hàng từ cột Rút tiền. Sẽ không hợp lý khi sử dụng
SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
86 trong cơ sở dữ liệu như thế này, nhưng ví dụ minh họa kết quảTại sao THAM GIA hữu ích?
- Nó nhanh hơn. THAM GIA giúp truy xuất dữ liệu từ hai hoặc nhiều bảng cơ sở dữ liệu có liên quan trong một truy vấn. THAM GIA đặc biệt hữu ích vì nó nhanh hơn nhiều so với việc phải chạy từng truy vấn một để có cùng kết quả
- MySQL hoạt động tốt hơn. Một lợi ích khác của việc sử dụng THAM GIA là MySQL hoạt động tốt hơn vì nó sử dụng lập chỉ mục khi thực hiện các phép nối
- Sử dụng THAM GIA giúp giảm chi phí máy chủ. Bạn chỉ chạy một truy vấn duy nhất, dẫn đến hiệu suất tốt hơn và nhanh hơn
Phần kết luận
Bây giờ bạn đã biết tất cả các loại MySQL THAM GIA khác nhau và cách sử dụng chúng. Vui lòng thử nghiệm các loại liên kết khác nhau, vì nó sẽ rõ ràng hơn nhiều khi bạn đưa chúng vào sử dụng và xem kết quả cho ví dụ cơ sở dữ liệu của bạn