Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

SQL Fundamentals: Index, SELECT, WHERE, REVOKE, System Variables

Total questions: 56

Worksheet time: 28mins

Name
Class
Date
1.

Trong CSDL thư viện gồm các bảng BANDOC(BMaBD, TenBD, NgaySinh, DiaChi, SDT), SACH(MaSach, TenSach, TheLoai, TacGia, NhaXuatBan, NamXuatBan), PHIEUMUON(MaBD, MaSach, NgayMuon, NgayHenTra, DaTra). Với quy ước DaTra mặc định là 0 (chưa trả), khi trả sách thì đổi thành 1 (đã trả). Câu lệnh nào trả về danh sách bạn đọc chưa từng mượn sách? Chọn một đáp án đúng.

a)

select mabd, tenbd from bandoc intersect select bd.mabd, tenbd from bandoc bd, phieumuon pm where bd.mabd = pm.mabd

b)

select count(mabd) from phieumuon

c)

select count(distinct mabd) from phieumuon

d)

select mabd, tenbd from bandoc except select bd.mabd, tenbd from bandoc bd, phieumuon pm where bd.mabd = pm.mabd

2.

Dựa ra thông tin bạn đọc quê ở Hà Nam đang mượn sách (chưa trả). Câu truy vấn nào đúng?

a)

SELECT BD.MaBD, TenBD FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD and BD.DiaChi = N'Hà Nam' AND DaTra = 0

b)

SELECT BD.MaBD, TenBD FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD and BD.DiaChi = 'Hà Nam' AND DaTra = 1

c)

SELECT BD.MaBD, TenBD FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD and DiaChi = N'Hà Nam' AND DaTra = 0

d)

SELECT BD.MaBD, TenBD FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD and BD.DiaChi = N'Hà Nam'

3.

Hiển thị thông tin các bạn đọc đã mượn ít hơn hoặc bằng 2 cuốn sách. Câu lệnh nào phù hợp nhất?

a)

SELECT BD.MaBD, COUNT(MaSach) AS 'Số sách đã mượn' FROM BANDOC BD, PHIEUMUON PM GROUP BY BD.MaBD HAVING COUNT(MaSach) <= 2

b)

SELECT BD.MaBD FROM BANDOC BD WHERE EXISTS (SELECT * FROM PHIEUMUON PM WHERE PM.MaBD = BD.MaBD AND COUNT(MaSach) <= 2)

c)

SELECT COUNT(MaSach) FROM PHIEUMUON GROUP BY MaBD WHERE COUNT(MaSach) <= 2

d)

SELECT MaBD, TenBD FROM BANDOC WHERE COUNT(*) <= 2

4.

Trong câu lệnh SELECT của SQL Server, từ khóa nào dùng để loại bỏ các bản ghi trùng lặp khi liệt kê danh sách mã bạn đọc đã mượn sách?

a)

ALL

b)

DISTINCT

c)

TOP

d)

UNION

5.

Phát biểu nào đúng về chỉ mục (Index) trong CSDL quan hệ?

a)

Index giúp tăng tốc truy vấn ở các cột được sắp xếp nhưng làm giảm hiệu năng khi INSERT/UPDATE

b)

Index chỉ có tác dụng với câu lệnh INSERT

c)

Index luôn làm chậm mọi truy vấn

d)

Index không thể tạo trên khóa chính

6.

Câu lệnh nào thu hồi quyền SELECT trên bảng SACH từ người dùng userA trong SQL Server?

a)

REVOKE SELECT ON SACH FROM userA

b)

DENY SELECT SACH TO userA

c)

REVOKE ON SACH SELECT FROM userA

d)

GRANT REVOKE SELECT ON SACH TO userA

7.

Trong SQL Server, cơ sở dữ liệu hệ thống nào chịu trách nhiệm lưu trữ thông tin đăng nhập, vai trò máy chủ và thiết lập bảo mật cấp máy chủ?

a)

master

b)

model

c)

msdb

d)

tempdb

8.

Thuộc tính IDENTITY trong SQL Server dùng để làm gì?

a)

Tự động tạo giá trị tăng dần cho một cột số nguyên

b)

Xác định khóa ngoại giữa hai bảng

c)

Tạo chỉ mục cụm cho bảng

d)

Tự động sao lưu dữ liệu sang msdb

9.

Câu lệnh nào đúng để khai báo một cột IDENTITY bắt đầu từ 100 và tăng 5 đơn vị mỗi lần chèn bản ghi?

a)

MaSach INT IDENTITY(1,1)

b)

MaSach INT IDENTITY(100,5)

c)

MaSach INT IDENTITY(5,100)

d)

MaSach INT GENERATED ALWAYS AS IDENTITY(100,5)

10.

Trong truy vấn tổng hợp, mệnh đề nào được dùng để nhóm các bản ghi theo một hoặc nhiều cột?

a)

ORDER BY

b)

GROUP BY

c)

