Professional Documents
Culture Documents
Môn Cơ Sở Dữ Liệu Bài Tập Thực Hành 3
Môn Cơ Sở Dữ Liệu Bài Tập Thực Hành 3
MÔN CƠ SỞ DỮ LIỆU
BÀI TẬP THỰC HÀNH 3
2|Page
IT004 – Cơ sở dữ liệu
MỤC LỤC
1. Tìm họ tên giáo viên dạy môn CTRR cho cả hai lớp “K11” và “K12” trong cùng học kỳ 1 năm
2006.................................................................................................................................................. 5
2. Tìm những học viên (mã học viên, họ tên) thi không đạt môn CSDL ở lần thi thứ 1 nhưng
3. Tìm giáo viên (mã giáo viên, họ tên) không được phân công giảng dạy bất kỳ môn học nào.... 6
4. Tìm giáo viên (mã giáo viên, họ tên) không được phân công giảng dạy bất kỳ môn học nào
5. Tìm họ tên các học viên thuộc lớp “K11” thi một môn bất kỳ quá 3 lần vẫn “Khong dat” hoặc
6. Tìm họ tên giáo viên dạy môn CTRR cho ít nhất hai lớp trong cùng một học kỳ của một năm
học.....................................................................................................................................................9
7. Danh sách học viên và điểm thi môn CSDL (chỉ lấy điểm của lần thi sau cùng)...................... 10
8. Danh sách học viên và điểm thi môn “Co So Du Lieu” (chỉ lấy điểm cao nhất của các lần thi).11
9. Khoa nào (mã khoa, tên khoa) được thành lập sớm nhất............................................................12
10. Có bao nhiêu giáo viên có học hàm là “GS” hoặc “PGS”........................................................ 12
11. Thống kê có bao nhiêu giáo viên có học vị là “CN”, “KS”, “Ths”, “TS”, “PTS” trong mỗi
khoa.................................................................................................................................................13
12. Mỗi môn học thống kê số lượng học viên theo kết quả (đạt và không đạt)..............................14
13. Tìm giáo viên (mã giáo viên, họ tên) là giáo viên chủ nhiệm của một lớp, đồng thời dạy cho
3|Page
IT004 – Cơ sở dữ liệu
1. Bảng KHOA
2. Bảng MONHOC
3. Bảng DIEUKIEN
4. Bảng GIAOVIEN
5. Bảng LOP
6. Bảng HOCVIEN
7. Bảng GIANGDAY
8. Bảng KETQUATHI
4|Page
IT004 – Cơ sở dữ liệu
Câu 1: Tìm họ tên giáo viên dạy môn CTRR cho cả hai lớp “K11” và “K12” trong
cùng học kỳ 1 năm 2006.
- Output:
Câu lệnh truy vấn sẽ trả về tên các giáo viên dạy môn CTRR cho cả hai lớp "K11" và
"K12" trong học kỳ 1 năm 2006.
Để thực hiện việc này, truy vấn kết hợp hai bảng GIAOVIEN và GIANGDAY thông qua
điều kiện GV.MAGV = GD.MAGV và lọc ra các dòng thỏa mãn điều kiện MAMH =
'CTRR' (môn CTRR), HOCKY = 1 (học kỳ 1), NAM = 2006 (năm 2006) và MALOP IN
('K11', 'K12') (lớp "K11" hoặc "K12"). Kết quả sẽ trả về danh sách tên các giáo viên đáp
ứng các điều kiện trên.
Câu 2: Tìm những học viên (mã học viên, họ tên) thi không đạt môn CSDL ở lần thi
thứ 1 nhưng chưa thi lại môn này.
5|Page
IT004 – Cơ sở dữ liệu
- Output:
Câu lệnh truy vấn sẽ trả về danh sách các học viên (bao gồm mã học viên và họ tên) đã
thi không đạt môn CSDL ở lần thi thứ 1 nhưng chưa thi lại môn này.
Để thực hiện điều này, truy vấn kết hợp hai bảng HOCVIEN và KETQUATHI thông qua
điều kiện HV.MAHV = KQ.MAHV và lọc ra các dòng thỏa mãn điều kiện MAMH =
'CSDL' (môn CSDL), LANTHI = 1 (lần thi thứ 1) và KQUA = 'Khong Dat' (thi không
đạt). Sau đó, truy vấn sử dụng NOT EXISTS để kiểm tra xem có bất kỳ lần thi nào khác
(LANTHI > 1) của môn CSDL với học viên đó không. Kết quả sẽ trả về danh sách học
viên đáp ứng các điều kiện trên.
Câu 3: Tìm giáo viên (mã giáo viên, họ tên) không được phân công giảng dạy bất kỳ
môn học nào.
- Output:
6|Page
IT004 – Cơ sở dữ liệu
- Hướng giải thuật:
Câu lệnh truy vấn sẽ trả về danh sách các giáo viên (bao gồm mã giáo viên và họ tên)
không được phân công giảng dạy bất kỳ môn học nào.
Để thực hiện điều này, truy vấn sử dụng NOT EXISTS để kiểm tra xem có bất kỳ phân
công giảng dạy nào (tức là có dòng thỏa mãn điều kiện GV.MAGV = GD.MAGV) cho
mỗi giáo viên không. Kết quả sẽ trả về danh sách các giáo viên không được phân công
giảng dạy bất kỳ môn học nào.
Câu 4: Tìm giáo viên (mã giáo viên, họ tên) không được phân công giảng dạy bất kỳ
môn học nào thuộc khoa giáo viên đó phụ trách.
- Output:
Câu lệnh truy vấn sẽ trả về danh sách các giáo viên (bao gồm mã giáo viên và họ tên)
không được phân công giảng dạy bất kỳ môn học nào thuộc khoa mà giáo viên đó phụ
trách.
7|Page
IT004 – Cơ sở dữ liệu
Để thực hiện điều này, truy vấn sử dụng NOT EXISTS để kiểm tra xem có bất kỳ phân
công giảng dạy nào (tức là có dòng thỏa mãn các điều kiện GIANGDAY.MAMH =
MONHOC.MAMH, GIANGDAY.MAGV = GV.MAGV và MONHOC.MAKHOA =
GV.MAKHOA) cho mỗi giáo viên và khoa mà họ phụ trách không. Kết quả sẽ trả về
danh sách các giáo viên không được phân công giảng dạy bất kỳ môn học nào thuộc khoa
mà họ phụ trách.
Câu 5: Tìm họ tên các học viên thuộc lớp “K11” thi một môn bất kỳ quá 3 lần vẫn
“Khong dat” hoặc thi lần thứ 2 môn CTRR được 5 điểm.
- Output:
Câu lệnh truy vấn trên sẽ trả về danh sách họ tên các học viên thuộc lớp
"K11" thỏa mãn một hai điều kiện sau:
Học viên thuộc lớp "K11" và đã thi lần thứ 2 môn CTRR và đạt được 5 điểm.
Học viên thuộc lớp "K11" và đã thi một môn bất kỳ quá 3 lần vẫn "Khong
dat".
8|Page
IT004 – Cơ sở dữ liệu
Để thực hiện điều này, truy vấn sử dụng hai phần UNION để kết hợp kết quả
của hai truy vấn con. Phần đầu tiên của UNION sẽ trả về danh sách họ tên
các học viên thuộc lớp "K11" đã thi lần thứ 2 môn CTRR và đạt được 5
điểm. Phần thứ hai sử dụng GROUP BY và HAVING để trả về danh sách
học viên thuộc lớp "K11" đã thi một môn bất kỳ quá 3 lần vẫn "Khong dat".
Kết quả cuối cùng sẽ là danh sách họ tên các học viên thỏa mãn các điều
kiện trên.
Câu 6: Tìm họ tên giáo viên dạy môn CTRR cho ít nhất hai lớp trong cùng một học kỳ
của một năm học.
Câu lệnh truy vấn trên sẽ trả về danh sách các giáo viên dạy môn CTRR cho ít nhất hai
lớp trong cùng một học kỳ của một năm học.
Để thực hiện điều này, truy vấn kết hợp hai bảng GIAOVIEN và GIANGDAY thông qua
điều kiện GV.MAGV = GD.MAGV và lọc ra các dòng thỏa mãn điều kiện
MAMH='CTRR' (môn CTRR). Sau đó, truy vấn sử dụng GROUP BY để nhóm kết quả
theo MAGV (mã giáo viên), HOTEN (họ tên) và HOCKY (học kỳ), và sử dụng
HAVING COUNT(*) >= 2 để chỉ lấy những giáo viên có ít nhất hai phân công dạy môn
CTRR trong cùng một học kỳ.
Kết quả sẽ trả về danh sách họ tên các giáo viên thỏa mãn điều kiện trên.
9|Page
IT004 – Cơ sở dữ liệu
Câu 7: Danh sách học viên và điểm thi môn CSDL (chỉ lấy điểm của lần thi sau cùng).
- Output:
Câu lệnh truy vấn trên sẽ trả về danh sách học viên và điểm thi môn CSDL, chỉ lấy điểm
của lần thi sau cùng của mỗi học viên.
Để thực hiện điều này, truy vấn kết hợp hai bảng HOCVIEN và KETQUATHI dựa trên
điều kiện HV.MAHV = KQ.MAHV, và lọc ra các dòng thỏa mãn điều kiện MAMH =
'CSDL'. Trong đó, điều kiện LANTHI = (SELECT MAX(LANTHI) FROM
KETQUATHI WHERE KETQUATHI.MAHV = HV.MAHV AND MAMH = 'CSDL'
GROUP BY MAHV) sẽ chọn ra điểm thi của lần thi sau cùng cho mỗi học viên.
Kết quả sẽ là danh sách học viên và điểm thi môn CSDL từ lần thi sau cùng.
10 | P a g e
IT004 – Cơ sở dữ liệu
Câu 8: Danh sách học viên và điểm thi môn “Co So Du Lieu” (chỉ lấy điểm cao nhất
của các lần thi).
- Output:
Câu lệnh truy vấn trên sẽ trả về danh sách học viên và điểm thi môn "Cơ Sở Dữ Liệu"
(CSDL), chỉ lấy điểm cao nhất của các lần thi.
Để thực hiện điều này, truy vấn kết hợp hai bảng HOCVIEN và KETQUATHI dựa trên
điều kiện HV.MAHV = KQ.MAHV, và lọc ra các dòng thỏa mãn điều kiện MAMH =
'CSDL'. Điều kiện DIEM = (SELECT MAX(DIEM) FROM KETQUATHI WHERE
KETQUATHI.MAHV = HV.MAHV AND MAMH = 'CSDL' GROUP BY MAHV) sẽ
chọn ra điểm thi cao nhất của mỗi học viên.
Kết quả sẽ là danh sách học viên và điểm thi môn CSDL, chỉ lấy điểm cao nhất của các
lần thi.
11 | P a g e
IT004 – Cơ sở dữ liệu
Câu 9: Khoa nào (mã khoa, tên khoa) được thành lập sớm nhất.
Câu lệnh truy vấn trên sẽ trả về thông tin về khoa (mã khoa, tên khoa) mà được thành lập
sớm nhất.
Để thực hiện điều này, truy vấn sử dụng câu lệnh SELECT để lấy ra MAKHOA và
TENKHOA từ bảng KHOA, với điều kiện lấy ra khoa có NGTLAP (ngày thành lập)
bằng giá trị nhỏ nhất (thời gian thành lập sớm nhất) từ bảng KHOA.
Kết quả sẽ là thông tin về khoa được thành lập sớm nhất.
Câu 10: Có bao nhiêu giáo viên có học hàm là “GS” hoặc “PGS”.
- Output:
12 | P a g e
IT004 – Cơ sở dữ liệu
- Hướng giải thuật:
Câu lệnh truy vấn trên sẽ trả về số lượng giáo viên có học hàm là "GS" hoặc "PGS".
Để thực hiện điều này, truy vấn sử dụng COUNT để đếm số lượng giáo viên (dựa vào
MAGV) từ bảng GIAOVIEN, với điều kiện HOAHAM = 'GS' hoặc HOAHAM = 'PGS'.
Kết quả truy vấn sẽ cho biết số lượng giáo viên có học hàm là "GS" hoặc "PGS".
Câu 11: Thống kê có bao nhiêu giáo viên có học vị là “CN”, “KS”, “Ths”, “TS”,
“PTS” trong mỗi khoa.
13 | P a g e
IT004 – Cơ sở dữ liệu
Câu 12: Mỗi môn học thống kê số lượng học viên theo kết quả (đạt và không đạt).
- Output:
Câu 13: Tìm giáo viên (mã giáo viên, họ tên) là giáo viên chủ nhiệm của một lớp,
đồng thời dạy cho lớp đó ít nhất một môn học.
14 | P a g e
IT004 – Cơ sở dữ liệu
- Output:
Câu 14: Tìm họ tên lớp trưởng của lớp có sỉ số cao nhất.
15 | P a g e
IT004 – Cơ sở dữ liệu
LINK CODE:
https://drive.google.com/file/d/17cl9V_9cNvZjDD-m_UwJSQ2dDi9oR3QM/view?usp=sharing
16 | P a g e