Tin học 11 · SGK

Bài 23. Thực hành xuất dữ liệu qua liên kết các bảng

THỰC HÀNH XUẤT DỮ LIỆU QUA LIÊN KẾT CÁC BẢNG

SAU BÀI HỌC NÀY EM SẼ:

Các bảng có thể có quan hệ với nhau qua tham chiếu khoá ngoài; nhờ vậy có thể xuất dữ liệu từ nhiều bảng theo quan hệ giữa chúng. Việc này sẽ được thực hiện cụ thể như thế nào với SQL?

Hướng dẫn:

bannhac (idBannhac, tenBannhac, idNhacsi, idTheloai)

Trong số các trường này không có trường tenNhacsi. Làm thế nào lập được danh sách các bản nhạc cùng với tên nhạc sĩ sáng tác bản nhạc ấy?

Tên nhạc sĩ nằm trong bảng nhacsi, lưu trữ ở trường tenNhacsi.

nhacsi (idNhacsi, tenNhacsi)

bannhac có khoá ngoài là idNhacsi tham chiếu đến trường khoá chính idNhacsi của nhacsi.

Để truy vấn hai bảng qua liên kết khoá, câu truy vấn SQL với mệnh đề JOIN có cấu trúc như sau:

SELECT danh_sach_ten_truong_cua_2_bang FROM ten_bang_a INNER JOIN ten_bang_b ON ten_bang_a.ten_truong = ten_bang_b.ten_truong [WHERE dieu_kien] [ORDER BY truong];

Ví dụ: Để lấy ra danh sách các bản nhạc gồm tenBannhac, tenNhacsi, dùng câu truy vấn:

SELECT bannhac.tenBannhac, nhacsi.tenNhacsi FROM bannhac INNER JOIN nhacsi ON bannhac.idNhacsi = nhacsi.idNhacsi;

Nếu muốn dữ liệu kết xuất có cả trường idNhacsi của bảng nhacsi nhằm có thể đối chiếu một cách tường minh, không khó, chỉ cần đổi tên hai trường (cùng tên) ở hai bảng để phân biệt.

SELECT bannhac.tenBannhac, bannhac.idNhacsi AS idNS_BN, nhacsi.idNhacsi AS idNS_NS, nhacsi.tenNhacsi FROM bannhac INNER JOIN nhacsi ON bannhac.idNhacsi = nhacsi.idNhacsi;
Hình 23.2. Kết quả truy vấn liên kết hai bảng với khoá đối chiếu
Hình 23.2. Kết quả truy vấn liên kết hai bảng với khoá đối chiếu

Lưu ý: HeidiSQL có hỗ trợ người dùng khi nhập các câu truy vấn theo các phương thức:

Hình 23.3. Một giao diện hỗ trợ người dùng của HeidiSQL
Hình 23.3. Một giao diện hỗ trợ người dùng của HeidiSQL

Hãy thực hành

Nhiệm vụ 2. Lập danh sách các bản thu âm với đủ các thông tin idBanthuam, tenBannhac, tenCasi

Hướng dẫn:

Để truy vấn được nhiều hơn hai bảng theo liên kết khoá ngoài, hãy lặp lại mệnh đề JOIN trong câu truy vấn SQL theo cấu trúc như sau:

SELECT danh_sach_ten_truong_cua_3_bang FROM ten_bang_a INNER JOIN ten_bang_b ON ten_bang_a.ten_truong = ten_bang_b.ten_truong INNER JOIN ten_bang_c ON ten_bang_b.ten_truong = ten_bang_c.ten_truong [WHERE dieu_kien] [ORDER BY truong];

Nhiệm vụ 3. Tìm hiểu một chức năng

Qua giao diện trong Hình 23.4, em hãy tìm hiểu một chức năng của ứng dụng Quản lí dữ liệu âm nhạc; so sánh với những kiến thức vừa được học và cho nhận xét so sánh.

Cách tương tác với giao diện này tương tự như với giao diện Quản lí danh sách các bản nhạc ở Bài 22 (Hình 22.7), chỉ khác ở chỗ khi nhập bản thu âm chỉ có thể chọn tên bản nhạc, tên ca sĩ từ hộp danh sách với những tên đã có trong CSDL.

Hình 23.4. Mô tả giao diện Quản lí danh sách các bản thu âm
Hình 23.4. Mô tả giao diện Quản lí danh sách các bản thu âm

Danh sách các bản thu âm có đầy đủ các thông tin tường minh: tên bản nhạc, tên nhạc sĩ và tên ca sĩ được thể hiện.

Theo các em:

LUYỆN TẬP

Lấy danh sách các bản thu âm với đầy đủ các thông tin: idBanthuam, tenBannhac, tenNhacsi, tenCasi.

VẬN DỤNG

Tài liệu bài học

Bản scan SGK xem ngay trên web · slide và phiếu mở từ Google Drive (cần đăng nhập Google để tải).

Nội dung SGK · bản scan

Bài Thực hành xuất dữ liệu qua liên kết các bảng — trang 109–112 của sách giáo khoa.

SGK bài 23 – trang 109
Trang 109
SGK bài 23 – trang 110
Trang 110
SGK bài 23 – trang 111
Trang 111
SGK bài 23 – trang 112
Trang 112