HAVING

d)

WHERE

11.

Chọn câu lệnh đầy đủ nhất để hiển thị thông tin các bạn đọc đã mượn ít hơn hoặc bằng 2 cuốn sách.

a)

SELECT BD.MaBD, COUNT(MaSach) AS 'Số sách đã mượn' FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD GROUP BY BD.TenBD HAVING COUNT(MaSach) >= 2

b)

SELECT BD.MaBD, BD.TenBD, COUNT(MaSach) AS 'Số sách đã mượn' FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD GROUP BY BD.MaBD, BD.TenBD HAVING COUNT(MaSach) <= 2

c)

SELECT BD.MaBD, BD.TenBD, SUM(MaSach) AS 'Số sách đã mượn' FROM BANDOC BD, PHIEUMUON PM WHERE BD.MaBD = PM.MaBD GROUP BY BD.MaBD, BD.TenBD HAVING COUNT(MaSach) >= 2

d)

SELECT BD.MaBD, COUNT(MaSach) AS 'Số sách đã mượn' FROM BANDOC BD JOIN PHIEUMUON PM ON BD.MaBD = PM.MaBD GROUP BY BD.MaBD HAVING COUNT(MaSach) > 2

12.

Chọn câu lệnh đúng để hiển thị các cuốn sách của tác giả tên là Kiên và xuất bản trong năm 1992.

a)

SELECT * FROM Sach WHERE Tacgia LIKE N'%Kiên' AND Namsx=1992

b)

SELECT * FROM Sach WHERE Tacgia LIKE N'%Kiên%' AND Namsx=1992

c)

SELECT * FROM Sach WHERE Tacgia LIKE N'_Kiên' AND Namsx=1992

d)

SELECT * FROM Sach WHERE Tacgia LIKE N'Kiên%' OR Namsx=1992

13.

Với mỗi thể loại sách, câu lệnh nào đúng để đếm số cuốn sách trong thư viện mà số cuốn sách > 200?

a)

SELECT TenSach, COUNT(MaSach) FROM Sach GROUP BY TheLoai HAVING COUNT(MaSach) > 200

b)

SELECT MaSach, COUNT(MaSach) FROM Sach GROUP BY TheLoai HAVING COUNT(MaSach) > 200

c)

SELECT TheLoai, COUNT(MaSach) FROM Sach GROUP BY TheLoai HAVING COUNT(MaSach) > 200

d)

SELECT TheLoai, COUNT(MaSach) FROM Sach GROUP BY TheLoai WHERE SUM(MaSach) > 200

14.

Trong ràng buộc khóa ngoại, tùy chọn ON DELETE CASCADE có ý nghĩa gì?

a)

Khi xóa bản ghi ở bảng cha, tự động đặt khóa ngoại ở bảng con thành NULL

b)

Khi xóa bản ghi ở bảng cha, tự động xóa các bản ghi liên quan ở bảng con

c)

Ngăn không cho xóa bản ghi ở bảng cha nếu tồn tại bản ghi ở bảng con

d)

Chỉ áp dụng cho chỉ mục phi cụm

15.

Phát biểu nào đúng về Trigger trong SQL Server?

a)

Trigger là thủ tục được người dùng gọi trực tiếp để sao lưu dữ liệu

b)

Trigger là đối tượng tự động thực thi khi có sự kiện như INSERT, UPDATE, DELETE xảy ra trên bảng hoặc view

c)

Trigger chỉ chạy một lần khi khởi động SQL Server

d)

Trigger dùng để định nghĩa khóa chính cho bảng

16.

Cho CSDL QLMS với bảng Sach(Masach, Tensach, TheLoai, Tacgia, NhaXuatBan, NamXuatBan). Câu lệnh SQL nào đếm số sách xuất bản trong đúng hai năm 1990 và 1995?

a)

select count(*) from Sach where NamXuatBan = 1990 or NamXuatBan = 1995

b)

select sum(*) from Sach where NamXuatBan = 1990 and NamXuatBan = 1995

c)

select count(*) from Sach where NamXuatBan between 1990 and 1995

d)

select count(*) from Sach where NamXuatBan = 1990 and NamXuatBan = 1995

17.

Trong bảng Phieumuon(MaPM, Masach, Ngaymuon, Ngayhentra, Datra), giá trị mặc định của cột Datra được mô tả là 0 (Chưa trả). Lệnh SELECT nào trả về tất cả phiếu mượn chưa trả?

a)

select * from Phieumuon where Datra = 1

b)

select * from Phieumuon where Datra = 0

c)

select * from Phieumuon where Datra is null

d)

select * from Phieumuon where Datra <> 0

18.

Câu lệnh nào loại bỏ cột LinkY khỏi bảng Bandoc(MaBD, TenBD, Ngaysinh, Diachi, SDT, LinkY)?

a)

alter table Bandoc drop LinkY

b)

alter table Bandoc drop column LinkY

c)

