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ễ
GROUP BY làm gì trong một truy vấn?
AĐặt các hàng có cùng giá trị vào các nhóm để các hàm tổng hợp được tính theo từng nhóm
BLoại bỏ các hàng có giá trị NULL
CNối hai bảng trên các cột chung của chúng
DSắp xếp các hàng của kết quả theo thứ tự bảng chữ cái
2.Dễ
Khóa ứng viên (candidate key) là gì?
AMột tập cột tối thiểu xác định duy nhất từng hàng
BMộ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
CBất kỳ cột nào chứa giá trị NULL
DMột cột đang chờ trở thành khóa ngoại
3.Dễ
Ràng buộc UNIQUE trên một cột bảo đảm điều gì?
AKhông có hai hàng nào có cùng một giá trị khác NULL trong cột đó
BCác giá trị của cột được sắp xếp
CCột đó tự động trở thành khóa chính của bảng
DCột không thể thay đổi sau khi chèn
4.Trung bình
Truy vấn nào trả về số thành phố khác nhau trong bảng customers?
ASELECT COUNT(city) FROM customers GROUP BY city
BSELECT SUM(DISTINCT city) FROM customers
CSELECT DISTINCT COUNT(city) FROM customers
DSELECT COUNT(DISTINCT city) FROM customers
5.Trung bình
Vì sao một bảng chỉ có thể có một chỉ mục cụm (clustered index)?
AChuẩn SQL cấm có nhiều hơn một chỉ mục trên một bảng
BCác hàng chỉ có thể được lưu vật lý theo một thứ tự
CChỉ mục cụm chỉ có thể nằm trên khóa chính
DChỉ mục cụm dùng quá nhiều bộ nhớ
6.Trung bình
Một bảng có các hàng mà col là NULL. WHERE col = NULL trả về những hàng nào?
ATất cả các hàng của bảng
BKhông có hàng nào, vì phép so sánh cho kết quả unknown
CMột lỗi ở mọi cơ sở dữ liệu
DChỉ những hàng mà col là NULL, giống như với IS NULL
7.Khó
Câu lệnh sau trả về gì: SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?
AChỉ các sinh viên có điểm cao nhất
BĐiểm trung bình của tất cả sinh viên
CCác sinh viên có điểm cao hơn điểm trung bình
DMột lỗi vì truy vấn con không được phép trong WHERE
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?
AHầ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
BKhông thể tạo chỉ mục trên cột Boolean
CTRUE bị chỉ mục coi là NULL
DBộ tối ưu hóa không bao giờ dùng chỉ mục trong mệnh đề WHERE
Đáp án
1. A · Đặt các hàng có cùng giá trị vào các nhóm để các hàm tổng hợp được tính theo từng nhóm
2. A · Một tập cột tối thiểu xác định duy nhất từng hàng
3. A · Không có hai hàng nào có cùng một giá trị khác NULL trong cột đó
4. D · SELECT COUNT(DISTINCT city) FROM customers
5. B · Các hàng chỉ có thể được lưu vật lý theo một thứ tự
6. B · Không có hàng nào, vì phép so sánh cho kết quả unknown
7. C · Các sinh viên có điểm cao hơn điểm trung bình
8. A · 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.