Giải Tin Học trang 72
Lời giải chi tiết SGK Lớp 11 · Môn Tin Há»c · Trang 72–73
Hai trang này thuộc Bài 14 (Thực hành về cấu trúc lệnh SQL) của môn Tin học 11 – bộ Kết nối tri thức. Nội dung xoay quanh các thành phần của ngôn ngữ SQL: cập nhật, truy xuất dữ liệu (DML) và kiểm soát quyền truy cập (DCL), kèm theo các câu hỏi vận dụng. Mình sẽ tóm tắt lý thuyết rồi giải lần lượt từng câu nhé.
Tóm tắt lý thuyết
Trước khi vào bài tập, các em cần nắm chắc các mẫu câu SQL trong sách:
Truy xuất dữ liệu (Bảng 14.3):
| Lệnh | Ý nghĩa |
|---|---|
SELECT | Lấy dữ liệu (cột/hàm) từ bảng |
WHERE <điều kiện> | Chỉ chọn các dòng thoả điều kiện |
ORDER BY | Sắp xếp kết quả |
INNER JOIN ... ON ... | Liên kết các bảng theo điều kiện |
Cập nhật dữ liệu (Bảng 14.4):
| Lệnh | Ý nghĩa |
|---|---|
INSERT INTO VALUES | Thêm dòng mới |
DELETE FROM WHERE <điều kiện> | Xoá dòng thoả điều kiện |
UPDATE SET |
Kiểm soát quyền (Bảng 14.5):
| Lệnh | Ý nghĩa |
|---|---|
GRANT | Cấp quyền cho người dùng |
REVOKE | Thu hồi quyền của người dùng |
Cấu trúc các bảng dùng trong bài (CSDL music):
casi(Sid, TenCS)– ca sĩnhacsi(Aid, TenNS)– nhạc sĩbannhac(Mid, TenBN, Aid)– bản nhạcbanthuam(Mid, Sid)– bản thu âm
Bài 1 (đầu trang 71): Tạo bảng casi
Đề: Hãy viết câu truy vấn tạo bảng Ca sĩ như đã mô tả trong Bài 11 với tên bảng là casi.
Lời giải:
CREATE TABLE casi (
Sid CHAR(2),
TenCS VARCHAR(50)
);
Giải thích: Bảng ca sĩ gồm hai trường là mã ca sĩ Sid (chuỗi ngắn, kiểu CHAR) và tên ca sĩ TenCS (chuỗi ký tự, kiểu VARCHAR). Lệnh CREATE TABLE dùng để khai báo cấu trúc một bảng mới.
Bài 2 (đầu trang 71): Thêm khoá chính cho casi
Đề: Hãy viết câu truy vấn thêm khoá chính Sid cho bảng casi.
Lời giải:
ALTER TABLE casi
ADD PRIMARY KEY (Sid);
Giải thích: Dùng ALTER TABLE để thay đổi cấu trúc bảng đã tạo, với mệnh đề ADD PRIMARY KEY (Sid) để đặt Sid làm khoá chính, đảm bảo mỗi ca sĩ có mã định danh duy nhất.
Bài 1 (mục 3, trang 72): Lấy tất cả các dòng của bảng nhacsi
Đề: Hãy viết câu truy vấn lấy tất cả các dòng của bảng nhacsi.
Lời giải:
SELECT * FROM nhacsi;
Giải thích: Dấu * đại diện cho tất cả các cột. Câu lệnh này trả về toàn bộ dữ liệu (mọi cột, mọi dòng) của bảng nhacsi.
Bài 2 (mục 3, trang 72): Thêm các dòng cho bảng casi
Đề: Hãy viết câu truy vấn thêm các dòng cho bảng casi với các giá trị là ('TK', 'Nguyễn Trung Kiên'), ('QD', 'Quý Dương'), ('YM', 'Y Moan').
Lời giải:
INSERT INTO casi VALUES
('TK', 'Nguyễn Trung Kiên'),
('QD', 'Quý Dương'),
('YM', 'Y Moan');
Giải thích: INSERT INTO ... VALUES cho phép thêm nhiều dòng cùng lúc, mỗi dòng đặt trong một cặp ngoặc đơn, các dòng cách nhau bởi dấu phẩy. Thứ tự giá trị tương ứng với thứ tự cột Sid, TenCS.
Bài 1 (mục 4, trang 72): Cấp quyền UPDATE
Đề: Hãy viết câu truy vấn cấp quyền UPDATE đối với tất cả các bảng trong CSDL music cho người dùng mod.
Lời giải:
GRANT update
ON music.*
TO mod;
Giải thích: Theo mẫu trong sách, music.* nghĩa là tất cả các bảng trong CSDL music. GRANT update cấp quyền cập nhật, còn TO mod chỉ rõ người được cấp quyền là mod.
Bài 2 (mục 4, trang 72): Thu hồi quyền DELETE
Đề: Hãy viết câu truy vấn thu hồi quyền DELETE đối với bảng nhacsi trong CSDL music cho người dùng mod.
Lời giải:
REVOKE delete
ON music.nhacsi
FROM mod;
Giải thích: REVOKE dùng để thu hồi quyền. Ở đây chỉ thu hồi quyền delete trên đúng một bảng music.nhacsi, và dùng từ khoá FROM mod để xác định người bị thu hồi.
LUYỆN TẬP
Bài 1: Tạo bảng banthuam
Đề: Hãy viết câu truy vấn tạo bảng Bản thu âm (banthuam) như đã mô tả trong Bài 13.
Lời giải:
CREATE TABLE banthuam (
Mid CHAR(4),
Sid CHAR(2)
);
Giải thích: Bảng banthuam ghi lại mối liên hệ giữa bản nhạc và ca sĩ, nên gồm hai trường: mã bản nhạc Mid và mã ca sĩ Sid.
Bài 2: Tạo khoá ngoài Mid và Sid cho banthuam
Đề: Viết câu truy vấn tạo khoá ngoài Mid và Sid cho bảng banthuam.
Lời giải:
ALTER TABLE banthuam
ADD FOREIGN KEY (Mid) REFERENCES bannhac(Mid);
ALTER TABLE banthuam
ADD FOREIGN KEY (Sid) REFERENCES casi(Sid);
Giải thích: Khoá ngoài (FOREIGN KEY) liên kết một trường của bảng này với khoá chính của bảng khác. Mid tham chiếu tới khoá chính của bảng bannhac, còn Sid tham chiếu tới khoá chính của bảng casi, giúp đảm bảo tính toàn vẹn dữ liệu (chỉ thu âm bản nhạc và ca sĩ thực sự tồn tại).
Bài 3: Liên kết banthuam với bannhac
Đề: Viết câu truy vấn lấy ra tất cả các dòng trong liên kết bảng banthuam với bảng bannhac, mỗi dòng lấy các cột: Mid, Sid của bảng banthuam và cột TenBN của bảng bannhac.
Lời giải:
SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN
FROM banthuam
INNER JOIN bannhac
ON banthuam.Mid = bannhac.Mid;
Giải thích: Hai bảng được liên kết qua trường chung Mid. INNER JOIN ... ON banthuam.Mid = bannhac.Mid ghép các dòng có cùng mã bản nhạc. Khi lấy cột cùng tên ở hai bảng (Mid), ta nên viết rõ tên bảng để tránh nhập nhằng.
VẬN DỤNG
Đề: Viết câu truy vấn lấy ra tất cả các dòng trong liên kết bảng banthuam với bảng bannhac và bảng casi, mỗi dòng lấy các cột: Mid, Sid của bảng banthuam, cột TenBN của bảng bannhac và TenCS của bảng casi.
Lời giải:
SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN, casi.TenCS
FROM banthuam
INNER JOIN bannhac ON banthuam.Mid = bannhac.Mid
INNER JOIN casi ON banthuam.Sid = casi.Sid;
Giải thích: Lần này phải liên kết ba bảng. Ta dùng hai phép INNER JOIN nối tiếp:
- Nối
banthuamvớibannhacquaMidđể lấy tên bản nhạcTenBN. - Nối tiếp với
casiquaSidđể lấy tên ca sĩTenCS.
Kết quả là mỗi dòng cho biết bản thu âm nào (Mid, Sid) ứng với tên bản nhạc và tên ca sĩ tương ứng.
Một lưu ý nhỏ: ảnh các em gửi đánh số trang 71 và 72, nên thực chất đây là trang 71–72 của sách. Mình đã giải đầy đủ toàn bộ câu hỏi xuất hiện trên cả hai trang. Nếu cần mình mở rộng thêm phần WHERE hay ORDER BY cho các câu truy vấn trên, cứ nói nhé.
