1. Kiến thức trọng tâm
Truy xuất dữ liệu qua liên kết các bảng là kĩ năng quan trọng, vì thông tin cần thiết thường nằm rải rác ở nhiều bảng. Ví dụ: muốn biết họ tên và điểm Toán, cần kết hợp bảng Học sinh (chứa họ tên) với bảng Điểm thi (chứa điểm). Việc kết nối thực hiện qua các trường liên kết, thường là khóa chính của bảng này và khóa ngoài của bảng kia.
Trong SQL, phép liên kết dùng mệnh đề JOIN. Dạng phổ biến nhất là INNER JOIN, chỉ lấy bản ghi có giá trị liên kết khớp nhau ở cả hai bảng. Ngoài ra còn có LEFT JOIN, lấy tất cả bản ghi của bảng trái kể cả khi không có bản ghi khớp ở bảng phải, phần không khớp hiển thị giá trị trống. Cú pháp cơ bản là SELECT ... FROM BảngA INNER JOIN BảngB ON BảngA.Khóa = BảngB.KhóaNgoài.
Khi truy xuất qua liên kết, có thể kết hợp thêm WHERE để lọc và ORDER BY để sắp xếp như truy xuất trên một bảng. Cần đặt tên bảng kèm tên trường, ví dụ HocSinh.HoTen, để tránh nhầm lẫn khi hai bảng có trường trùng tên. Truy xuất qua liên kết giúp khai thác sức mạnh của cơ sở dữ liệu quan hệ mà không cần gộp mọi thông tin vào một bảng.
2. Ví dụ minh họa
Ví dụ: bảng HocSinh gồm (HS01, Nguyễn Văn An), (HS02, Trần Thị Bình); bảng DiemThi gồm (HS01, Toán, 8.5), (HS02, Toán, 9.0). Câu lệnh lấy họ tên và điểm Toán:
SELECT HocSinh.HoTen, DiemThi.Diem
FROM HocSinh
INNER JOIN DiemThi
ON HocSinh.MaHS = DiemThi.MaHS
WHERE DiemThi.MonThi = 'Toán';
Kết quả: Nguyễn Văn An, 8.5 và Trần Thị Bình, 9.0. Nếu dùng LEFT JOIN và có thêm học sinh HS03 chưa có điểm, kết quả gồm cả hàng tên học sinh này với điểm trống, giúp phát hiện học sinh chưa thi.
3. Ghi nhớ
- Thông tin cần thiết thường nằm ở nhiều bảng, phải liên kết các bảng để truy xuất.
INNER JOINchỉ lấy bản ghi khớp nhau ở cả hai bảng;LEFT JOINlấy tất cả bản ghi bảng trái.- Liên kết dựa trên khóa chính và khóa ngoài của hai bảng.
- Kết hợp
WHEREđể lọc vàORDER BYđể sắp xếp kết quả liên kết.
