wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

CSDL_SS7_Sau

Total questions: 15

Worksheet time: 8mins

Name
Class
Date
1.

Trong kiến trúc của một câu lệnh SQL có chứa Subquery (không phải dạng tương quan), phát biểu nào sau đây là đúng về thứ tự thực hiện?

a)

Truy vấn cha (Outer Query) thực hiện trước, sau đó truyền kết quả vào truy vấn con.

b)

Truy vấn con (Inner Query) thực hiện trước, sau đó kết quả được dùng cho truy vấn cha.

c)

Cả hai truy vấn thực hiện song song cùng lúc.

d)

Thứ tự thực hiện là ngẫu nhiên tùy thuộc vào hệ quản trị CSDL.

2.

Khi sử dụng Subquery trong mệnh đề WHERE, dấu ngoặc đơn () đóng vai trò gì?

a)

Không bắt buộc, chỉ dùng để trang trí cho dễ nhìn.

b)

Bắt buộc, dùng để xác định phạm vi của truy vấn con để hệ thống ưu tiên xử lý.

c)

Chỉ bắt buộc khi truy vấn con trả về nhiều dòng.

d)

Dùng để comment (chú thích) đoạn mã.

3.

Giả sử truy vấn con trả về kết quả là một danh sách các mã phòng ban: (10, 20, 30). Câu lệnh nào sau đây ở truy vấn cha là SAI về mặt cú pháp/logic?

a)

WHERE PhongBanID IN (SELECT ...)

b)

WHERE PhongBanID = (SELECT ...)

c)

WHERE PhongBanID NOT IN (SELECT ...)

d)

WHERE PhongBanID > ALL (SELECT ...)

4.

Subquery thường KHÔNG xuất hiện ở mệnh đề nào sau đây trong các thao tác cơ bản?

a)

SELECT

b)

FROM

c)

WHERE

d)

GROUP BY

5.

Bạn muốn tìm tất cả nhân viên có mức lương cao hơn mức lương của nhân viên có ID là 100. Loại Subquery nào phù hợp nhất để giải quyết vấn đề này?

a)

Table Subquery (Truy vấn trả về bảng)

b)

Scalar Subquery (Truy vấn vô hướng - trả về 1 giá trị duy nhất)

c)

Correlated Subquery (Truy vấn tương quan)

d)

Subquery trong mệnh đề FROM

6.

Khi sử dụng Subquery trong mệnh đề FROM (ví dụ: SELECT * FROM (SELECT ...) ...), yêu cầu bắt buộc về mặt cú pháp là gì?

a)

Phải sử dụng từ khóa DISTINCT.

b)

Phải đặt tên giả (Alias) cho bảng tạm được tạo ra từ Subquery.

c)

Truy vấn con không được chứa hàm tổng hợp (SUM, AVG).

d)

Phải có mệnh đề WHERE bên trong truy vấn con.

7.

Để tìm các sản phẩm có giá bán lớn hơn mức giá trung bình của toàn bộ sản phẩm trong kho. Câu lệnh nào sau đây là hợp lệ?

a)

SELECT * FROM SanPham WHERE Gia > AVG(Gia)

b)

SELECT * FROM SanPham WHERE Gia > (SELECT AVG(Gia) FROM SanPham)

c)

SELECT * FROM SanPham WHERE Gia IN (SELECT AVG(Gia) FROM SanPham)

d)

SELECT * FROM SanPham HAVING Gia > AVG(Gia)

8.

Điểm khác biệt chính về cơ chế hoạt động giữa Truy vấn con độc lập và Truy vấn con tương quan (Correlated Subquery) là gì?

a)

Truy vấn con độc lập chạy nhiều lần, truy vấn tương quan chạy 1 lần.

b)

Truy vấn con tương quan phụ thuộc vào giá trị của truy vấn cha và phải chạy lại với mỗi dòng của truy vấn cha.

c)

Truy vấn con tương quan không thể sử dụng trong mệnh đề WHERE.

d)

Truy vấn con độc lập luôn chậm hơn truy vấn con tương quan.

