Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

CSDL_Session06_Sau

Total questions: 15

Worksheet time: 8mins

Name
Class
Date
1.

Trong MySQL, hàm nào dùng để đếm tổng số dòng của tất cả cột trong bảng (bao gồm cả cột chứa giá trị NULL)?

a)

ADD(*)

b)

COUNT(*)

c)

SUM(*)

d)

TOTAL(*)

2.

Kết quả của LEFT JOIN (Left Outer Join) sẽ trả về dữ liệu như thế nào?

a)

Chỉ trả về dữ liệu khớp nhau giữa 2 bảng

b)

Trả về tất cả dòng từ bảng bên phải và dòng khớp từ bảng bên trái

c)

Trả về tất cả dòng từ bảng bên trái và dòng khớp từ bảng bên phải

d)

Trả về tất cả dữ liệu của cả 2 bảng

3.

Nếu muốn lọc dữ liệu SAU KHI đã gom nhóm (GROUP BY), ta dùng mệnh đề nào?

a)

WHERE

b)

HAVING

c)

ORDER BY

d)

SELECT

4.

Trong INNER JOIN, nếu một dòng ở bảng A (bảng trái) không tìm thấy dòng khớp ở bảng B (bảng phải),

a)

Được hiển thị với giá trị NULL

b)

Bị loại bỏ khỏi kết quả

c)

Được hiển thị với giá trị 0

d)

Báo lỗi cú pháp

5.

Sự khác biệt chính giữa COUNT(*) và COUNT(ten_cot) là gì?

a)

Không có sự khác biệt

b)

COUNT(*) đếm cả NULL, COUNT(ten_cot) bỏ qua NULL

c)

COUNT(*) chạy chậm hơn

d)

COUNT(ten_cot) đếm cả NULL, COUNT(*) bỏ qua NULL

6.

Bạn muốn lấy danh sách tất cả khách hàng, kể cả những người chưa từng mua đơn hàng nào. Bạn nên dùng loại JOIN nào (giả sử bảng KhachHang là bảng chính)?

a)

INNER JOIN

b)

LEFT JOIN (từ bảng Khách hàng)

c)

RIGHT JOIN (từ bảng Khách hàng)

d)

INNER JOIN kết hợp WHERE

7.

Tại sao câu lệnh SELECT PhongBan, SUM(Luong) FROM NhanVien bị lỗi (hoặc cho kết quả không mong muốn trong một số hệ CSDL)?

a)

Thiếu mệnh đề WHERE

b)

Thiếu mệnh đề GROUP BY PhongBan

c)

Hàm SUM không dùng được cho cột Lương

d)

Cú pháp SELECT sai thứ tự

8.

Khi sử dụng RIGHT JOIN giữa bảng A (bảng trái) và bảng B (bảng phải), nếu không tìm thấy dữ liệu khớp ở bảng A, các cột của bảng A sẽ hiển thị giá trị gì?

a)

0

b)

Rỗng (Empty string)

c)

NULL

d)

Giá trị mặc định

9.

Sự khác biệt cơ bản giữa mệnh đề WHERE và HAVING trong SQL là gì về thời điểm thực thi (thứ tự xử lý truy vấn)?

a)

WHERE chạy sau khi gom nhóm, HAVING chạy trước

b)

WHERE chạy trước khi gom nhóm, HAVING chạy sau

c)

Cả hai chạy cùng lúc

d)

HAVING chỉ dùng được cho bảng ảo

10.

Trong các câu lệnh SQL sau đây, mệnh đề nào có cú pháp SAI (sẽ gây lỗi ở hầu hết các hệ quản trị CSDL như MySQL chế độ nghiêm ngặt, PostgreSQL, SQL Server)?

a)

SELECT * FROM Table GROUP BY ID HAVING COUNT(ID) > 5

b)

SELECT ID, COUNT(*) FROM Table WHERE COUNT(*) > 5 GROUP BY ID

c)

SELECT ID, COUNT(*) FROM Table GROUP BY ID HAVING COUNT(*) > 5

d)

SELECT * FROM Table WHERE ID > 10

11.

Trong SQL (đặc biệt khi làm việc với GROUP BY để xử lý nhóm dữ liệu), hàm nào sau đây KHÔNG phải là hàm tổng hợp (aggregate function)?

a)

Curdate()

b)

Sum()

c)

Avg()

d)

Count()

12.

Trong thực tế lập trình SQL, tại sao RIGHT JOIN ít được sử dụng hơn so với LEFT JOIN?

a)

Vì RIGHT JOIN chạy chậm hơn LEFT JOIN về hiệu suất

b)

Vì MySQL không hỗ trợ tốt RIGHT JOIN

c)

Vì thói quen đọc code từ trái sang phải, lập trình viên thường đảo vị trí bảng để dùng LEFT JOIN, giúp câu lệnh dễ đọc và hiểu hơn

d)

Do RIGHT JOIN không thể kết hợp với GROUP BY

13.

Để lấy danh sách các phòng ban có tổng lương nhân viên lớn hơn 50.000 USD (tính tổng theo từng phòng ban), câu truy vấn SQL nào sau đây là đúng và đầy đủ?

a)

SELECT PhongBan, SUM(Luong) FROM NhanVien GROUP BY PhongBan WHERE SUM(Luong) > 50000

b)

SELECT PhongBan, SUM(Luong) FROM NhanVien GROUP BY PhongBan HAVING SUM(Luong) > 50000

c)

SELECT PhongBan, SUM(Luong) FROM NhanVien HAVING SUM(Luong) > 50000

d)

SELECT PhongBan, SUM(Luong) FROM NhanVien WHERE Luong > 50000

14.

Giả sử bảng A: {1, 2, 3}, Bảng B: {2, 3, 4}.

Kết quả của "SELECT A.ID FROM A

LEFT JOIN B ON A.ID = B.ID

WHERE B.ID IS NULL" là gì?

a)

1

b)

4

c)

2, 3

d)

1, 4

15.

Bạn cần lọc danh sách đơn hàng chỉ của năm 2024, sau đó tính tổng tiền theo từng tháng trong năm đó.

Cách viết truy vấn SQL nào sau đây sẽ tối ưu hiệu suất nhất?

a)

Dùng HAVING (ví dụ: HAVING YEAR(NgayDatHang) = 2024) sau khi GROUP BY

b)

Dùng WHERE (ví dụ: WHERE YEAR(NgayDatHang) = 2024) trước khi GROUP BY

c)

Cả hai cách có hiệu suất như nhau

d)

Dùng JOIN với bảng năm