Giải Tin Học trang 104

Lời giải chi tiết SGK Lớp 11 · Môn Tin Học · Trang 104–105

Hai trang này thuộc Bài 21 trong sách Tin học, nói về lọc dữ liệu và truy xuất dữ liệu bằng câu truy vấn SQL trong HeidiSQL. Đây chủ yếu là phần lý thuyết, kèm phần Luyện tập và Vận dụng ở cuối. Mình sẽ tóm tắt lý thuyết và hướng dẫn giải các bài tập nhé.

Tóm tắt lý thuyết

Lọc dữ liệu qua giao diện (tiếp nối Hình 21.11 – 21.13)

  • Thiết lập bộ lọc bằng biểu thức, ví dụ tenNhacsi LIKE '%P%' để tìm nhạc sĩ có chữ P trong tên. Kết quả ở Hình 21.12 cho ra hai nhạc sĩ: Phan Nhân và Phan Huỳnh Điểu.
  • Để xoá bộ lọc đã thiết lập, chọn nút Dọn dẹp rồi chọn lại Lọc.

Truy xuất dữ liệu với câu truy vấn SQL
Ngoài thao tác qua giao diện, ta có thể nhập trực tiếp câu lệnh SQL để truy xuất linh hoạt hơn. Cấu trúc cơ bản:

SELECT danh_sách_các_trường
FROM tên_bảng
[WHERE biểu_thức_điều_kiện]
[ORDER BY tên_trường_1 [ASC|DESC], tên_trường_2 [ASC|DESC], …]
;

Trong đó:

  • danh_sách_các_trường: liệt kê tên các trường, ngăn cách bằng dấu phẩy. Muốn lấy tất cả các trường thì dùng ký tự *.
  • tên_bảng: khi làm việc với nhiều CSDL cùng lúc, cần ghi cả tên CSDL, ví dụ mymusic.bannhac.
  • biểu_thức_điều_kiện: biểu thức logic xác lập điều kiện cho giá trị các trường. Ví dụ: tenNhacsi LIKE 'P%' AND (idNhacsi=2 OR idNhacsi=6).
  • Cặp dấu [ ]: phần bên trong có thể dùng hoặc không (tuỳ chọn).
  • ASC|DESC: chọn ASC (Ascending – tăng dần) hoặc DESC (Descending – giảm dần).

Ý nghĩa: lấy ra tất cả các dòng dữ liệu (gồm các trường được liệt kê) từ bảng đã chỉ định, chỉ giữ những dòng thoả mãn điều kiện, rồi sắp xếp kết quả theo thứ tự đã định.

Ví dụ minh hoạ (Hình 21.14):

SELECT idNhacsi, tenNhacsi
FROM nhacsi
WHERE tenNhacsi LIKE 'P%'
ORDER BY tenNhacsi
;

Câu này lấy các nhạc sĩ có tên bắt đầu bằng P, sắp xếp theo tên. Kết quả: Phan Huỳnh Điểu, Phan Nhân.

Bài Luyện tập 1: Cập nhật dữ liệu vào bảng casi

Đề: Cập nhật dữ liệu vào bảng casi.

Lời giải

Bảng casi (ca sĩ) trong CSDL mymusic thường có các trường như idCasi, tenCasi. Có hai cách cập nhật:

Cách 1 – Dùng giao diện HeidiSQL

  1. Mở CSDL mymusic, chọn bảng casi, mở thẻ Dữ liệu.
  2. Nhấn nút thêm dòng, nhập giá trị cho từng trường rồi lưu lại.

Cách 2 – Dùng câu lệnh SQL trong thẻ Truy vấn

Thêm dữ liệu mới:

INSERT INTO casi (idCasi, tenCasi)
VALUES (1, 'Mỹ Tâm'),
       (2, 'Đàm Vĩnh Hưng'),
       (3, 'Hồ Ngọc Hà');

