1. Chọn phát biểu ĐÚNG về khái niệm "khóa chính" (primary key) trong cơ sở dữ liệu quan hệ.
A. Khóa chính có thể chứa giá trị NULL.
B. Khóa chính có thể trùng lặp giữa các bản ghi.
C. Khóa chính là một hoặc một tập hợp các thuộc tính để xác định duy nhất một bản ghi trong bảng.
D. Khóa chính chỉ có thể là một thuộc tính duy nhất.
2. Để biểu diễn mối quan hệ "nhiều-nhiều" giữa hai bảng "SinhVien" và "MonHoc", chúng ta thường tạo một bảng trung gian. Bảng trung gian này sẽ chứa các khóa chính của hai bảng gốc dưới dạng khóa ngoại. Tên bảng trung gian thường được đặt theo quy ước là gì?
A. Tên một trong hai bảng gốc.
B. Tên của bảng có nhiều bản ghi hơn.
C. Tên kết hợp của hai bảng gốc (ví dụ: SinhVien_MonHoc).
D. Tên ngẫu nhiên.
3. Trong ngôn ngữ truy vấn SQL, mệnh đề nào được sử dụng để lọc các bản ghi dựa trên một điều kiện cho trước?
A. SELECT
B. FROM
C. WHERE
D. ORDER BY
4. Giả sử có bảng "HocSinh" với các cột "MaHS" (khóa chính), "TenHS", "NgaySinh". Câu lệnh SQL nào sau đây sẽ trả về tất cả học sinh có họ "Nguyễn"?
A. SELECT * FROM HocSinh WHERE TenHS LIKE "Nguyễn%";
B. SELECT * FROM HocSinh WHERE TenHS = "Nguyễn";
C. SELECT * FROM HocSinh WHERE TenHS LIKE "%Nguyễn";
D. SELECT * FROM HocSinh WHERE TenHS IN ("Nguyễn");
5. Trong SQL, mệnh đề nào được sử dụng để lọc các nhóm đã được tạo bởi mệnh đề GROUP BY dựa trên một điều kiện trên các hàm tổng hợp?
A. WHERE
B. ORDER BY
C. HAVING
D. GROUP BY
6. Giả sử bạn có bảng "HocSinh" (MaHS, TenHS, DiemTB) và bạn muốn tìm những sinh viên có điểm trung bình lớn hơn điểm trung bình chung của cả lớp. Bạn sẽ sử dụng kỹ thuật nào sau đây?
A. Sử dụng mệnh đề HAVING.
B. Sử dụng Subquery (truy vấn con) trong mệnh đề WHERE.
C. Sử dụng JOIN để nối bảng với chính nó.
D. Sử dụng CTE (Common Table Expression).
7. Lệnh SQL nào dùng để xóa tất cả các bản ghi khỏi bảng "TaiKhoan" mà không xóa cấu trúc bảng?
A. DROP TABLE TaiKhoan;
B. DELETE FROM TaiKhoan;
C. TRUNCATE TABLE TaiKhoan;
D. REMOVE ALL FROM TaiKhoan;
8. Khi hai bảng có quan hệ "một-nhiều", ví dụ bảng "KhachHang" (MaKH, TenKH) và bảng "DonHang" (MaDH, MaKH, NgayDatHang), để lấy tất cả đơn hàng của một khách hàng cụ thể, ta sử dụng khóa ngoại (foreign key) nào?
A. MaKH trong bảng KhachHang
B. MaDH trong bảng DonHang
C. MaKH trong bảng DonHang
D. MaKH trong cả hai bảng
9. Mệnh đề nào trong SQL dùng để nhóm các hàng có cùng giá trị trong một hoặc nhiều cột lại với nhau để thực hiện các hàm tổng hợp?
A. ORDER BY
B. GROUP BY
C. HAVING
D. DISTINCT
10. Trong truy vấn SQL, toán tử LIKE được sử dụng kết hợp với các ký tự đại diện nào để tìm kiếm mẫu chuỗi?
A. "%" và "?"
B. "%" và "_"
C. "*" và "?"
D. "_" và "+"
11. Phát biểu nào sau đây mô tả đúng về mối quan hệ "nhiều-nhiều" (many-to-many) trong cơ sở dữ liệu quan hệ?
A. Một bản ghi ở bảng này có thể liên kết với tối đa một bản ghi ở bảng kia.
B. Một bản ghi ở bảng này có thể liên kết với nhiều bản ghi ở bảng kia, và ngược lại.
C. Một bản ghi ở bảng này có thể liên kết với nhiều bản ghi ở bảng kia, nhưng một bản ghi ở bảng kia chỉ liên kết với tối đa một bản ghi ở bảng này.
D. Một bản ghi ở bảng này chỉ liên kết với tối đa một bản ghi ở bảng kia, nhưng một bản ghi ở bảng kia có thể liên kết với nhiều bản ghi ở bảng này.
12. Câu lệnh SQL nào sau đây sẽ lấy ra tên của 5 sản phẩm có giá cao nhất từ bảng "SanPham" (MaSP, TenSP, Gia)?
A. SELECT TenSP, Gia FROM SanPham ORDER BY Gia DESC LIMIT 5;
B. SELECT TenSP, Gia FROM SanPham ORDER BY Gia ASC LIMIT 5;
C. SELECT TenSP, Gia FROM SanPham WHERE Gia > (SELECT AVG(Gia) FROM SanPham) LIMIT 5;
D. SELECT TenSP, Gia FROM SanPham GROUP BY Gia DESC LIMIT 5;
13. Trong SQL, toán tử nào dùng để kết hợp các giá trị từ hai hoặc nhiều cột thành một chuỗi duy nhất?
A. || (Concatenation Operator)
B. CONCAT()
C. JOIN
D. UNION
14. Trong truy vấn SQL, phát biểu nào sau đây là ĐÚNG về mục đích của toán tử BETWEEN?
A. So sánh một giá trị với một tập hợp các giá trị.
B. Kiểm tra xem một giá trị có nằm trong một phạm vi xác định (bao gồm cả hai đầu mút) hay không.
C. Kiểm tra xem một giá trị có nằm trong một phạm vi xác định (không bao gồm hai đầu mút) hay không.
D. So sánh hai giá trị với nhau.
15. Khi thực hiện phép kết nối (JOIN) hai bảng, mệnh đề nào thường được sử dụng để chỉ định điều kiện liên kết giữa hai bảng?
A. ON
B. WHERE
C. USING
D. HAVING
16. Trong SQL, "INSERT INTO" được sử dụng để làm gì?
A. Cập nhật dữ liệu đã có trong bảng.
B. Xóa dữ liệu khỏi bảng.
C. Thêm bản ghi mới vào bảng.
D. Tạo cấu trúc bảng mới.
17. Trong SQL, hàm tổng hợp nào được sử dụng để đếm số lượng bản ghi trong một tập hợp?
A. SUM()
B. AVG()
C. COUNT()
D. MAX()
18. Câu lệnh SQL nào sau đây sẽ cập nhật "DiaChi" thành "Hà Nội" cho tất cả nhân viên có "MaNV" là "NV001" trong bảng "NhanVien"?
A. INSERT INTO NhanVien (DiaChi) VALUES ("Hà Nội") WHERE MaNV = "NV001";
B. UPDATE NhanVien SET DiaChi = "Hà Nội" WHERE MaNV = "NV001";
C. MODIFY NhanVien SET DiaChi = "Hà Nội" WHERE MaNV = "NV001";
D. ALTER TABLE NhanVien SET DiaChi = "Hà Nội" WHERE MaNV = "NV001";
19. Giả sử bạn có bảng "NhanVien" (MaNV, TenNV, Luong). Bạn muốn tìm những nhân viên có mức lương từ 5,000,000 đến 10,000,000. Câu lệnh SQL nào là phù hợp nhất?
A. SELECT TenNV, Luong FROM NhanVien WHERE Luong BETWEEN 5000000 AND 10000000;
B. SELECT TenNV, Luong FROM NhanVien WHERE Luong >= 5000000 OR Luong <= 10000000;
C. SELECT TenNV, Luong FROM NhanVien WHERE Luong > 5000000 AND Luong < 10000000;
D. SELECT TenNV, Luong FROM NhanVien WHERE Luong IN (5000000, 10000000);
20. Giả sử có bảng "SinhVien" (MaSV, TenSV, DiemTB) và bảng "MonHoc" (MaMH, TenMH). Để lấy tên sinh viên và tên môn học mà sinh viên đó đăng ký, ta cần thực hiện loại kết nối nào?
A. INNER JOIN
B. LEFT JOIN
C. RIGHT JOIN
D. FULL OUTER JOIN
21. Câu lệnh SQL nào sau đây dùng để lấy ra các giá trị duy nhất từ cột "TenLop" trong bảng "LopHoc"?
A. SELECT TenLop FROM LopHoc;
B. SELECT DISTINCT TenLop FROM LopHoc;
C. SELECT UNIQUE TenLop FROM LopHoc;
D. SELECT COUNT(TenLop) FROM LopHoc;
22. Giả sử có bảng "SinhVien" (MaSV, TenSV, DiemTB). Câu lệnh SQL nào để sắp xếp danh sách sinh viên theo điểm trung bình giảm dần?
A. SELECT MaSV, TenSV, DiemTB FROM SinhVien ORDER BY DiemTB ASC;
B. SELECT MaSV, TenSV, DiemTB FROM SinhVien ORDER BY DiemTB DESC;
C. SELECT MaSV, TenSV, DiemTB FROM SinhVien GROUP BY DiemTB DESC;
D. SELECT MaSV, TenSV, DiemTB FROM SinhVien WHERE DiemTB > 5 ORDER BY DiemTB DESC;
23. Giả sử bảng "DonHang" có các cột "MaDH", "NgayDatHang", "TongTien". Câu lệnh SQL nào để tính tổng "TongTien" của tất cả các đơn hàng?
A. SELECT AVG(TongTien) FROM DonHang;
B. SELECT COUNT(TongTien) FROM DonHang;
C. SELECT MAX(TongTien) FROM DonHang;
D. SELECT SUM(TongTien) FROM DonHang;
24. Câu lệnh SQL nào sẽ trả về tất cả các cột từ bảng "SanPham" nhưng chỉ những sản phẩm có tên kết thúc bằng "máy"?
A. SELECT * FROM SanPham WHERE TenSP LIKE "%máy%";
B. SELECT * FROM SanPham WHERE TenSP LIKE "máy%";
C. SELECT * FROM SanPham WHERE TenSP LIKE "%máy";
D. SELECT * FROM SanPham WHERE TenSP LIKE "_máy";
25. Khi sử dụng mệnh đề ORDER BY, từ khóa nào được dùng để sắp xếp các bản ghi theo thứ tự giảm dần?
A. ASC
B. DESC
C. SORT
D. DEFAULT