Tải bản đầy đủ (.doc) (4 trang)

BÀI TẬP MÔN CƠ SỞ DỮ LIỆU ÔN THI CÔNG CHỨC 2015

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (139.77 KB, 4 trang )

BÀI TẬP MÔN CƠ SỞ DỮ LIỆU ÔN THI CÔNG CHỨC 2015
Cho lược đồ cơ sở dữ liệu Quản lý điểm thi như sau:
LOP(MaLop, TenLop, LopTruong, SiSo)
SINHVIEN(MaSV, HoTenSV, NgaySinh, GioiTinh, DiaChi, Lop)
MONHOC(MaMH, TenMH, SoTinChi, SoTiet)
KETQUA(MaSV, MaMH, LanThi, Diem, KetQua)
Yêu cầu:
1. Hãy phát biểu một cách chặt chẽ RBTV “Sĩ số thực sự (SiSo) của một lớp bằng số
lượng sinh viên trực thuộc lớp đó”.
Thực hiện các câu truy vấn sau bằng ngôn ngữ đại số quan hệ:
2. Với các sinh viên thuộc lớp ‘K1-01’ (tên lớp = ‘K1-01’), hãy liệt kê mã số sinh
viên, họ tên sinh viên, tên môn học, lần thi, điểm số của các môn học mà sinh viên
tham gia với kết quả ‘Đậu’.
Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL, DSQH:
3. Liệt kê mã sinh viên, họ tên sinh viên và kết quả thi (MaSV, HoTenSV, Diem,
KetQua) lần 1 môn ‘Cơ sở dữ liệu’ (Tên môn học = ’Cơ sở dữ liệu’). Kết quả sắp
xếp theo điểm giảm dần.
4. Cho biết tên lớp và sĩ số của lớp có đông sinh viên nhất. (chọn mẫu tin có cột kiểu
số có giá trị lớn nhất) (tương tự cho câu hỏi: Cho biết môn học có số tín chỉ nhiều
nhất hoặc Cho biết sinh viên có tuổi lớn nhất,…. )
5. Cho biết mã sinh viên, họ tên và số lượng môn học mà sinh viên đó đã tham gia
thi. (dùng GROUP BY)
6. Cho biết mã sinh viên, họ tên và số môn học mà sinh viên đó đã tham gia thi với
số môn học trên 5? (đk trên nhóm HAVING)
7. Cho biết sinh viên học nhiều môn nhất? (đk HAVING>= all…)
8. (DSQH+SQL, phép giao): cho biết sv học cả 2 môn ‘Co So Du Lieu’ và ‘Toan
Roi Rac’
9. (DSQH+SQL, phép trừ): cho biết những sv không học môn ‘Toan Roi Rac’
- Hết -
ĐÁP ÁN
Câu 1: (1 điểm)


• Nội dung:
Sĩ số thực sự của một lớp bằng số lượng sinh viên trực thuộc lớp đó.
∀l ∈ LOP,

sv

SINHVIEN sao cho sv.Lop = l.MaLop
l.Siso = Count (sv.MaSV)
Cuối ∀sv
Cuối ∀l
Hoặc viết khác:
∀l ∈ LOP,
l.Siso = Count
(sv

SINHVIEN

sv.Lop = l.Malop)
(sv.MaSV)
Cuối ∀l
hoặc cách khác: l.SiSo = Count
(sv

SINHVIEN

sv.Lop = l.Malop)
(*)
• Bối cảnh: LOP, SINHVIEN
• Bảng tầm ảnh hưởng
:

Thêm Xóa Sửa
LOP
+
- +
(SiSo)
SINHVIEN
+ + +
(Lop)
Câu 2: (0.75 điểm)
((LOP:TenLop=‘K1-01’) SINHVIEN (KETQUA:Ketqua=’Đậu’) aaa
MONHOC) [MaSV, HoTenSV, TenMH, LanThi, Diem]
Câu 3: (0.75 điểm) (kết giữa các bảng, chọn, chiếu đơn giản)
SELECT sv.MaSV, HoTenSV, Diem, KetQua
FROM SINHVIEN sv, MONHOC m, KETQUA k
WHERE sv.MaSV = k.MaSV AND k.MaMH = m.MaMH
AND m.TenMH = ‘Cơ sở dữ liệu’ and k.LanThi=1
MaLop=Lop MaSV
MaMH
ORDER BY Diem DESC;
Câu 4: (0.5 điểm) (chọn mẫu tin có cột kiểu số có giá trị lớn nhất)
SELECT TenLop, SiSo
FROM LOP
WHERE SiSo = ( SELECT Max (SiSo) FROM Lop)
Câu 5: (0.5 điểm) (dùng GROUP BY)
SELECT sv.MaSV, HoTenSV, count(distinct k.MaMH) as SoMonDaHoc
FROM SINHVIEN sv, KETQUA k
WHERE sv.MaSV = k.MaSV
GROUP BY sv.MaSV, HoTenSV
MỞ RỘNG
Câu 6: Cho biết mã sinh viên, họ tên và số môn học mà sinh viên đó đã tham gia thi

với số môn học trên 5? (đk trên nhóm HAVING)
SELECT sv.MaSV, HoTenSV, count(distinct k.MaMH) as SoMonDaHoc
FROM SINHVIEN sv, KETQUA k
WHERE sv.MaSV = k.MaSV
GROUP BY sv.MaSV, HoTenSV
HAVING count(distinct k.MaMH) >=5
Câu 7: Cho biết sinh viên học nhiều môn nhất? (đk HAVING>= all…)
SELECT sv.MaSV, HoTenSV, count(distinct k.MaMH) as SoMonDaHoc
FROM SINHVIEN sv, KETQUA k
WHERE sv.MaSV = k.MaSV
GROUP BY sv.MaSV, HoTenSV
HAVING count(distinct k.MaMH) >= All (SELECT count(distinct k.MaMH)
FROM SINHVIEN sv, KETQUA k
WHERE sv.MaSV = k.MaSV
GROUP BY sv.MaSV, HoTenSV )
Câu 8: (DSQH+SQL, phép giao): cho biết sv học cả 2 môn ‘Co So Du Lieu’ và ‘Toan
Roi Rac’
((MONHOC: TenMH= ‘Co So Du Lieu’) KETQUA)[Masv] a aa(((MONHOC:
TenMH= ‘Toan Roi Rac’) KETQUA)[Masv]
Select masv From MONHOC, KETQUA
Where tenmh=‘Co So Du Lieu’ and monhoc.mamh=ketqua.mamh and
Masv IN (Select masv From MONHOC, KETQUA
Where tenmh=‘Toan Roi Rac’ and monhoc.mamh=ketqua.mamh and
)
Câu 9: (DSQH+SQL, phép trừ): cho biết những sv không học môn ‘Toan Roi Rac’

MaMH
MaMH
MaMH
SINHVIEN[MaSV] ((MONHOC: TenMH= ‘Toan roi rac’) KETQUA)[Masv]

Select masv, hoten From SINHVIEN
Where Masv NOT IN (Select masv from monhoc, ketqua
Where tenmh=‘Toan Roi Rac’ and monhoc.mamh=ketqua.mamh and
)

×