9.

Xét câu lệnh sau: SELECT * FROM NhanVien WHERE PhongBanID NOT IN (SELECT ID FROM PhongBan WHERE TenPhong = 'Kho'). Nếu trong bảng PhongBan có một dòng có ID là NULL, kết quả trả về sẽ như thế nào?

a)

Trả về danh sách nhân viên bình thường, bỏ qua giá trị NULL.

b)

Báo lỗi cú pháp "Syntax Error".

c)

Trả về rỗng (Không có kết quả nào), do cơ chế so sánh với NULL.

d)

Trả về tất cả nhân viên.

10.

Bạn nhận được thông báo lỗi "Subquery returns more than 1 row" khi chạy câu lệnh so sánh lương. Nguyên nhân là gì?

a)

Do bạn quên đóng ngoặc đơn.

b)

Do phòng ban đó không có nhân viên nào.

c)

Do toán tử so sánh đơn trị (như dấu >), nhưng Subquery lại trả về một danh sách lương.

d)

Do bạn chưa dùng Alias cho bảng NhanVien.

11.

Xét về mặt hiệu năng (Performance) trên tập dữ liệu lớn, khi cần lấy dữ liệu từ nhiều bảng liên quan, phương án nào thường được ưu tiên hơn?

a)

Sử dụng Truy vấn lồng nhiều cấp (Nested Subqueries) vì dễ viết.

b)

Sử dụng Correlated Subquery vì nó mạnh mẽ.

c)

Sử dụng JOIN vì thường được hệ quản trị CSDL tối ưu hóa tốt hơn.

d)

Sử dụng Subquery trong SELECT

12.

Câu 12: Quan sát câu lệnh lỗi: SELECT TenNV, (...) AS Phong FROM NhanVien NV WHERE Phong = 'IT'. Tại sao câu lệnh này bị lỗi "Unknown column 'Phong' in 'where clause'"?

a)

Vì không thể đặt Alias trong Subquery.

b)

Vì Subquery trong SELECT trả về nhiều giá trị.

c)

Vì mệnh đề WHERE được thực thi trước mệnh đề SELECT, nên nó chưa biết cột Phong là gì.

d)

Vì bảng PhongBan chưa được JOIN.

13.

Câu 13: Bạn cần tìm danh sách nhân viên có lương cao hơn lương trung bình của chính phòng ban mà họ đang làm việc. Đây là dạng bài toán cần sử dụng kỹ thuật nào?

a)

Independent Subquery (Truy vấn độc lập) trong FROM.

b)

Correlated Subquery (Truy vấn tương quan) trong WHERE.

c)

Subquery đơn giản với toán tử IN.

d)

Subquery trong SELECT để tính tổng.

14.

Câu 14: Khi sử dụng Subquery trong mệnh đề SELECT (Ví dụ: SELECT TenNV, (Subquery) FROM ...), hạn chế lớn nhất là gì?

a)

Subquery đó phải là Scalar Subquery (trả về đúng 1 dòng, 1 cột).

b)

Không thể sử dụng Alias cho cột kết quả này.

c)

Subquery này không được tham chiếu đến bảng bên ngoài.

d)

Subquery này bắt buộc phải dùng hàm COUNT.

15.

Câu 15: Cho sơ đồ: QuocGia -> ThanhPho -> KhachHang. Bạn muốn tìm tên các Quốc gia có khách hàng tên là "Alice" bằng Subquery lồng nhau. Thứ tự tư duy logic (từ trong ra ngoài) sẽ là:

a)

Tìm ID QuocGia của Alice -> Tìm ThanhPho -> Tìm TenQuocGia.

b)

Tìm TenQuocGia -> Tìm ThanhPho -> Tìm KhachHang "Alice".

c)

Tìm KhachHang "Alice" (lấy ID Thành phố) -> Tìm trong bảng ThanhPho (lấy ID Quốc gia) -> Tìm trong bảng QuocGia (lấy tên).

d)

Dùng JOIN 3 bảng cùng lúc thay vì suy nghĩ từng bước.