Khởi động: Các bảng có thể có quan hệ với nhau, thể hiện qua khoá ngoại. Nhờ vậy có thể truy xuất dữ liệu từ các bảng khác theo môi quan hệ. Việc này sẽ được thực hiện cụ thể như thế nào trong giao diện của một hệ QTCSDL?
Hướng dẫn trả lời:
Trong giao diện của một hệ quản trị CSDL, để truy xuất dữ liệu từ các bảng khác theo mối quan hệ thì người dùng có thể sử dụng các công cụ truy vấn dữ liệu như truy vấn SQL hoặc các công cụ đồ họa. Các công cụ này thường cung cấp các tính năng đồ họa giúp người dùng thiết kế và tạo các mối quan hệ giữa các bảng và cho phép người dùng truy xuất dữ liệu từ các bảng khác nhau bằng cách sử dụng các truy vấn SQL.
Cụ thể, để truy xuất dữ liệu từ các bảng có mối quan hệ với nhau, người dùng cần sử dụng câu lệnh JOIN để kết hợp các bảng với nhau theo khoá ngoài. Câu lệnh JOIN cho phép bạn truy xuất dữ liệu từ nhiều bảng cùng một lúc bằng cách ghép các bảng lại với nhau theo khoá ngoài.
Luyện tập 1: Lấy danh sách các bản thu âm với đầy đủ các thông tin, idBanthuam, tenBannhac, ten Theloai, tenNhacsi, tenCasi.
Hướng dẫn trả lời:
SELECT bt.idbannhac AS idBanthuam,
bn.tenbannhac AS tenBannhac,
tl.tentheloai AS tenTheloai,
ns.tennhacsi AS tenNhacsi,
cs.tencasi AS tenCasi
FROM banthuam bt
JOIN bannhac bn ON bt.idbannhac = bn.idbannhac
JOIN nhacsi ns ON bn.idnhacsi = ns.idnhacsi
JOIN casi cs ON bt.idcasi = cs.idcasi
JOIN theloai tl ON bn.idtheloai = tl.idtheloai;
Luyện tập 2: Lấy danh sách các bản thu âm với các thông tin idBanthuam, tenBannhac, tenTheloai, tenCasi các bản nhạc của nhạc sĩ Văn Cao.
Hướng dẫn trả lời:
SELECT bt.idbannhac AS idBanthuam,
bn.tenbannhac AS tenBannhac,
tl.tentheloai AS tenTheloai,
cs.tencasi AS tenCasi
FROM banthuam bt
JOIN bannhac bn ON bt.idbannhac = bn.idbannhac
JOIN nhacsi ns ON bn.idnhacsi = ns.idnhacsi
JOIN casi cs ON bt.idcasi = cs.idcasi
JOIN theloai tl ON bn.idtheloai = tl.idtheloai
WHERE ns.tennhacsi = 'Văn Cao';
Luyện tập 3: Lấy danh sách các bản thu âm với các thông tin idBanthuam, tenBannhac, tenTacgia, tenTheloai các bản nhạc do ca sĩ Lê Dung thể hiện.
Hướng dẫn trả lời:
SELECT bt.idbannhac AS idBanthuam,
bn.tenbannhac AS tenBannhac,
ns.tennhacsi AS tenTacgia,
tl.tentheloai AS tenTheloai
FROM banthuam bt
JOIN bannhac bn ON bt.idbannhac = bn.idbannhac
JOIN nhacsi ns ON bn.idnhacsi = ns.idnhacsi
JOIN casi cs ON bt.idcasi = cs.idcasi
JOIN theloai tl ON bn.idtheloai = tl.idtheloai
WHERE cs.tencasi = 'Lê Dung';
Luyện tập 4: Lấy danh sách các bản thu âm với các thông tin idBanthuam, tenBannhac, tenTacgia, tenCasi các bản nhạc do ca sĩ Lê Dung thể hiện thuộc thể loại Nhạc trữ tình.
Hướng dẫn trả lời:
SELECT bt.idbannhac AS idBanthuam,
bn.tenbannhac AS tenBannhac,
ns.tennhacsi AS tenTacgia,
cs.tencasi AS tenCasi
FROM banthuam bt
JOIN bannhac bn ON bt.idbannhac = bn.idbannhac
JOIN nhacsi ns ON bn.idnhacsi = ns.idnhacsi
JOIN casi cs ON bt.idcasi = cs.idcasi
JOIN theloai tl ON bn.idtheloai = tl.idtheloai
WHERE cs.tencasi = 'Lê Dung' AND tl.tentheloai = 'Nhạc trữ tình';
Thực hành truy xuất bảng Quận/Huyện qua liên kết với bảng Tỉnh/Thành phố.
Hướng dẫn trả lời:
Chúng ta có hai bảng trong cơ sở dữ liệu: "tinhthanhpho" và "quanhuyen". Bảng "tinhthanhpho" chứa thông tin về các tỉnh/thành phố, bao gồm các trường: "id_tinhthanhpho" (khóa chính), "tentinhthanhpho" (tên tỉnh/thành phố), "quocgia" (quốc gia). Bảng "quanhuyen" chứa thông tin về các quận/huyện, bao gồm các trường: "id_quanhuyen" (khóa chính), "tenquanhuyen" (tên quận/huyện), "id_tinhthanhpho" (khóa ngoại liên kết với "id_tinhthanhpho" trong bảng "tinhthanhpho").
Để truy xuất thông tin của quận/huyện kèm theo thông tin của tỉnh/thành phố tương ứng, ta có thể sử dụng truy vấn SQL sau:
SELECT qh.tenquanhuyen AS tenQuanHuyen,
tp.tentinhthanhpho AS tenTinhThanhPho,
tp.quocgia AS quocGia
FROM quanhuyen qh
JOIN tinhthanhpho tp ON qh.id_tinhthanhpho = tp.id_tinhthanhpho;