alter table Bandoc remove column LinkY

d)

delete column LinkY from Bandoc

19.

Với bảng Sach như đã cho, câu lệnh nào đếm tổng số bản ghi sách?

a)

select count(Masach) from Sach

b)

select count(Tensach) from Sach where Tensach is not null

c)

select count(*) from Sach

d)

select sum(Masach) from Sach

20.

Giả sử đã tạo hàm func_namnhuan(@nam int) trả về 'Năm nhuận' nếu @nam chia hết cho 4 và không chia hết cho 100, hoặc chia hết cho 400; ngược lại trả về 'Năm thường'. Câu lệnh nào đúng để kiểm tra năm 2021?

a)

select dbo.func_namnhuan(2021)

b)

select * from dbo.func_namnhuan(2021)

c)

select * from func_namnhuan(2021)

d)

select func_namnhuan(2021)

21.

Trong CSDL Quản lý sinh viên với bảng Ketqua(Masv, Mamh, Diem) và Monhoc(Mamh, Tenmh, DVHT). Câu lệnh nào lấy mã sinh viên và họ tên những sinh viên có điểm môn 'CSDL' > 5 và thuộc lớp @lop?

a)

select sv.masv, sv.hoten from Sinhvien sv join Ketqua kq on sv.masv = kq.masv where kq.mamh = 'CSDL' and kq.diem > 5 and sv.lop = @lop

b)

select sv.masv, sv.hoten from Sinhvien sv, Ketqua kq where kq.mamh = 'CSDL' and kq.diem > 5

c)

select sv.masv, sv.hoten from Ketqua where mamh = 'CSDL' and diem > 5 and lop = @lop

d)

select masv, hoten from Sinhvien where mamh = 'CSDL' and diem > 5 and lop = @lop

22.

Câu lệnh nào đếm số sinh viên có điểm môn 'CSDL' lớn hơn 5?

a)

select count(*) from Ketqua where Mamh = 'CSDL' and Diem > 5

b)

select count(Masv) from Sinhvien where Mamh = 'CSDL' and Diem > 5

c)

select sum(Diem) from Ketqua where Mamh = 'CSDL' and Diem > 5

d)

select count(*) from Sinhvien where Tenmh = 'CSDL' and Diem > 5

23.

Cho CSDL Quản lý sinh viên gồm các bảng: - Sinhvien(Masv, Hotensv, Ngaysinh, Gioitinh, Quequan, Lop) - Monhoc(Mamh, Tenmh, DVHT) - Ketqua(Masv, Mamh, Diem) Hãy chọn câu lệnh tạo thủ tục trả về danh sách mã SV và họ tên SV của một lớp bất kỳ, với điều kiện SV đã thi môn có mã 'CSDL' và điểm > 5. Tham số thủ tục: @lop CHAR(10). Đáp án nào đúng nhất?

a)

create procedure DSSV(@lop char(10)) as select sv.masv, sv.hotensv from sinhvien sv join ketqua kq on sv.masv = kq.masv where diem > 5 and mamh = 'CSDL' and lop = @lop

b)

create procedure DSSV(@lop char(10)) as select sv.masv, sv.hotensv from sinhvien sv, ketqua kq where sv.masv = kq.masv and mamh = 'CSDL' and diem > 5 and lop = @lop

c)

create procedure DSSV(@lop char(10)) as select masv, hotensv from ketqua where mamh = 'CSDL' and diem > 5 and lop = @lop

d)

create procedure DSSV(@lop char(10)) as select sv.masv, sv.hotensv from sinhvien sv left join ketqua kq on sv.masv = kq.masv where mamh = 'CSDL' and diem > 5 and lop = @lop

24.

Cho biết mã sinh viên có điểm thi môn mã 'CSDL' cao nhất toàn khóa. Chọn truy vấn đúng.

a)

select masv from ketqua where mamh = 'CSDL' and diem = (select max(diem) from ketqua where mamh = 'CSDL')

b)

select masv from ketqua except select masv from ketqua where mamh = 'CSDL' and diem = (select max(diem) from ketqua where mamh = 'CSDL')

c)

select masv from ketqua where diem not in (select max(diem) from ketqua where mamh = 'CSDL')

d)

select masv from ketqua where mamh = 'CSDL' and diem in (select max(diem) from ketqua)

25.

Cho biết số sinh viên có họ Nguyễn. Truy vấn nào đúng cú pháp và cho kết quả chính xác?

a)

select count(*) from sinhvien where hotensv like N'Nguyễn%'

b)

select count(*) from sinhvien where hotensv like '%Nguyễn'

c)

select count(*) from sinhvien where hotensv like N'%Nguyễn%'

d)

select * from sinhvien where hotensv like N'%Nguyễn'

26.

Yêu cầu: Lấy thông tin các sinh viên nam của lớp 'AT16A'. Truy vấn nào phù hợp nhất?

a)

