Cơ sở dữ liệu
Đề mẫu cơ sở dữ liệu
10 câu về cơ sở dữ liệu quan hệ và SQL: khóa, chuẩn hóa, giao dịch, chỉ mục, truy vấn có nhóm, giá trị NULL, các lệnh xóa và khung nhìn. Mỗi câu có đáp án, lời giải và trang riêng.
Xuất bản 29/08/2026 · Cập nhật lần cuối 18/10/2026
Câu 1. Trong cơ sở dữ liệu quan hệ, khóa chính là gì?
- A. Thuộc tính tham chiếu sang bảng khác, có thể trùng ở nhiều dòng
- B. Tập thuộc tính xác định duy nhất mỗi bộ; không NULL
- C. Mọi cột kiểu số nguyên trong bảng
- D. Chỉ mục đầy đủ của toàn bộ cơ sở dữ liệu
Đáp án: B. Tập thuộc tính xác định duy nhất mỗi bộ; không NULL
Khóa chính là tập thuộc tính có giá trị không trùng và không NULL, dùng để định danh từng dòng. Bảng có thể không khai báo khóa chính; nếu có thì chỉ một ràng buộc PRIMARY KEY, và khóa đó có thể gồm nhiều cột. Phương án A mô tả khóa ngoại, vốn được phép lặp ở nhiều dòng. C sai vì khóa chính không bắt buộc là kiểu số nguyên. D nhầm với chỉ mục, công cụ giúp tìm kiếm nhanh chứ không định danh dòng.
Xem trang câu hỏi: Trong cơ sở dữ liệu quan hệ, khóa chính là gì?
Câu 2. Trong cơ sở dữ liệu quan hệ, khóa ngoại là gì?
- A. Thuộc tính tham chiếu tới khóa chính hoặc khóa duy nhất của một bảng khác
- B. Thuộc tính xác định duy nhất mỗi dòng trong chính bảng chứa nó
- C. Cột được tạo chỉ mục để các truy vấn tìm kiếm chạy nhanh hơn
- D. Cột có ràng buộc bắt buộc mọi dòng mang giá trị khác nhau
Đáp án: A. Thuộc tính tham chiếu tới khóa chính hoặc khóa duy nhất của một bảng khác
Khóa ngoại là cột hoặc nhóm cột mà giá trị phải khớp với một giá trị khóa chính (hoặc khóa duy nhất) ở bảng được tham chiếu, hoặc để NULL nếu thiết kế cho phép. Nó tạo liên kết giữa hai bảng, thường là quan hệ một – nhiều, và giữ toàn vẹn tham chiếu. Thuộc tính định danh duy nhất mỗi dòng là khóa chính. Chỉ mục giúp tìm nhanh nhưng không tạo liên kết. Cột không cho trùng là ràng buộc UNIQUE; khóa ngoại thì được lặp ở nhiều dòng.
Xem trang câu hỏi: Trong cơ sở dữ liệu quan hệ, khóa ngoại là gì?
Câu 3. Phát biểu nào đúng khi so sánh JOIN và UNION?
- A. JOIN xếp chồng dòng; UNION ghép cột theo khóa
- B. JOIN ghép cột theo điều kiện; UNION xếp chồng dòng
- C. Cả hai đều yêu cầu cùng số cột và chỉ khác tên
- D. UNION luôn giữ dòng không khớp giống LEFT JOIN
Đáp án: B. JOIN ghép cột theo điều kiện; UNION xếp chồng dòng
JOIN ghép các cột của hai bảng thành một dòng kết quả khi thỏa điều kiện, thường là khóa ngoại bằng khóa chính. UNION và UNION ALL xếp chồng các dòng của hai truy vấn, nên hai truy vấn phải có cùng số cột với kiểu tương thích. A đảo ngược hai phép. C sai vì JOIN không đòi hai bảng cùng số cột. D nhầm UNION với LEFT JOIN, phép giữ cả các dòng bảng trái không tìm được cặp.
Câu 4. Một bảng đạt dạng chuẩn 2NF khi nào?
- A. Khi mỗi ô của bảng chỉ chứa một giá trị đơn, không chia nhỏ được
- B. Khi không có thuộc tính không khóa nào phụ thuộc bắc cầu vào khóa
- C. Khi bảng không chứa bất kỳ khóa ngoại nào
- D. Khi bảng đã đạt 1NF và mọi thuộc tính không khóa phụ thuộc đầy đủ vào khóa
Đáp án: D. Khi bảng đã đạt 1NF và mọi thuộc tính không khóa phụ thuộc đầy đủ vào khóa
Dạng chuẩn 2NF thêm một điều kiện cho bảng đã đạt 1NF: không thuộc tính không khóa nào được phụ thuộc vào chỉ một phần của khóa. Ví dụ bảng (MaSV, MaMH, Diem, TenSV) có khóa gồm MaSV và MaMH vi phạm 2NF, vì TenSV chỉ phụ thuộc MaSV. Mỗi ô chứa một giá trị đơn là điều kiện của 1NF. Không có phụ thuộc bắc cầu là điều kiện thêm của 3NF. Chuẩn hóa không cấm khóa ngoại; tách bảng khi chuẩn hóa còn tạo thêm khóa ngoại.
Câu 5. Trong các tính chất ACID của giao dịch cơ sở dữ liệu, tính nguyên tố (atomicity) nghĩa là gì?
- A. Các giao dịch chạy đồng thời không nhìn thấy kết quả dở dang của nhau
- B. Dữ liệu của giao dịch đã xác nhận (commit) vẫn còn sau sự cố như mất điện
- C. Mọi thao tác trong giao dịch cùng được thực hiện, hoặc không thao tác nào có hiệu lực
- D. Sau khi giao dịch kết thúc, dữ liệu vẫn thỏa mọi ràng buộc đã khai báo
Đáp án: C. Mọi thao tác trong giao dịch cùng được thực hiện, hoặc không thao tác nào có hiệu lực
ACID gồm tính nguyên tố (Atomicity), nhất quán (Consistency), cô lập (Isolation) và bền vững (Durability). Tính nguyên tố coi giao dịch là một khối không chia nhỏ: chuyển tiền gồm trừ tài khoản A và cộng tài khoản B thì phải xảy ra cả hai; nếu lỗi giữa chừng, hệ quản trị hoàn tác (rollback) toàn bộ. Giao dịch đồng thời không thấy kết quả dở dang của nhau là tính cô lập. Dữ liệu còn sau mất điện là tính bền vững. Dữ liệu thỏa mọi ràng buộc là tính nhất quán.
Xem trang câu hỏi: Tính nguyên tố (atomicity) của giao dịch là gì?
Câu 6. Tạo chỉ mục (index) trên một cột của bảng chủ yếu nhằm mục đích gì?
- A. Giúp các truy vấn tìm kiếm, lọc theo cột đó chạy nhanh hơn
- B. Bắt buộc mọi giá trị trong cột đó phải khác nhau
- C. Giảm dung lượng lưu trữ mà bảng chiếm trên đĩa
- D. Mã hóa dữ liệu của cột đó để bảo mật
Đáp án: A. Giúp các truy vấn tìm kiếm, lọc theo cột đó chạy nhanh hơn
Chỉ mục giống mục lục của cuốn sách: hệ quản trị lưu thêm một cấu trúc đã sắp xếp, thường là cây B-tree, để tìm các dòng theo giá trị cột mà không phải quét cả bảng. Đổi lại, chỉ mục chiếm thêm dung lượng và làm thao tác thêm, sửa, xóa chậm hơn một chút, nên không giảm dung lượng. Chỉ mục thông thường cho phép giá trị trùng; muốn cấm trùng phải dùng chỉ mục UNIQUE, ràng buộc UNIQUE hoặc khóa chính. Chỉ mục cũng không mã hóa dữ liệu.
Xem trang câu hỏi: Tạo chỉ mục trên một cột nhằm mục đích gì?
Câu 7. Trong SQL, mệnh đề HAVING khác WHERE ở điểm nào?
- A. HAVING lọc từng dòng dữ liệu trước khi các dòng được gom thành nhóm
- B. HAVING chỉ dùng được trong câu lệnh SELECT không có mệnh đề GROUP BY
- C. HAVING dùng để sắp xếp các dòng kết quả theo thứ tự tăng dần hoặc giảm dần
- D. HAVING lọc các nhóm sau GROUP BY nên dùng được hàm gộp như COUNT, SUM
Đáp án: D. HAVING lọc các nhóm sau GROUP BY nên dùng được hàm gộp như COUNT, SUM
Câu lệnh SELECT áp dụng WHERE trước để loại các dòng không thỏa điều kiện. Sau đó GROUP BY gom các dòng còn lại thành nhóm, rồi HAVING mới lọc các nhóm, nên điều kiện trong HAVING dùng được hàm gộp, ví dụ HAVING COUNT(*) > 5. WHERE không dùng được hàm gộp. Lọc từng dòng trước khi gom nhóm là việc của WHERE. HAVING thường đi cùng GROUP BY chứ không bị cấm dùng với nó. Sắp xếp kết quả là việc của ORDER BY.
Câu 8. Điều kiện SQL nào lấy đúng các dòng mà cột email đang là NULL?
- A. WHERE email = NULL
- B. WHERE email = ''
- C. WHERE email IS NULL
- D. WHERE email = 0
Đáp án: C. WHERE email IS NULL
NULL nghĩa là chưa có giá trị, không phải chuỗi rỗng hay số 0. Mọi phép so sánh với NULL bằng dấu = đều cho kết quả không xác định (UNKNOWN), nên WHERE email = NULL không trả về dòng nào. SQL dùng toán tử riêng IS NULL và IS NOT NULL để kiểm tra. WHERE email = '' tìm chuỗi rỗng, trong hầu hết hệ quản trị đó là một giá trị đã nhập, khác NULL. So sánh với 0 cũng sai vì NULL không bằng bất kỳ giá trị nào.
Câu 9. Lệnh SQL nào xóa hẳn một bảng, gồm cả cấu trúc và dữ liệu, khỏi cơ sở dữ liệu?
- A. DELETE FROM ten_bang
- B. TRUNCATE TABLE ten_bang
- C. ALTER TABLE ten_bang DROP COLUMN ten_cot
- D. DROP TABLE ten_bang
Đáp án: D. DROP TABLE ten_bang
DROP TABLE xóa bảng khỏi cơ sở dữ liệu: cấu trúc, dữ liệu, chỉ mục và ràng buộc của bảng đều mất. DELETE FROM xóa các dòng, có thể kèm WHERE để chọn dòng cần xóa, còn bảng vẫn giữ nguyên. TRUNCATE TABLE xóa toàn bộ dòng nhanh hơn DELETE nhưng vẫn giữ cấu trúc bảng để dùng tiếp. ALTER TABLE kèm DROP COLUMN chỉ bỏ một cột, bảng và các cột còn lại vẫn còn.
Xem trang câu hỏi: Lệnh nào xóa cả bảng: DELETE, TRUNCATE hay DROP?
Câu 10. Khung nhìn (view) trong SQL là gì?
- A. Bảng ảo được định nghĩa bằng một câu truy vấn SELECT đã lưu
- B. Bảng tạm chứa dữ liệu thật, chỉ tồn tại trong phiên làm việc hiện tại
- C. Màn hình đồ họa để xem và sửa dữ liệu của bảng
- D. Bản sao lưu của toàn bộ cơ sở dữ liệu tại một thời điểm
Đáp án: A. Bảng ảo được định nghĩa bằng một câu truy vấn SELECT đã lưu
View lưu một câu SELECT dưới một cái tên. Khi truy vấn view, hệ quản trị chạy câu SELECT đó trên các bảng gốc, nên kết quả luôn theo dữ liệu hiện tại; view thông thường không lưu dữ liệu riêng. View giúp che bớt cột không muốn lộ và rút gọn các truy vấn phức tạp. Bảng tạm thì chứa dữ liệu thật và chỉ tồn tại trong phiên làm việc. Màn hình xem dữ liệu là chức năng của phần mềm quản trị. Sao lưu là việc khác hẳn.