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ễ

Các câu lệnh như CREATE, ALTER và DROP thuộc phần nào của SQL?

  1. ANgôn ngữ điều khiển giao dịch (TCL)
  2. BNgôn ngữ định nghĩa dữ liệu (DDL)
  3. CNgôn ngữ điều khiển dữ liệu (DCL)
  4. DNgôn ngữ thao tác dữ liệu (DML)
2.Dễ

Câu lệnh SQL nào truy xuất dữ liệu từ một bảng?

  1. AINSERT
  2. BUPDATE
  3. CSELECT
  4. DCREATE
3.Dễ

COMMIT làm gì trong một giao dịch?

  1. AHoàn tác mọi thay đổi đã thực hiện kể từ khi giao dịch bắt đầu
  2. BKhóa toàn bộ cơ sở dữ liệu
  3. CLàm cho mọi thay đổi của giao dịch trở thành vĩnh viễn
  4. DBắt đầu một bảng mới
4.Trung bình

Bảng a có 3 hàng và bảng b có 4 hàng. SELECT * FROM a CROSS JOIN b trả về bao nhiêu hàng?

  1. A7
  2. B3
  3. C4
  4. D12
5.Trung bình

Truy vấn nào trả về mức lương cao nhất trong mỗi phòng ban?

  1. ASELECT dept, MAX(salary) FROM emp GROUP BY dept
  2. BSELECT dept, salary FROM emp WHERE salary = MAX(salary)
  3. CSELECT dept, MAX(salary) FROM emp ORDER BY dept
  4. DSELECT MAX(dept), salary FROM emp GROUP BY salary
6.Trung bình

Vì sao SELECT price * 2 AS double_price FROM t WHERE double_price > 10 thất bại ở hầu hết các cơ sở dữ liệu?

  1. ABí danh không được chứa dấu gạch dưới
  2. BPhép tính số học không được phép trong danh sách SELECT
  3. CWHERE chỉ có thể so sánh các cột văn bản
  4. DWHERE được đánh giá trước danh sách SELECT, nên bí danh chưa tồn tại
7.Khó

Có một chỉ mục phức hợp trên (last_name, first_name). Điều kiện nào có thể dùng nó hiệu quả nhất?

  1. AWHERE first_name = 'Eva'
  2. BWHERE UPPER(first_name) = 'EVA'
  3. CWHERE last_name = 'Jansen'
  4. DWHERE first_name LIKE '%a'
8.Khó

Một bảng có một triệu hàng và một cột Boolean is_active là TRUE với 95% số hàng. Vì sao bộ tối ưu hóa có thể bỏ qua chỉ mục trên is_active cho WHERE is_active = TRUE?

  1. ABộ tối ưu hóa không bao giờ dùng chỉ mục trong mệnh đề WHERE
  2. BKhông thể tạo chỉ mục trên cột Boolean
  3. CHầu hết các hàng đều khớp, nên quét toàn bộ bảng rẻ hơn nhiều lần tra cứu chỉ mục
  4. DTRUE bị chỉ mục coi là NULL

Đáp án

  1. 1. B · Ngôn ngữ định nghĩa dữ liệu (DDL)
  2. 2. C · SELECT
  3. 3. C · Làm cho mọi thay đổi của giao dịch trở thành vĩnh viễn
  4. 4. D · 12
  5. 5. A · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  6. 6. D · WHERE được đánh giá trước danh sách SELECT, nên bí danh chưa tồn tại
  7. 7. C · WHERE last_name = 'Jansen'
  8. 8. C · Hầu hết các hàng đều khớp, nên quét toàn bộ bảng rẻ hơn nhiều lần tra cứu chỉ mục

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