select * from sinhvien where gioitinh = N'Nam' and lop = 'AT16A'

b)

select count(*) from sinhvien where gioitinh = N'Nam' and lop = 'AT16A'

c)

select * from sinhvien where gioitinh = N'Nam' or lop = 'AT16A'

d)

select count(masv) from sinhvien where gioitinh = N'Nam' and lop = 'AT16A'

27.

Trong SQL Server, hàm nào trả về ngày và giờ hiện tại của hệ thống để so sánh ngày mượn sách với thời điểm hiện tại?

a)

CURRENT_DATE

b)

GETDATE()

c)

SYSDATE

d)

NOW()

28.

Chọn phát biểu đúng về toán tử tập hợp EXCEPT trong SQL khi truy vấn thư viện:

a)

Trả về hợp của hai tập kết quả

b)

Trả về giao của hai tập kết quả

c)

Trả về các hàng có trong truy vấn đầu tiên nhưng không có trong truy vấn thứ hai

d)

Trả về các hàng có trong cả hai truy vấn

29.

Bạn cần liệt kê mỗi độc giả cùng số lượng sách đã mượn. Mệnh đề nào phải đi kèm với hàm COUNT để nhóm theo độc giả?

a)

ORDER BY

b)

GROUP BY

c)

HAVING

d)

WHERE

30.

Để lọc chỉ các đầu sách có số lượt mượn trung bình lớn hơn 5 sau khi tính AVG(muon), mệnh đề nào được dùng đúng cách?

a)

WHERE AVG(muon) > 5

b)

HAVING AVG(muon) > 5

c)

GROUP BY AVG(muon) > 5

d)

ORDER BY AVG(muon) > 5

31.

Cho CSDL Quản lý sinh viên với các bảng: Sinhvien(MaSV, HoTenSV, Ngaysinh, Gioitinh, Quequan, Lop), Monhoc(MaMH, TenMH, DVHT), Ketqua(MaSV, MaMH, Diem). Câu lệnh nào tạo VIEW diemTB hiển thị mã sinh viên, họ tên và điểm trung bình của từng sinh viên?

a)

CREATE VIEW diemTB AS SELECT sv.MaSV, sv.HoTenSV, AVG(kq.Diem) AS "Điểm TB" FROM Sinhvien sv, Ketqua kq WHERE sv.MaSV = kq.MaSV GROUP BY sv.MaSV, sv.HoTenSV;

b)

CREATE VIEW diemTB SELECT sv.MaSV, HoTenSV, AVG(Diem) AS "Điểm TB" FROM Sinhvien sv, Ketqua kq WHERE sv.MaSV = kq.MaSV GROUP BY sv.MaSV, HoTenSV;

c)

CREATE VIEW diemTB AS SELECT sv.MaSV, sv.HoTenSV, AVG(Diem) "Điểm TB" FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV;

d)

CREATE VIEW diemTB AS SELECT MaSV, HoTenSV, AVG(Diem) FROM Ketqua GROUP BY MaSV;

32.

Chọn truy vấn trả về thông tin sinh viên có điểm CAO NHẤT ở môn có mã là 'CSDL'.

a)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV WHERE kq.MaMH = 'CSDL' AND kq.Diem = (SELECT MIN(Diem) FROM Ketqua WHERE MaMH = 'CSDL');

b)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV WHERE kq.MaMH = 'CSDL' AND kq.Diem = (SELECT MAX(Diem) FROM Ketqua WHERE MaMH = 'CSDL');

c)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv, Ketqua kq WHERE sv.MaSV = kq.MaSV AND kq.Diem = (SELECT MAX(Diem) FROM Ketqua);

d)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv, Ketqua kq WHERE sv.MaSV = kq.MaSV AND kq.MaMH = 'CSDL' AND kq.Diem > ALL (SELECT Diem FROM Ketqua);

33.

Chọn truy vấn trả về sinh viên học môn 'CSDL' nhưng KHÔNG có điểm thấp nhất của môn này.

a)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV WHERE kq.MaMH = 'CSDL' AND kq.Diem != (SELECT MIN(Diem) FROM Ketqua WHERE MaMH = 'CSDL');

b)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV WHERE kq.MaMH = 'CSDL' AND kq.Diem != (SELECT MAX(Diem) FROM Ketqua WHERE MaMH = 'CSDL');

c)

SELECT sv.MaSV, sv.HoTenSV FROM Sinhvien sv JOIN Ketqua kq ON sv.MaSV = kq.MaSV WHERE kq.MaMH != 'CSDL' AND kq.Diem > (SELECT MIN(Diem) FROM Ketqua WHERE MaMH = 'CSDL');

d)

SELECT sv.MaSV, sv.HoTenSV FROM Ketqua WHERE MaMH = 'CSDL' AND Diem IS NOT NULL;

34.

Đối với mỗi môn học, hãy chọn câu lệnh đúng để liệt kê tên môn và số sinh viên phải thi lại (điểm < 4) với điều kiện chỉ hiển thị những môn có số sinh viên thi lại ≥ 2.