Sửa dữ liệu đã có:

UPDATE casi
SET tenCasi = 'Mỹ Linh'
WHERE idCasi = 1;

Xoá một dòng:

DELETE FROM casi
WHERE idCasi = 3;

Lưu ý: luôn dùng WHERE khi sửa/xoá để chỉ tác động đúng dòng cần thiết, tránh thay đổi toàn bảng.

Bài Luyện tập 2: Truy xuất dữ liệu bảng casi theo các tiêu chí khác nhau

Đề: Truy xuất dữ liệu bảng casi theo các tiêu chí khác nhau.

Lời giải

Em vận dụng cấu trúc SELECT đã học. Dưới đây là vài tiêu chí mẫu:

Lấy tất cả ca sĩ:

SELECT * FROM casi;

Lấy ca sĩ có tên bắt đầu bằng chữ "M":

SELECT idCasi, tenCasi
FROM casi
WHERE tenCasi LIKE 'M%';

Lấy ca sĩ có chữ "H" ở bất kỳ vị trí nào trong tên:

SELECT idCasi, tenCasi
FROM casi
WHERE tenCasi LIKE '%H%';

Sắp xếp danh sách ca sĩ theo tên giảm dần:

SELECT idCasi, tenCasi
FROM casi
ORDER BY tenCasi DESC;

Kết hợp điều kiện và sắp xếp:

SELECT idCasi, tenCasi
FROM casi
WHERE idCasi >= 2
ORDER BY tenCasi ASC;

Giải thích: ký tự % đại diện cho một chuỗi ký tự bất kỳ trong LIKE. ORDER BY ... DESC sắp xếp giảm dần, ASC (hoặc bỏ trống) là tăng dần.

Bài Vận dụng: Cập nhật và truy xuất dữ liệu bảng Tỉnh/Thành phố

Đề: Thực hành cập nhật và truy xuất dữ liệu bảng Tỉnh/Thành phố trong CSDL quản lí danh sách tên Quận/Huyện, Tỉnh/Thành phố.

Lời giải gợi ý

Giả sử CSDL có bảng TinhThanhpho với các trường idTinh, tenTinh, và bảng QuanHuyen với idHuyen, tenHuyen, idTinh (khoá ngoại liên kết tới bảng tỉnh).

Cập nhật dữ liệu tỉnh/thành:

INSERT INTO TinhThanhpho (idTinh, tenTinh)
VALUES (1, 'Hà Nội'),
       (2, 'Hồ Chí Minh'),
       (3, 'Đà Nẵng'),
       (4, 'Hải Phòng');

Truy xuất toàn bộ danh sách tỉnh/thành, sắp xếp theo tên:

SELECT idTinh, tenTinh
FROM TinhThanhpho
ORDER BY tenTinh ASC;

Tìm tỉnh/thành có tên chứa chữ "Hà":

SELECT idTinh, tenTinh
FROM TinhThanhpho
WHERE tenTinh LIKE '%Hà%';

Liệt kê quận/huyện thuộc một tỉnh cụ thể (ví dụ Hà Nội, idTinh = 1):

SELECT tenHuyen
FROM QuanHuyen
WHERE idTinh = 1
ORDER BY tenHuyen;

Mục tiêu của bài Vận dụng là giúp em luyện cả hai thao tác: nhập/sửa dữ liệu (INSERT, UPDATE) và truy xuất dữ liệu (SELECT) trên một CSDL thực tế, đồng thời hiểu mối liên kết giữa hai bảng qua trường khoá idTinh.

Tóm lại, trọng tâm của hai trang này là cú pháp câu lệnh SELECT với các mệnh đề WHEREORDER BY. Em nắm chắc ba ý: dùng * để lấy tất cả trường, LIKE với % để lọc theo chuỗi, và ASC/DESC để sắp xếp là làm tốt các bài tập rồi nhé.

Chế độ đọc sách →