- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Cơ bản về SQL
- Học SQL cơ bản và nâng cao
- SQL là gì
- Các khái niệm RDBMS trong SQL
- RDBMS Database trong SQL
- Cú pháp SQL cơ bản
- Kiểu dữ liệu trong SQL
- Toán tử trong SQL
- Biểu thức trong SQL
- SQL Database
- Lệnh CREATE DATABASE trong SQL
- Lệnh DROP Database trong SQL
- Lệnh SELECT DATABASE trong SQL
- Lệnh RENAME DATABASE trong SQL
- SQL Table
- CREATE Table trong SQL - Tạo bảng trong SQL
- Lệnh DROP Table trong SQL
- DELETE trong SQL
- Lệnh RENAME Table trong SQL
- Lệnh TRUNCATE TABLE trong SQL
- Lệnh ALTER TABLE trong SQL
- Mô phỏng bảng trong SQL
- Bảng tạm (Temporary Table) trong SQL
- Nhóm lệnh thao tác cơ bản
- UPDATE trong SQL
- Truy vấn INSERT trong SQL
- Truy vấn SELECT trong SQL
- Mệnh đề ORDER BY trong SQL
- Mệnh đề GROUP BY trong SQL
- Từ khóa DISTINCT trong SQL
- Sắp xếp kết quả trong SQL
- Mệnh đề trong SQL
- Mệnh đề WHERE trong SQL
- Toán tử liên hợp AND và OR trong SQL
- Mệnh đề With trong SQL
- Mệnh đề LIKE trong SQL
- Mệnh đề TOP, LIMIT, ROWNUM trong SQL
- Hoạt động SQL nâng cao
- Mệnh đề UNION trong SQL
- Giá trị NULL trong SQL
- Alias trong SQL
- Chỉ mục (Index) trong SQL
- Sử dụng View trong SQL
- Mệnh đề HAVING trong SQL
- Transaction trong SQL
- Toán tử wildcard trong SQL
- Truy vấn con trong SQL
- Sử dụng Sequence trong SQL
- Xử lý bản sao trong SQL (DISTINCT)
- Injection trong SQL
- Ràng buộc trong SQL
- Ràng buộc (Constraint) trong SQL
- Ràng buộc NOT NULL trong SQL
- Ràng buộc DEFAULT trong SQL
- Ràng buộc UNIQUE trong SQL
- Ràng buộc PRIMARY KEY trong SQL
- Ràng buộc FOREIGN KEY trong SQL
- Ràng buộc CHECK trong SQL
- Ràng buộc INDEX trong SQL
- SQL Join
- Mệnh đề JOINS trong SQL
- INNER JOIN trong SQL
- LEFT JOIN trong SQL
- RIGHT JOIN trong SQL
- FULL JOIN trong SQL
- SELF JOIN trong SQL
- CARTESIAN JOIN hoặc CROSS JOIN trong SQL
- Hàm trong SQL
- Hàm hữu ích trong SQL
- Hàm xử lý Date và Time trong SQL
- Hàm xử lý số trong SQL
- Hàm xử lý chuỗi trong SQL
- Tài liệu SQL tham khảo
- First Normal Form (1NF) trong SQL
- Second Normal Form (2NF) trong SQL
- Third Normal Form (3NF) trong SQL
- Tuning DB trong SQL
- Tài liệu SQL tham khảo
Mệnh đề Joins trong SQL được sử dụng để kết hợp các bản ghi từ hai hoặc nhiều bảng trong một Database. Một JOIN là một phương tiện để kết hợp các trường từ hai bảng bằng việc sử dụng các giá trị chung của mỗi bảng.
Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4000000 | | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+---------+-----+-----------+---------+
Bảng MUONSACH có các bản ghi sau:
+-----+---------------------+-------------+--------+ |STT | NGAY | SINHVIEN_ID | SOTIEN | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 320 | | 100 | 2009-10-08 00:00:00 | 3 | 250 | | 101 | 2009-11-20 00:00:00 | 2 | 280 | | 103 | 2008-05-20 00:00:00 | 4 | 290 | +-----+---------------------+-------------+--------+
Bây giờ, chúng ta kết hợp hai bảng này trong lệnh SELECT như sau:
SQL> SELECT ID, TEN, TUOI, SOTIEN FROM SINHVIEN, MUONSACH WHERE SINHVIEN.ID = MUONSACH.SINHVIEN_ID;
Ví dụ trên sẽ cho kết quả:
+----+----------+-----+--------+ | ID | TEN | TUOI | SOTIEN | +----+----------+-----+--------+ | 3 | Thanh | 18 | 320 | | 3 | Thanh | 18 | 250 | | 2 | Viet | 19 | 280 | | 4 | Nhan | 19 | 290 | +----+----------+-----+--------+
Ở đây, điều đáng chú ý là, JOIN được thực hiện trong mệnh đề WHERE. Một số toán tử có thể được sử dụng để kết hợp các bảng là: =, <, >, <>, <=, >=, !=, BETWEEN, LIKE, và NOT; tất cả toán tử này có thể được sử dụng để kết hợp các bảng. Tuy nhiên, toán tử được sử dụng phổ biến nhất là dấu bằng (=).
Các loại JOIN trong SQL
Trong SQL, có một số loại JOIN có sẵn là:
-
INNER JOIN trong SQL: Trả về các hàng khi có một so khớp (match) trong các bảng.
-
LEFT JOIN trong SQL: Trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có so khớp nào trong bảng bên phải.
-
RIGHT JOIN trong SQL: Trả về tất cả các hàng từ bảng bên phải, ngay cả khi không có so khớp nào trong bảng bên trái.
-
FULL JOIN trong SQL: Trả về các hàng khi có một so khớp ở một trong các bảng.
-
SELF JOIN trong SQL: Được sử dụng để kết hợp một bảng với chính nó, khi nếu table đó là hai bảng dữ liệu, thay tên tạm thời cho ít nhất một bảng trong lệnh SQL.
-
CARTESIAN JOIN trong SQL: Trả về tích Đề-các của tập hợp các bản ghi từ hai hoặc nhiều bảng kết hợp.
MySQL hỗ trợ nhiều loại JOIN để kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên các điều kiện cụ thể. Dưới đây là các loại JOIN chính mà MySQL hỗ trợ:
- INNER JOIN
- LEFT JOIN (hoặc LEFT OUTER JOIN)
- RIGHT JOIN (hoặc RIGHT OUTER JOIN)
- CROSS JOIN
- NATURAL JOIN
- SELF JOIN
- STRAIGHT JOIN
1. INNER JOIN
INNER JOIN trả về các hàng khi có ít nhất một cặp cột khớp nhau trong cả hai bảng. Đây là loại JOIN phổ biến nhất.
Ví dụ:
SELECT students.id, students.name, courses.course
FROM students
INNER JOIN courses ON students.id = courses.student_id;
2. LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải. Nếu không có kết quả khớp, các giá trị của bảng bên phải sẽ là NULL.
Ví dụ:
SELECT students.id, students.name, courses.course
FROM students
LEFT JOIN courses ON students.id = courses.student_id;
3. RIGHT JOIN (RIGHT OUTER JOIN)
RIGHT JOIN trả về tất cả các hàng từ bảng bên phải và các hàng khớp từ bảng bên trái. Nếu không có kết quả khớp, các giá trị của bảng bên trái sẽ là NULL.
Ví dụ:
SELECT students.id, students.name, courses.course
FROM students
RIGHT JOIN courses ON students.id = courses.student_id;
4. CROSS JOIN
CROSS JOIN trả về tích Descartes của các hàng trong hai bảng. Kết quả của CROSS JOIN không phụ thuộc vào điều kiện JOIN.
Ví dụ:
SELECT students.name, courses.course
FROM students
CROSS JOIN courses;
5. NATURAL JOIN
NATURAL JOIN là một loại INNER JOIN đặc biệt, tự động liên kết các cột có cùng tên trong hai bảng. Nó loại bỏ các cột trùng lặp trong kết quả.
Ví dụ:
SELECT *
FROM students
NATURAL JOIN courses;
6. SELF JOIN
SELF JOIN là một loại JOIN trong đó bảng được JOIN với chính nó. Điều này có thể hữu ích khi bạn muốn so sánh các hàng trong cùng một bảng.
Ví dụ:
SELECT a.name AS name1, b.name AS name2
FROM students a
INNER JOIN students b ON a.id = b.id;
7. STRAIGHT JOIN
STRAIGHT JOIN là một loại JOIN giống như INNER JOIN, nhưng với một khác biệt quan trọng: MySQL sẽ đọc bảng bên trái trước, bất kể cách nào MySQL tối ưu hóa truy vấn.
Ví dụ:
SELECT students.id, students.name, courses.course
FROM students
STRAIGHT JOIN courses ON students.id = courses.student_id;
Kết luận
MySQL hỗ trợ nhiều loại JOIN để bạn có thể linh hoạt trong việc truy vấn và kết hợp dữ liệu từ các bảng khác nhau. Hiểu rõ cách mỗi loại JOIN hoạt động sẽ giúp bạn viết các truy vấn SQL hiệu quả hơn và tận dụng tối đa các khả năng của MySQL.
Bình luận (0)