a)

SELECT mh.TenMH AS "Tên môn học", COUNT(kq.Diem) AS "Số SV thi lại" FROM Monhoc mh, Ketqua kq WHERE mh.MaMH = kq.MaMH AND kq.Diem < 4 GROUP BY mh.TenMH HAVING COUNT(kq.Diem) >= 2;

b)

SELECT mh.TenMH, COUNT(*) FROM Ketqua kq GROUP BY mh.TenMH HAVING COUNT(*) >= 2;

c)

SELECT TenMH, COUNT(Diem) FROM Monhoc JOIN Ketqua ON Diem < 4 GROUP BY TenMH;

d)

SELECT mh.TenMH, COUNT(kq.Diem) FROM Monhoc mh JOIN Ketqua kq ON mh.MaMH = kq.MaMH WHERE kq.Diem < 4 HAVING COUNT(kq.Diem) >= 2;

35.

Chọn phát biểu ĐÚNG về cách dùng LIKE để tìm sinh viên có họ tên bắt đầu bằng 'Nguyễn'.

a)

SELECT * FROM Sinhvien WHERE HoTenSV LIKE '%Nguyễn';

b)

SELECT * FROM Sinhvien WHERE HoTenSV LIKE 'Nguyễn%';

c)

SELECT * FROM Sinhvien WHERE HoTenSV LIKE '_Nguyễn%';

d)

SELECT * FROM Sinhvien WHERE HoTenSV LIKE '%Nguyễn%';

36.

Câu nào đếm số bản ghi kết quả của môn 'CSDL' có điểm từ 5 trở lên?

a)

SELECT COUNT(*) FROM Ketqua WHERE MaMH = 'CSDL' AND Diem >= 5;

b)

SELECT COUNT(Diem) FROM Ketqua WHERE Diem >= 5;

c)

SELECT COUNT(*) FROM Ketqua WHERE MaMH = 'CSDL' OR Diem >= 5;

d)

SELECT SUM(Diem) FROM Ketqua WHERE MaMH = 'CSDL' AND Diem >= 5;

37.

Cho CSDL Quản lý sinh viên gồm các bảng: SinhVien(MaSV, HoTenSV, NgaySinh, GioiTinh, QueQuan, Lop), MonHoc(MaMH, TenMH, DVHT), KetQua(MaSV, MaMH, Diem). Mục tiêu: Viết hàm SQL kiểm tra năm nhuận. Quy tắc năm nhuận: năm chia hết cho 400 hoặc (chia hết cho 4 và không chia hết cho 100). Câu hỏi: Biểu thức logic nào sau đây đúng để kiểm tra năm nhuận trong CREATE FUNCTION (tham số y là năm)?

a)

y % 4 = 0 AND y % 100 = 0

b)

y % 4 = 0 OR y % 100 = 0

c)

(y % 400 = 0) OR (y % 4 = 0 AND y % 100 <> 0)

d)

(y % 4 = 0 AND y % 100 <> 0) AND y % 400 <> 0

38.

Dựa trên các bảng SV, MH, KQ như mô tả, lựa chọn truy vấn trả về mã SV và họ tên SV có điểm thi môn "Cơ sở dữ liệu" không thấp nhất toàn khóa.

a)

SELECT SV.MaSV, SV.HoTenSV FROM SINHVIEN SV, MONHOC MH, KETQUA KQ WHERE SV.MaSV = KQ.MaSV AND MH.MaMH = KQ.MaMH AND TenMH = N'Cơ sở dữ liệu' AND KQ.Diem > (SELECT MIN(Diem) FROM KETQUA KQ, MONHOC MH WHERE KQ.MaMH = MH.MaMH AND TenMH = N'Cơ sở dữ liệu')

b)

SELECT SV.MaSV, SV.HoTenSV FROM SINHVIEN SV, KETQUA KQ WHERE SV.MaSV = KQ.MaSV AND TenMH = N'CSDL' AND Diem = (SELECT MIN(Diem) FROM KETQUA WHERE MaMH = 'CSDL')

c)

SELECT SV.MaSV, SV.HoTenSV FROM SINHVIEN SV, KETQUA KQ WHERE SV.MaSV = KQ.MaSV AND Diem = (SELECT MAX(Diem) FROM KETQUA WHERE MaMH = 'CSDL')

d)

SELECT SV.MaSV, SV.HoTenSV FROM SINHVIEN SV, MONHOC MH, KETQUA KQ WHERE SV.MaSV = KQ.MaSV AND MH.MaMH = KQ.MaMH AND TenMH = N'Cơ sở dữ liệu' AND KQ.Diem = (SELECT MIN(Diem) FROM KETQUA WHERE MaMH = 'CSDL')

39.

