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 FROM 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 =Cập nhật giá trị

Kiểm soát quyền (Bảng 14.5):

LệnhÝ nghĩa
GRANTCấp quyền cho người dùng
REVOKEThu 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ạc
  • banthuam(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 MidSid 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 bannhacTenCS 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 banthuam với bannhac qua Mid để lấy tên bản nhạc TenBN.
  • Nối tiếp với casi qua Sid để 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é.

Chế độ đọc sách →