Chọn đến phần học sinh cần nhanh chóng thông qua mục lục bằng cách click đến phần đó
Câu hỏi mở đầu trang 69
Đề bài: Ở bài trước các em đã biết hệ QTCSDL với vai trò là một bộ phần mềm hỗ trợ khởi tạo, cập nhật, truy xuất CSDL để người dùng có thể cập nhật, truy xuất CSDL. Ngày nay người ta thực hiện công việc đó chủ yếu thông qua ngôn ngữ truy vấn có cấu trúc SQL. Sự khác biệt của việc sử dụng SQL so với việc truy xuất dữ liệu bằng ngôn ngữ lập trình là gì?
Lời giải:
Sự khác biệt giữa SQL và ngôn ngữ lập trình:
- Khi dùng ngôn ngữ lập trình (như Python, C++,…):
- Người dùng phải biết rõ cấu trúc tệp dữ liệu.
- Phải tự viết chương trình chi tiết: mở tệp, đọc từng dòng, tách dữ liệu, kiểm tra điều kiện, hiển thị kết quả.
- → Kiểu lập trình “theo thủ tục”, mất công sức, dễ nhầm lẫn.
- Khi dùng SQL:
- Người dùng chỉ cần viết yêu cầu dưới dạng câu truy vấn (muốn làm gì).
- Không cần nghĩ cách để thực hiện – hệ QTCSDL sẽ tự giải quyết.
- → Đơn giản, ngắn gọn, dễ dùng.
1. Lợi ích của ngôn ngữ truy vấn
Hoạt động 1 trang 69
Đề bài: Để lấy danh sách các bản nhạc do nhạc sĩ Văn Cao (mã định danh Aid = 1) sáng tác trong bảng dữ liệu Bản nhạc, ta có thể thực hiện theo một trong hai cách sau:
- Cách 1: Dùng một ngôn ngữ lập trình, viết chương trình mở tệp chứa bảng dữ liệu Bản nhạc, rồi lần lượt lấy ra từng nhóm dữ liệu liên quan đến từng bản nhạc, sau đó tách phần Aid để kiểm tra, nếu Aid = 1 thì đưa ra tên bản nhạc (TenBN).
- Cách 2: Dùng ngôn ngữ truy vấn, viết “CHỌN TenBN TỪ Bản nhạc VỚI Aid = 1” rồi gửi cho hệ QTCSDL thực hiện.
Sự khác biệt cơ bản trong cách truy vấn nhờ ngôn ngữ truy vấn so với lập trình trực tiếp theo em là gì?
Lời giải:
Sự khác biệt cơ bản giữa hai cách:
| Tiêu chí | Ngôn ngữ lập trình (Cách 1) | Ngôn ngữ truy vấn (Cách 2) |
|---|---|---|
| Người dùng cần biết | Phải biết chi tiết cấu trúc tệp dữ liệu | Không cần biết cấu trúc lưu trữ |
| Cách viết | Viết cách thực hiện (mở tệp, đọc, tách, kiểm tra, in) | Viết yêu cầu (muốn lấy gì) |
| Độ dài | Dài dòng, phức tạp | Ngắn gọn, đơn giản |
| Người thực hiện | Người dùng tự thực hiện | Hệ QTCSDL thực hiện |
→ Ngôn ngữ truy vấn giúp người dùng chỉ cần mô tả yêu cầu, còn cách thực hiện do hệ QTCSDL đảm nhiệm → tiết kiệm công sức, tránh sai sót.
2. Khởi tạo CSDL
Câu hỏi củng cố mục 2 trang 71
Đề bài:
1. 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:
Bảng Ca sĩ có 2 cột: Sid (mã ca sĩ, xâu kí tự ngắn) và TenCS (tên ca sĩ).
CREATE TABLE casi (
Sid CHAR(2),
TenCS VARCHAR(64)
);
Giải thích:
Sid CHAR(2): Mã ca sĩ có độ dài cố định 2 kí tự (ví dụ: TK, LD, TN, QH).TenCS VARCHAR(64): Tên ca sĩ có độ dài thay đổi, tối đa 64 kí tự.
2. 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: Lệnh ALTER TABLE ... ADD PRIMARY KEY (...) dùng để thêm khoá chính cho một bảng đã có sẵn.
3. Cập nhật và truy xuất dữ liệu
Câu hỏi củng cố mục 3 trang 72
Đề bài:
1. 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: Kí hiệu * nghĩa là “tất cả các cột”. Câu lệnh này lấy ra toàn bộ dữ liệu của bảng nhacsi.
2. 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: Lệnh INSERT INTO ... VALUES ... dùng để thêm nhiều dòng mới cùng lúc vào bảng bằng cách liệt kê từng bộ giá trị.
4. Kiểm soát quyền truy cập
Câu hỏi củng cố mục 4 trang 72
Đề bài:
1. 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:
GRANT update: cấp quyền cập nhật.ON music.*: áp dụng cho tất cả các bảng trong CSDLmusic.TO mod: cấp cho người dùng có tênmod.
2. 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 delete: thu hồi quyền xoá.ON music.nhacsi: chỉ áp dụng cho bảngnhacsitrong CSDLmusic.FROM mod: thu hồi từ người dùngmod.
Luyện tập
Luyện tập trang 72
Đề bài:
1. 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:
Bảng Bản thu âm có 2 cột: Mid (mã bản nhạc) và Sid (mã ca sĩ).
CREATE TABLE banthuam (
Mid CHAR(4),
Sid CHAR(2)
);
Giải thích:
Mid CHAR(4): Mã bản nhạc có 4 kí tự (ví dụ: 0001, 0002,…).Sid CHAR(2): Mã ca sĩ có 2 kí tự (ví dụ: TK, LD,…).
2. 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:
- Câu lệnh đầu: Khai báo
Midtrong bảngbanthuamtham chiếu tới khoá chínhMidcủa bảngbannhac. - Câu lệnh sau: Khai báo
Sidtrong bảngbanthuamtham chiếu tới khoá chínhSidcủa bảngcasi.
3. 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:
SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN: chọn 3 cột từ hai bảng.FROM banthuam INNER JOIN bannhac: liên kết hai bảngbanthuamvàbannhac.ON banthuam.Mid = bannhac.Mid: liên kết theo cộtMid(khoá ngoài của banthuam = khoá chính của bannhac).
Vận dụng
Vận dụng trang 72
Đề bài: 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:
- Câu lệnh này liên kết 3 bảng:
banthuam,bannhacvàcasi. - Bước 1: Liên kết
banthuamvớibannhactheo cộtMid→ lấy được tên bản nhạc. - Bước 2: Liên kết tiếp với
casitheo cộtSid→ lấy được tên ca sĩ. - Kết quả: Mỗi dòng gồm 4 cột:
Mid,Sid,TenBN(tên bản nhạc) vàTenCS(tên ca sĩ).
→ Câu truy vấn này cho biết đầy đủ thông tin: bản thu âm nào, do ca sĩ nào thể hiện, thuộc bản nhạc nào.

Thầy Phạm Thành Danh
(Người kiểm duyệt, ra đề)
Chức vụ: Trưởng ban biên soạn môn Tin Học THPT
Trình độ: Cử nhân Sư phạm Tin học, Chứng chỉ hạng II, Chứng chỉ Tin học, Ngoại ngữ B1
Kinh nghiệm: 8+ năm kinh nghiệm tại Trường THPT Thuận Hóa
