Phiếu bài tập Cơ sở dữ liệu và SQL có đáp án

Phiếu bài tập Cơ sở dữ liệu và SQL miễn phí để in: 8 bài từ cơ bản đến mức đề thi, kèm đáp án. In ra hoặc lưu thành PDF.

Dành cho giảng viên: miễn phí in, sao chép và sử dụng trên lớp. Mỗi phiếu bài tập mới có số liệu mới và đáp án riêng. Chúng tôi rất cảm ơn nếu bạn đặt liên kết đến ExamProblems trên trang môn học.

Tên: ____________________   Ngày: ____________

1.Dễ

Làm thế nào để sắp xếp một kết quả từ lương cao nhất đến thấp nhất?

  1. ASORT salary DOWN
  2. BORDER BY salary ASC
  3. CORDER BY salary DESC
  4. DGROUP BY salary DESC
2.Dễ

Khóa ứng viên (candidate key) là gì?

  1. ABất kỳ cột nào chứa giá trị NULL
  2. BMột tập cột tối thiểu xác định duy nhất từng hàng
  3. CMột cột đang chờ trở thành khóa ngoại
  4. DMột tập cột được chia sẻ giữa hai bảng để liên kết các hàng của chúng
3.Dễ

Khóa chính (primary key) là gì?

  1. AMột cột có thể chứa giá trị trùng lặp nhưng không bao giờ được chứa NULL
  2. BMột cột hoặc tập hợp cột xác định duy nhất từng hàng
  3. CCột đầu tiên của mọi bảng
  4. DMật khẩu của cơ sở dữ liệu
4.Trung bình

Truy vấn nào liệt kê các khách hàng chưa bao giờ đặt đơn hàng?

  1. ASELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  2. BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
5.Trung bình

Câu lệnh nào xóa mọi hàng của một bảng, giữ nguyên cấu trúc và không thể có mệnh đề WHERE?

  1. ADROP TABLE
  2. BALTER TABLE
  3. CDELETE FROM kèm mệnh đề WHERE
  4. DTRUNCATE TABLE
6.Trung bình

INTERSECT trả về gì khi dùng giữa hai truy vấn SELECT?

  1. ACác hàng có trong kết quả thứ nhất nhưng không có trong kết quả thứ hai
  2. BTất cả các hàng từ cả hai kết quả
  3. CTích Descartes của các kết quả
  4. DCác hàng xuất hiện trong cả hai kết quả
7.Khó

Vì sao SELECT dept, name, COUNT(*) FROM emp GROUP BY dept không hợp lệ trong SQL chuẩn?

  1. ACOUNT(*) không thể dùng cùng GROUP BY
  2. BGROUP BY phải liệt kê mọi cột của bảng
  3. Cdept phải xuất hiện bên trong một hàm tổng hợp
  4. Dname không được nhóm cũng không được tổng hợp, nên nó không có một giá trị duy nhất cho mỗi nhóm
8.Khó

Hai giao dịch cùng đọc stock = 10, mỗi giao dịch trừ 1 và ghi kết quả, cho ra 9 thay vì 8. Đây là dị thường nào?

  1. AĐọc bóng ma
  2. BCập nhật bị mất (lost update)
  3. CDị thường xóa
  4. DĐọc dữ liệu bẩn

Đáp án

  1. 1. C · ORDER BY salary DESC
  2. 2. B · Một tập cột tối thiểu xác định duy nhất từng hàng
  3. 3. B · Một cột hoặc tập hợp cột xác định duy nhất từng hàng
  4. 4. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  5. 5. D · TRUNCATE TABLE
  6. 6. D · Các hàng xuất hiện trong cả hai kết quả
  7. 7. D · name không được nhóm cũng không được tổng hợp, nên nó không có một giá trị duy nhất cho mỗi nhóm
  8. 8. B · Cập nhật bị mất (lost update)

Lời giải đầy đủ từng bước: hãy luyện chủ đề này trên examproblems.com.