Giải Tin Học trang 70

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

Nguon: Tin Hoc 11 - Ket Noi Tri Thuc Voi Cuoc Song (trang 70 – 71)

🔍 Kiến thức cần nhớ

1. SQL là gì?

SQL (Structured Query Language – Ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ tiêu chuẩn để định nghĩa, cập nhật, truy xuất và điều khiển dữ liệu trong các CSDL quan hệ.

  • Được xây dựng từ những năm 1970.
  • Hầu hết các hệ QTCSDL phổ biến đều dùng SQL: Oracle, SQL Server, MySQL, PostgreSQL...

SQL gồm ba thành phần:

Thành phầnTên đầy đủVai trò
DDLData Definition LanguageNgôn ngữ định nghĩa dữ liệu (tạo CSDL, tạo bảng, khai báo khóa...)
DMLData Manipulation LanguageNgôn ngữ thao tác dữ liệu (thêm, sửa, xóa, truy vấn)
DCLData Control LanguageNgôn ngữ kiểm soát dữ liệu (phân quyền, bảo mật)
💡 Mẹo nhớ: "Định nghĩa – Thao tác – Kiểm soát" tương ứng DDL – DML – DCL. Nhớ chữ cái giữa: Definition, Manipulation, Control.

2. Các câu truy vấn DDL (Bảng 14.1)

Câu truy vấn DDLÝ nghĩa
CREATE DATABASEKhởi tạo CSDL
CREATE TABLEKhởi tạo bảng
ALTER TABLEThay đổi định nghĩa bảng
PRIMARY KEYKhai báo khóa chính
FOREIGN KEY... REFERENCES...Khai báo khóa ngoài

3. Các kiểu dữ liệu trong SQL (Bảng 14.2)

Kiểu dữ liệuÝ nghĩa
CHAR(n) hay CHARACTER(n)Xâu ký tự độ dài cố định n ký tự (thiếu thì thêm khoảng trắng bên phải)
VARCHAR(n)Xâu ký tự độ dài thay đổi, không vượt quá n ký tự
BOOLEANKiểu logic: Đúng (1) hay Sai (0)
INT hay INTEGERSố nguyên
REALSố thực dấu phẩy động
DATENgày tháng, dạng 'YYYY-MM-DD'
TIMEThời gian, dạng 'HH:MM:SS'
⚠️ Lưu ý thi: Phân biệt CHAR và VARCHAR là câu hỏi rất hay gặp. - CHAR(4) luôn chiếm đúng 4 ký tự (ví dụ mã định danh cố định như "B001"). - VARCHAR(128) co giãn theo dữ liệu thực tế (ví dụ tên bài hát dài ngắn khác nhau), tiết kiệm bộ nhớ.

⚙️ Bài tập

Câu hỏi mở đầu

Đề bài: 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ì?

Cách 1 — So sánh trực tiếp hai cách tiếp cận

Truy xuất bằng ngôn ngữ lập trình:

  • Người dùng phải biết rõ cấu trúc tệp dữ liệu, tự viết chương trình mở tệp, đọc từng nhóm dữ liệu, tách phần cần kiểm tra rồi mới xử lý.
  • Đây là kiểu lập trình "theo thủ tục" – phải mô tả cách làm (thuật toán) từng bước.
  • Tốn nhiều công sức, dễ nhầm lẫn. Bài toán tương tự lại phải viết lại chương trình mới.

Truy xuất bằng SQL:

  • Người dùng chỉ cần viết ra yêu cầu (muốn lấy dữ liệu gì), không cần nghĩ cách thực hiện.
  • Hệ QTCSDL sẽ tự tiếp nhận câu truy vấn và trả về kết quả đúng yêu cầu.
  • Ngắn gọn, dễ dùng, ít sai sót.

Kết luận: Khác biệt cơ bản là SQL mô tả "muốn làm gì" (khai báo kết quả mong muốn), còn ngôn ngữ lập trình mô tả "làm như thế nào" (thủ tục từng bước).


Hoạt động 1 — Thảo luận về hai cách truy xuất dữ liệu

Đề bài: Để lấy danh sách các bản nhạc do nhạc sĩ Văn Cao (Aid = 1) sáng tác trong bảng Bản nhạc, có hai cách:

  • Cách 1: Dùng ngôn ngữ lập trình, mở tệp, lần lượt lấy từng nhóm dữ liệu, tách Aid để kiểm tra, nếu Aid = 1 thì đưa ra 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.

Hỏi: 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 là gì?

Cách 1 — Phân tích theo tiêu chí

Với cách lập trình trực tiếp (cách thứ nhất):

  • Phải biết cấu trúc cụ thể của tệp dữ liệu Bản nhạc.
  • Phải tự xây dựng thuật toán: mở tệp → đọc từng bản ghi → tách trường Aid → so sánh Aid = 1 → in TenBN.
  • Mô tả chi tiết trình tự các bước (cách làm).
  • Vất vả, dễ sai, không tái sử dụng được cho bài toán khác.

Với cách dùng ngôn ngữ truy vấn (cách thứ hai):

  • Chỉ cần mô tả yêu cầu: lấy TenBN từ bảng Bản nhạc với điều kiện Aid = 1.
  • Không cần quan tâm cách hệ thống đọc, lọc, trả dữ liệu.
  • Hệ QTCSDL tự lo phần thực hiện.
  • Ngắn gọn, trực quan, dễ chuyển sang yêu cầu khác.

Kết luận: Ngôn ngữ truy vấn chỉ cần khai báo "muốn gì", còn lập trình trực tiếp phải chỉ rõ "làm thế nào". Đây chính là khác biệt giữa cách tiếp cận khai báo (declarative) và cách tiếp cận thủ tục (procedural).

Cách 2 — Ghi nhớ bằng phép so sánh đời thường

Hãy tưởng tượng bạn muốn một ly cà phê:

  • Lập trình trực tiếp giống như bạn tự vào bếp: xay hạt, đun nước, pha, lọc... (phải biết và làm từng bước).
  • Ngôn ngữ truy vấn (SQL) giống như bạn chỉ cần nói với pha chế: "Cho tôi một ly cà phê" – họ lo phần còn lại.

→ SQL giúp người dùng tập trung vào kết quả mong muốn thay vì quy trình thực hiện.

💡 Mẹo nhớ: SQL = nói WHAT (cái gì), không cần nói HOW (làm sao).

📌 Tìm hiểu thêm: Ví dụ khởi tạo CSDL (trang 70)

Ví dụ tạo CSDL âm nhạc tên music với hai bảng bannhacnhacsi:

CREATE DATABASE music;              -- Khởi tạo CSDL music

CREATE TABLE bannhac (              -- Khởi tạo bảng bannhac
    Mid CHAR(4),
    Aid INT,
    TenBN VARCHAR(128)
);
ALTER TABLE bannhac ADD PRIMARY KEY (Mid);   -- Thêm khóa chính Mid

CREATE TABLE nhacsi (              -- Khởi tạo bảng nhacsi
    Aid INT,
    TenNS VARCHAR(64)
);

Giải thích:

  • CREATE DATABASE music; tạo CSDL tên music.
  • CREATE TABLE bannhac (...) tạo bảng bannhac với 3 thuộc tính: Mid (mã bản nhạc, cố định 4 ký tự), Aid (mã nhạc sĩ, số nguyên), TenBN (tên bản nhạc, tối đa 128 ký tự).
  • ALTER TABLE bannhac ADD PRIMARY KEY (Mid); đặt Mid làm khóa chính cho bảng bannhac.
  • Mỗi câu truy vấn kết thúc bằng dấu chấm phẩy ";".
⚠️ Lưu ý thi: Đừng quên dấu ";" ở cuối mỗi câu lệnh SQL – thiếu nó là lỗi cú pháp thường gặp.

🎯 Ghi nhớ: - SQL là ngôn ngữ truy vấn có cấu trúc, gồm ba thành phần DDL – DML – DCL. - Khác biệt cốt lõi: SQL chỉ cần khai báo "muốn gì", hệ QTCSDL tự lo cách thực hiện; còn lập trình trực tiếp phải mô tả "làm thế nào" theo từng bước. - DDL dùng để khởi tạo CSDL và bảng: CREATE DATABASE, CREATE TABLE, ALTER TABLE, PRIMARY KEY, FOREIGN KEY. - Nắm chắc các kiểu dữ liệu cơ bản: CHAR/VARCHAR (xâu), INT (số nguyên), REAL (số thực), BOOLEAN, DATE, TIME.
Chế độ đọc sách →