SQL Server - Truy vấn dữ liệu từ nhiều bảng
Các loại phép kết
Kết bằng (EquiJoin)
• Kết không bằng (Non EquiJoin)
• Kết với chính mình (Self Join)
• Kết bằng mệnh đề Join
Tóm tắt nội dung SQL Server - Truy vấn dữ liệu từ nhiều bảng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Truy vấn dữ liệu từ nhiều bảng 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lấy dữ liệu từ nhiều bảng NHANVIEN PHONG … … 3TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC • Kết bằng (EquiJoin) • Kết không bằng (Non EquiJoin) • Kết với chính mình (Self Join) Các loại phép kết • Kết bằng mệnh đề Join 4TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Phép kết bằng • Sử dụng điều kiện kết bằng trong mệnh đề WHERE • Nếu xuất hiện tên cột trùng nhau trong nhiều bảng thì bắt buộc phải sử dụng tên bảng hoặc bí danh bảng trước tên cột. SELECT bang1.cot, bang2.cot FROM bang1, bang2 WHERE bang1.cot1 = bang2.cot2 5TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Phép kết bằng thực hiện như thế nào? NHANVIEN PHONG Khóa ngoại Khóa chính … … 6TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nhanvien.manhanvien, nhanvien.tennv, nhanvien.maphong, phong.maphong, phong.makhuvuc FROM qlns.nhanvien, qlns.phong WHERE nhanvien.maphong = phong.maphong; Kết quả nhận được từ phép kết bằng … 7TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nv.manhanvien, nv.tennv, nv.maphong, ph.maphong, ph.makhuvuc FROM qlns.nhanvien nv , qlns.phong ph WHERE nv.maphong = ph.maphong; Sử dụng bí danh cho bảng • Đơn giản hóa các câu truy vấn khi cần sử dụng tên bảng cho việc truy xuất các cột. 8TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết nhiều hơn hai bảng NHANVIEN KHUVUC PHONG • Để kết n bảng, ta cần tối thiểu n-1 phép kết. Ví dụ để kết ba bảng, ta cần tối thiểu hai phép kết bảng. … 9TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết không bằng NHANVIEN LOAICONGVIEC Mức lương của nhân viện phải nằm trong khoản hai cận trong bảng LOAICONGVIEC … 10 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết quả từ phép kết không bằng SELECT nv.tennv, nv.mucluong, lcv.maloaicv FROM qlns.nhanvien nv, qlns.loaicongviec lcv WHERE nv.mucluong BETWEEN lcv.mucluong_min AND lcv.mucluong_max; … 11 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết với chính mình NHANVIEN (NHAN_VIEN) NHANVIEN (NGUOI_QUAN_LY) Mã người quản lý (MANGUOIQUANLY) trong bảng NHAN_VIEN phải bằng với mã nhân viên (MANHANVIEN) trong bảng NGUOI_QUAN_LY … ` … 12 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết với chính mình SELECT nvien.honv+’ ‘+nvien.tennv + N' làm việc cho ' + nguoiqly.tennv as [Nhân viên và người QLý] FROM qlns.nhanvien nvien, qlns.nhanvien nguoiqly WHERE nvien.manguoiquanly = nguoiqly.manhanvien ; … 13 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sử dụng mệnh đề JOIN để kết SELECT bang1.cot, bang2.cot FROM bang1 [CROSS JOIN bang2] | [JOIN bang2 ON(bang1.ten_cot = bang2.ten_cot)] | [LEFT|RIGHT|FULL [OUTER] JOIN bang2 ON (bang1.ten_cot = bang2.ten_cot) ] 14 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cross Joins • Mệnh đề CROSS JOIN sẽ kết mỗi dòng của bảng 1 với tất cả các dòng của bảng 2 Kết quả CROSS JOIN: 14x8=112 rows NHANVIEN (14 dòng) PHONG (8 rows) … … 15 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Mệnh đề ON trong phép kết JOIN • Tách biệt đều kiện kết với các điều kiện chọn lọc dữ liệu khác. • Các câu truy vấn trở nên dễ đọc hơn. 16 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nv.manhanvien, nv.tennv, nv.maphong, ph.maphong, ph.makhuvuc FROM qlns.nhanvien nv JOIN qlns.phong ph ON (nv.maphong = ph.maphong) Sử dụng mệnh đề JOIN …ON… … … 17 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Kết nhiều hơn hai bảng SELECT manhanvien, tenphong, tenkhuvuc, thanhpho FROM qlns.nhanvien nv JOIN qlns.phong ph ON ph.maphong = nv.maphong JOIN qlns.khuvuc kv ON ph.makhuvuc = kv.makhuvuc … 18 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong FROM qlns.nhanvien nv LEFT OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong) Phép kết trái (LEFT [OUTER] JOIN) … 19 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong FROM qlns.nhanvien nv RIGHT OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong) Phép kết phải (RIGHT [OUTER] JOIN) … 20 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong FROM qlns.nhanvien nv FULL OUTER JOIN qlns.phong ph ON (nv.maphong = ph.maphong) Phép kết đầy đủ (FULL [OUTER] JOIN) … 21 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thực hành • Viết các câu truy vấn kết các bảng bằng mệnh đề WHERE. • Câu truy vấn kết với chính mình • Kết hai bảng bằng Cross Join • Kết các bảng sử dụng JOIN, LEFT|RIGHT|FULL JOINT 22 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sử dụng biểu thức CASE trong truy vấn 23 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biểu thức CASE dạng đơn giản CASE Biểu_thức WHEN Giá_trị_1 THEN Biểu_thức_kết_quả_1 [WHEN Giá_trị_2 THEN Biểu_thức_kết_quả_2 ...] [ ELSE Biểu_thức_kết_quả_N] END • Giá trị 1, giá trị 2 − Các giá trị cụ thể để so sánh bằng (=) với biểu thức • Biểu thức kết quả 1, biểu thức kết quả 2 − Biểu thức sẽ được trả về khi việc so sánh của biểu thức bằng với các giá trị so sánh tương ứng 24 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ SELECT LOAI= CASE LEFT(MAVTU, 2) WHEN 'DD' THEN 'Đầu DVD' WHEN 'VD' THEN 'Đầu VCD' WHEN 'TV' THEN 'Tivi' WHEN 'TL' THEN 'Tủ lạnh' WHEN 'BI' THEN 'Bia lon' WHEN 'LO' THEN 'Loa thùng' ELSE 'Chưa phân loại' END, MAVTU, TENVTU, DVTINH FROM VATTU ORDER BY LEFT(MAVTU, 2) 25 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biểu thức CASE dạng tìm kiếm CASE WHEN Bt_logic_1 THEN Biểu_thức_kết_quả_1 [WHEN Bt_logic_2 THEN Biểu_thức_kết_quả_2 ...] [ ELSE Biểu_thức_kết_quả_N] END • Biểu thức logic1, biểu thức logic2 − Các biểu thức luận lý dùng để thực hiện các phép so sánh trong biểu thức CASE. • Biểu thức kết quả 1, biểu thức kết quả 2 − Biểu thức sẽ được trả về khi một trong các biểu thức luận lý so sánh có kết quả là đúng. 26 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ SELECT GHICHU= CASE WHEN PHANTRAM <20 THEN 'Lời ít' WHEN PHANTRAM BETWEEN 20 AND 40 THEN 'Lời nhiều' ELSE 'Rất lời' END, TENVTU, DVTINH, PHANTRAM FROM VATTU ORDER BY PHANTRAM
File đính kèm:
- SQL Server - Truy vấn dữ liệu từ nhiều bảng.pdf