- 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
- Học MySQL cơ bản và nâng cao
- Học MySQL cơ bản và nâng cao
- MySQL là gì
- Cài đặt MySQL
- Quản lý MySQL
- Cú pháp kết hợp MySQL và PHP
- Kết nối MySQL
- Tạo Database trong MySQL
- Xóa cơ sở dữ liệu trong MySQL
- Chọn cơ sở dữ liệu trong MySQL
- Kiểu dữ liệu trong MySQL
- Tạo bảng trong MySQL
- Xóa bảng trong MySQL
- Truy vấn INSERT trong MySQL
- Truy vấn SELECT trong MySQL
- Mệnh đề WHERE trong MySQL
- Truy vấn UPDATE trong MySQL
- Truy vấn DELETE trong MySQL
- Mệnh đề LIKE trong MySQL
- Mệnh đề ORDER BY trong MySQL
- Sử dụng JOIN trong MySQL
- Xử lý giá trị NULL trong MySQL
- Regexp trong MySQL
- Transaction trong MySQL
- Lệnh ALTER trong MySQL
- Chỉ mục (INDEX) trong MySQL
- Bảng tạm trong MySQL
- Mô phỏng bảng trong MySQL
- Lấy và sử dụng MySQL Metadata
- Sử dụng Sequence trong MySQL
- Xử lý bản sao trong MySQL
- Injection trong MySQL và SQL
- Export và Phương thức Backup trong MySQL
- Import và phương thức Recovery trong MySQL
- Mệnh đề GROUP BY trong MySQL
- Mệnh đề IN trong MySQL
- Mệnh đề BETWEEN trong MySQL
- Từ khóa UNION trong MySQL
- Hàm hữu ích trong MySQL
Tới chương này, chúng ta mới chỉ lấy dữ liệu từ một bảng tại một thời điểm. Điều này là khá tốt cho những tác vụ đơn giản, nhưng trong thực tiễn khi sử dụng MySQL, chúng ta thường cần lấy dữ liệu từ nhiều bảng trong một truy vấn đơn.
Bạn có thể sử dụng nhiều bảng trong truy vấn SQL đơn. Hoạt động Join trong MySQL có thể được hiểu như là việc ghim hai hoặc nhiều bảng vào trong một bảng đơn.
Bạn có thể sử dụng JOIN trong các lệnh SELECT, UPDATE và DELETE để kết hợp các bảng MySQL. Chúng ta sẽ xem một ví dụ về LEFT JOIN cũng như sự khác nhau giữa các JOIN trong MySQL.
Sử dụng JOIN trong MySQL
Trước khi bắt đầu ví dụ, chúng ta cần tạo thêm một bảng hocphik60 trong cơ sở dữ liệu sinhvien. Bây giờ chúng ta có hai bảng như sau:
Bảng sinhvienk60 có dữ liệu:
Tạo bảng hocphik60 và chèn dữ liệu vào bảng.
//Lua chon co so du lieu USE sinhvien; //Tao bang CREATE TABLE hocphik60 ( ten VARCHAR(255) NOT NULL, hocphi INT NOT NULL ); //Chen du lieu vao bang INSERT INTO hocphik60 (ten, hocphi) VALUES ('Nam', 4000000); INSERT INTO hocphik60 (ten, hocphi) VALUES ('Thanh', 3500000); INSERT INTO hocphik60 (ten, hocphi) VALUES ('Cao', 4500000); INSERT INTO hocphik60 (ten, hocphi) VALUES ('Huong', 3000000);
Sau đó, bạn sử dụng lệnh SELECT * FROM hocphik60 ta sẽ có bảng như sau:
Bây giờ, chúng ta có thể viết một truy vấn SQL để kết hợp hai bảng trên. Truy vấn này sẽ lựa chọn tất cả ten từ bảng sinhvienk60 và sẽ lựa chọn số hocphi tương ứng từ bảng hocphik60.
SELECT a.mssv, a.ten, b.hocphi FROM sinhvienk60 a, hocphik60 b WHERE a.ten = b.ten;
Kết quả là:
Sử dụng JOIN trong PHP Script
Bạn có thể sử dụng bất kỳ truy vấn SQL nào ở trên trong PHP Script. Bạn chỉ cần truyền truy vấn SQL vào trong hàm PHP là mysql_query() và sau đó bạn sẽ lấy các kết quả theo cách thức thông thường.
Dưới đây là ví dụ minh họa sự sử dụng JOIN trong PHP script:
<?php $dbhost = 'localhost:3306'; $dbuser = 'root'; $dbpass = '123456'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Khong the ket noi: ' . mysql_error()); } $sql = 'SELECT a.mssv, a.ten, b.hocphi FROM sinhvienk60 a, hocphik60 b WHERE a.ten = b.ten'; mysql_select_db('sinhvien'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Khong the lay du lieu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Ten:{$row['ten']} <br> ". "Hoc Phi: {$row['hocphi']} <br> ". "MSSV : {$row['mssv']} <br> ". "--------------------------------<br>"; } echo "Lay du lieu thanh cong\n"; mysql_close($conn); ?>
RIGHT JOIN trong MySQL
RIGHT JOIN trong SQL trả về tất 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. Nghĩa là nếu mệnh đề ON so khớp với 0 bản ghi trong bảng bên trái, thì RIGHT JOIN sẽ vẫn trả về một hàng trong kết quả, nhưng với NULL trong mỗi cột từ bảng bên trái.
Bạn thử ví dụ minh họa RIGHT JOIN với hai bảng trên như sau:
SELECT a.mssv, a.ten, b.hocphi FROM sinhvienk60 a RIGHT JOIN hocphik60 b ON a.ten = b.ten;
Kết quả là:
Bạn cần làm nhiều bài thực hành để làm quen với các JOIN trong MySQL. Đây là một khái niệm khá phức tạp trong MySQL/SQL và bạn sẽ hiểu rõ hơn trong khi thực hành các ví dụ thực tế.
Hoặc bạn có thể tham khảo cách sử dụng JOIN trong SQL được trình bày trong loạt bài hướng dẫn về SQL của s2sontech:
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.
-
Các bài học MySQL phổ biến khác tại s2sontech:
Bình luận (0)