Đối với mỗi môn, cần cho biết tên môn học và số sinh viên phải thi lại môn đó mà số sinh viên thi lại ≥ 2. Truy vấn nào sau đây đúng nhất?

a)

SELECT MH.TenMH AS 'Tên môn học', COUNT(Diem) AS 'Số SV thi lại' FROM MONHOC MH, KETQUA KQ WHERE MH.MaMH = KQ.MaMH AND KQ.Diem < 4 GROUP BY MH.TenMH HAVING COUNT(Diem) >= 2

b)

SELECT MH.MaMH, MH.TenMH AS 'Tên môn học', COUNT(Diem) AS 'Số SV thi lại' FROM MONHOC MH, KETQUA KQ WHERE MH.MaMH = KQ.MaMH AND Diem < 4 GROUP BY MH.MaMH, MH.TenMH HAVING COUNT(KQ.Diem) >= 2

c)

SELECT MH.TenMH AS 'Tên môn học', COUNT(Diem) AS 'Số SV thi lại' FROM MONHOC MH, KETQUA KQ WHERE MH.MaMH = KQ.MaMH AND KQ.Diem <= 2 GROUP BY MH.TenMH

d)

SELECT MH.TenMH AS 'Tên môn học', COUNT(Diem) AS 'Số SV thi lại' FROM MONHOC MH, KETQUA KQ WHERE MH.MaMH = KQ.MaMH AND KQ.Diem < 4 GROUP BY MH.TenMH HAVING COUNT(Diem) = 2

40.

Yêu cầu: Tạo thủ tục (CREATE PROCEDURE) liệt kê danh sách sinh viên phải thi lại nếu mã môn là 'CSDL' hoặc 'TCC' hoặc cả hai. Trong các lựa chọn sau, đâu là điều kiện WHERE đúng để lọc kết quả?

a)

WHERE MH.MaMH IN ('CSDL','TCC') AND KQ.Diem < 4

b)

WHERE MH.MaMH = 'CSDL' OR MH.MaMH = 'TCC'

c)

WHERE TenMH IN ('CSDL','TCC') AND Diem <= 4

d)

WHERE MH.MaMH IN ('CSDL','TCC')

41.

Cho CSDL Quản lý sinh viên gồm các bảng: Sinhvien(MaSV, HotenSV, Ngaysinh, Gioitinh, Quequan, Lop), Monhoc(MaMH, TenMH, DVHT), Ketqua(MaSV, MaMH, Diem). Hãy chọn câu lệnh SQL đúng để liệt kê danh sách sinh viên phải thi lại môn có mã là 'CSDL' hoặc 'TCC' (điểm < 4).

a)

SELECT SV.MaSV, HotenSV FROM Sinhvien SV, Ketqua KQ WHERE SV.MaSV = KQ.MaSV and MaMH = 'CSDL' or MaMH = 'TCC' and Diem < 4

b)

SELECT SV.MaSV, HotenSV FROM Sinhvien SV, Ketqua KQ WHERE SV.MaSV = KQ.MaSV and (MaMH = 'CSDL' or MaMH = 'TCC') and Diem < 4

c)

SELECT MaSV, HotenSV FROM Ketqua WHERE (MaMH = 'CSDL' or MaMH = 'TCC') and Diem < 4

d)

SELECT SV.MaSV, HotenSV FROM Sinhvien SV JOIN Ketqua KQ ON SV.MaSV = KQ.MaSV WHERE MaMH IN ('CSDL','TCC') and Diem > 4

42.

Chọn truy vấn đúng để đếm số sinh viên nam trong bảng Sinhvien (giới tính lưu dạng chuỗi N'Nam').

a)

select count(*) from sinhvien where gioitinh = 'Nam'

b)

select count(*) from sinhvien where gioitinh = N'Nam'

c)

select * from sinhvien where gioitinh = N'Nam'

d)

select * from sinhvien where gioitinh = N'NU'

43.

Để cho biết số sinh viên phải thi lại môn có mã 'CSDL' của mỗi lớp (điểm < 4), câu lệnh SQL nào đúng nhất?

a)

SELECT lop, diem, COUNT(sv.masv) FROM sinhvien sv, ketqua kq WHERE sv.masv = kq.masv and mamh = 'CSDL' and diem < 4 GROUP BY lop, diem

b)

SELECT lop, COUNT(masv) FROM sinhvien sv, ketqua kq WHERE sv.masv = kq.masv and mamh = 'CSDL' and diem < 4 GROUP BY lop

c)

SELECT lop, COUNT(sv.masv) FROM sinhvien sv, ketqua kq WHERE sv.masv = kq.masv and mamh = 'CSDL' and diem < 4 GROUP BY lop

d)

SELECT lop, diem, COUNT(masv) FROM sinhvien sv, ketqua kq WHERE sv.masv = kq.masv and mamh = 'CSDL' and diem > 4 GROUP BY lop, diem

44.

