WorksheetsCSDL_Session06_Sau
Total questions: 15
Worksheet time: 8mins
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)?
ADD(*)
COUNT(*)
SUM(*)
TOTAL(*)
Kết quả của LEFT JOIN (Left Outer Join) sẽ trả về dữ liệu như thế nào?
Chỉ trả về dữ liệu khớp nhau giữa 2 bảng
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
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
Trả về tất cả dữ liệu của cả 2 bảng
Nếu muốn lọc dữ liệu SAU KHI đã gom nhóm (GROUP BY), ta dùng mệnh đề nào?
WHERE
HAVING
ORDER BY
SELECT
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),
Được hiển thị với giá trị NULL
Bị loại bỏ khỏi kết quả
Được hiển thị với giá trị 0
Báo lỗi cú pháp
Sự khác biệt chính giữa COUNT(*) và COUNT(ten_cot) là gì?
Không có sự khác biệt
COUNT(*) đếm cả NULL, COUNT(ten_cot) bỏ qua NULL
COUNT(*) chạy chậm hơn
COUNT(ten_cot) đếm cả NULL, COUNT(*) bỏ qua NULL
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)?
INNER JOIN
LEFT JOIN (từ bảng Khách hàng)
RIGHT JOIN (từ bảng Khách hàng)
INNER JOIN kết hợp WHERE
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)?
Thiếu mệnh đề WHERE
Thiếu mệnh đề GROUP BY PhongBan
Hàm SUM không dùng được cho cột Lương
Cú pháp SELECT sai thứ tự
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ì?
0
Rỗng (Empty string)
NULL
Giá trị mặc định
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)?
WHERE chạy sau khi gom nhóm, HAVING chạy trước
WHERE chạy trước khi gom nhóm, HAVING chạy sau
Cả hai chạy cùng lúc
HAVING chỉ dùng được cho bảng ảo
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)?
SELECT * FROM Table GROUP BY ID HAVING COUNT(ID) > 5
SELECT ID, COUNT(*) FROM Table WHERE COUNT(*) > 5 GROUP BY ID
SELECT ID, COUNT(*) FROM Table GROUP BY ID HAVING COUNT(*) > 5
SELECT * FROM Table WHERE ID > 10
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)?
Curdate()
Sum()
Avg()
Count()
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?
Vì RIGHT JOIN chạy chậm hơn LEFT JOIN về hiệu suất
Vì MySQL không hỗ trợ tốt RIGHT JOIN
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
Do RIGHT JOIN không thể kết hợp với GROUP BY
Để 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 đủ?
SELECT PhongBan, SUM(Luong) FROM NhanVien GROUP BY PhongBan WHERE SUM(Luong) > 50000
SELECT PhongBan, SUM(Luong) FROM NhanVien GROUP BY PhongBan HAVING SUM(Luong) > 50000
SELECT PhongBan, SUM(Luong) FROM NhanVien HAVING SUM(Luong) > 50000
SELECT PhongBan, SUM(Luong) FROM NhanVien WHERE Luong > 50000
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ì?
1
4
2, 3
1, 4
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?
Dùng HAVING (ví dụ: HAVING YEAR(NgayDatHang) = 2024) sau khi GROUP BY
Dùng WHERE (ví dụ: WHERE YEAR(NgayDatHang) = 2024) trước khi GROUP BY
Cả hai cách có hiệu suất như nhau
Dùng JOIN với bảng năm