Một truy vấn cần tìm sinh viên có họ tên chứa chuỗi 'Anh'. Lựa chọn nào đúng về cú pháp LIKE đối với cột HotenSV?

a)

SELECT MaSV, HotenSV FROM Sinhvien WHERE HotenSV LIKE 'Anh%'

b)

SELECT MaSV, HotenSV FROM Sinhvien WHERE HotenSV LIKE '%Anh%'

c)

SELECT MaSV, HotenSV FROM Sinhvien WHERE HotenSV LIKE '%Anh'

d)

SELECT MaSV, HotenSV FROM Sinhvien WHERE HotenSV LIKE 'Anh'

45.

Trong CSDL gồm các bảng Sinhvien(MaSV, HotenSV, Ngaysinh, Gioitinh, Quequan, Lop), Monhoc(Mamh, Tenmh, DVHT), Ketqua(MaSV, Mamh, Diem). Phép tổng hợp nào dùng để tính điểm trung bình của mỗi sinh viên trên tất cả môn đã có trong bảng Ketqua?

a)

SUM(Diem)

b)

AVG(Diem)

c)

COUNT(Diem)

d)

MAX(Diem)

46.

Giả sử cần tạo một view tên VTB cho biết MaSV, HotenSV và điểm trung bình (TB) của mỗi sinh viên. Câu lệnh nào đúng nhất?

a)

CREATE VIEW VTB AS SELECT MaSV, HotenSV, SUM(Diem) AS TB FROM Sinhvien sv JOIN Ketqua k ON sv.MaSV=k.MaSV GROUP BY MaSV, HotenSV

b)

CREATE VIEW VTB AS SELECT MaSV, HotenSV, AVG(Diem) AS TB FROM Sinhvien sv JOIN Ketqua k ON sv.MaSV=k.MaSV GROUP BY MaSV, HotenSV

c)

CREATE VIEW VTB AS SELECT MaSV, HotenSV, AVG(Diem) AS TB FROM Ketqua GROUP BY MaSV, HotenSV

d)

CREATE VIEW VTB AS SELECT MaSV, HotenSV, Diem FROM Sinhvien

47.

Một truy vấn cần liệt kê Tenmh và số lượng sinh viên có Diem >= 4 ở mỗi môn, chỉ lấy các môn có ít nhất 2 sinh viên đạt điều kiện. Mệnh đề nào bắt buộc phải có để lọc theo số lượng sau khi nhóm?

a)

WHERE COUNT(MaSV) >= 2

b)

HAVING COUNT(MaSV) >= 2

c)

ORDER BY COUNT(MaSV) >= 2

d)

GROUP BY COUNT(MaSV) >= 2

48.

Để xác định sinh viên phải thi lại theo quy tắc: một sinh viên thi lại nếu điểm trung bình dưới 5 hoặc có bất kỳ môn nào Diem < 4. Truy vấn nào hợp lý nhất?

a)

SELECT MaSV FROM Ketqua WHERE AVG(Diem)<5 OR Diem<4

b)

SELECT DISTINCT sv.MaSV FROM Sinhvien sv LEFT JOIN Ketqua k ON sv.MaSV=k.MaSV GROUP BY sv.MaSV HAVING AVG(k.Diem)<5 OR MIN(k.Diem)<4

c)

SELECT MaSV FROM Sinhvien WHERE Diem<4

d)

SELECT MaSV FROM Ketqua GROUP BY MaSV HAVING MAX(Diem)<4

49.

Cho bảng Ketqua(MaSV, MaMH, Diem) và Monhoc(MaMH, TenMH, DVHT). Chọn câu lệnh SQL đúng để tạo VIEW liệt kê mỗi môn học cùng số lượng sinh viên đã đỗ (Diem ≥ 4) mà mỗi sinh viên có số lần thi (số bản ghi Ketqua theo MaSV và MaMH) ≥ 2.

a)

CREATE VIEW SVGD AS SELECT mh.TenMH, COUNT(kq.MaSV) AS 'Số sinh viên' FROM Ketqua kq, Monhoc mh WHERE kq.MaMH = mh.MaMH AND Diem ≥ 4 AND COUNT(kq.MaSV) ≥ 2

b)

CREATE VIEW SVGD AS SELECT mh.TenMH, SUM(kq.MaSV) AS 'Số sinh viên' FROM Ketqua kq, Monhoc mh WHERE kq.MaMH = mh.MaMH AND Diem ≥ 4 GROUP BY mh.TenMH HAVING SUM(kq.MaSV) ≥ 2

c)

CREATE VIEW SVGD AS SELECT mh.TenMH, COUNT(*) AS 'Số sinh viên' FROM Ketqua kq JOIN Monhoc mh ON kq.MaMH = mh.MaMH WHERE Diem ≥ 4 GROUP BY mh.TenMH HAVING COUNT(*) FILTER BY MaSV ≥ 2

d)

CREATE VIEW SVGD AS SELECT mh.TenMH, COUNT(DISTINCT kq.MaSV) AS 'Số sinh viên' FROM Ketqua kq JOIN Monhoc mh ON kq.MaMH = mh.MaMH WHERE Diem ≥ 4 GROUP BY mh.TenMH HAVING COUNT(*) ≥ 2

50.

Bạn cần truy vấn danh sách sinh viên có điểm cao nhất môn 'CSDL'. Câu lệnh nào thể hiện đúng việc dùng MAX với truy vấn con để lấy người đạt điểm tối đa?

a)

SELECT MaSV, Diem FROM Ketqua WHERE MaMH = 'CSDL' AND Diem = MAX(Diem)

b)

SELECT MaSV, Diem FROM Ketqua WHERE MaMH = 'CSDL' AND Diem = (SELECT MAX(Diem) FROM Ketqua WHERE MaMH = 'CSDL')

c)

SELECT MaSV, Diem FROM Ketqua GROUP BY MaMH HAVING MaMH = 'CSDL' AND Diem = MAX(Diem)

d)

SELECT TOP 1 MaSV, Diem FROM Ketqua WHERE MaMH = 'CSDL' ORDER BY Diem DESC

51.

Cho bảng Ketqua(MaSV, MaMH, Diem). Hãy chọn truy vấn đúng để đếm số lần thi lại (số bản ghi Ketqua với Diem < 4) của từng sinh viên và chỉ hiển thị những sinh viên có số lần thi lại ≥ 2.

a)

SELECT MaSV, COUNT(*) AS SoLanThiLai FROM Ketqua WHERE Diem < 4 HAVING COUNT(*) ≥ 2

b)

SELECT MaSV, COUNT(*) AS SoLanThiLai FROM Ketqua WHERE Diem < 4 GROUP BY MaSV HAVING COUNT(*) ≥ 2

c)

SELECT MaSV, SUM(Diem < 4) AS SoLanThiLai FROM Ketqua GROUP BY MaSV HAVING SUM(Diem < 4) ≥ 2

d)

SELECT MaSV, COUNT(Diem) AS SoLanThiLai FROM Ketqua GROUP BY MaSV WHERE Diem < 4 HAVING COUNT(Diem) ≥ 2

52.

Giả sử bảng Sinhvien(MaSV, HoTenSV, NgaySinh, GioiTinh, QueQuan, Lop). Chọn câu lệnh đúng để tính tuổi hiện tại của sinh viên và hiển thị MaSV, HoTenSV, cùng tuổi, sử dụng hàm DATEDIFF (giả sử dùng SQL Server).

a)

SELECT MaSV, HoTenSV, DATEDIFF(YEAR, GETDATE(), NgaySinh) AS Tuoi FROM Sinhvien

b)

SELECT MaSV, HoTenSV, DATEDIFF(YEAR, NgaySinh, GETDATE()) AS Tuoi FROM Sinhvien

c)

SELECT MaSV, HoTenSV, DATEDIFF(DAY, NgaySinh, GETDATE())/365 AS Tuoi FROM Sinhvien

d)

SELECT MaSV, HoTenSV, AGE(NgaySinh) AS Tuoi FROM Sinhvien

53.

DoK 1: Trong SQL, mệnh đề nào dùng để lọc bản ghi theo điều kiện môn học khi phân tích lượt thi lại?

a)

GROUP BY

b)

WHERE

c)

ORDER BY

d)

JOIN

54.

DoK 2: Bạn cần đếm số lượt thi lại của sinh viên theo từng môn và chỉ hiển thị những môn có từ 2 lượt thi lại trở lên. Cặp mệnh đề nào phù hợp nhất?

a)

GROUP BY với WHERE

b)

GROUP BY với HAVING

c)

ORDER BY với WHERE

d)

JOIN với HAVING

55.

DoK 3: Cho bảng Retakes(student_id, subject, attempt_date). Hãy chọn truy vấn trả về danh sách subject có số lượt thi lại > 3 trong năm 2022.

a)

select subject from Retakes where year(attempt_date)=2022 and count(*)>3;

b)

select subject, count(*) as cnt from Retakes group by subject where year(attempt_date)=2022 having cnt>3;

c)

select subject, count(*) as cnt from Retakes where year(attempt_date)=2022 group by subject having count(*)>3;

d)

select subject from Retakes group by subject having year(attempt_date)=2022 and count(*)>3;

56.

DoK 2: Câu lệnh nào tạo VIEW tên vStudentPerf tóm tắt số lần thi lại theo từng sinh viên và môn?

a)

create view vStudentPerf as select student_id, subject, count(*) as retake_count from Retakes group by student_id;

b)

create view vStudentPerf as select student_id, subject, count(*) as retake_count from Retakes group by student_id, subject;

c)

create view vStudentPerf select student_id, subject, count(*) as retake_count from Retakes group by subject;

d)

create view vStudentPerf as select * from Retakes where retake_count>0;

Similar Resources on Wayground