You are on page 1of 16

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


KHOA HỆ THỐNG THÔNG TIN

MÔN CƠ SỞ DỮ LIỆU
BÀI TẬP THỰC HÀNH 3

GVHD: Nguyễn Ngọc Quí


Sinh viên thực hiện: Nguyễn Hoàng Vũ

 Tp. Hồ Chí Minh, 09/2023 


IT004 – Cơ sở dữ liệu
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................

……., ngày……...tháng……năm 2023

Người nhận xét


(Ký tên và ghi rõ họ tên)

2|Page
IT004 – Cơ sở dữ liệu

MỤC LỤC

I. Ngôn ngữ truy vấn dữ liệu: ..................................................................................................5

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

chưa thi lại môn này..........................................................................................................................5

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

thuộc khoa giáo viên đó phụ trách.................................................................................................... 7

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.............................................................................................. 8

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

lớp đó ít nhất một môn học............................................................................................................. 14

14. Tìm họ tên lớp trưởng của lớp có sỉ số cao nhất.......................................................................15

II. Link code sql.......................................................................................................................16

3|Page
IT004 – Cơ sở dữ liệu

DANH MỤC BẢNG

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

NỘI DUNG BÀI LÀM

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.

- Input: Bảng GIAOVIEN, GIANGDAY

- Output:

- Hướng giải thuật :

 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.

- Input: Bảng HOCVIEN, KETQUATHI

5|Page
IT004 – Cơ sở dữ liệu
- Output:

- Hướng giải thuật:

 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.

- Input: Bảng GIAOVIEN

- 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.

- Input: Bảng GIAOVIEN

- Output:

- 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 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.

- Input: Bảng HOCVIEN, KETQUATHI

- Output:

- Hướng giải thuật:

 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.

- Input: Bảng GIAOVIEN, GIANGDAY


- Output:

- Hướng giải thuật:

 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).

- Input: Bảng HOCVIEN, KETQUATHI

- Output:

- Hướng giải thuật:

 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).

- Input: Bảng HOCVIEN, KETQUATHI

- Output:

- Hướng giải thuật:

 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.

- Input: Bảng KHOA


- Output:

- Hướng giải thuậ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”.

- Input: Bảng GIAOVIEN

- 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.

- Input: Bảng GIAOVIEN


- Output:

- Hướng giải thuật:


 Câu lệnh truy vấn trên sẽ thống kê số lượng giáo viên có học vị là 'CN', 'KS', 'ThS', 'TS',
'PTS' trong mỗi khoa.
 Để thực hiện điều này, truy vấn sử dụng SELECT để lấy ra MAKHOA (mã khoa),
HOCVI (học vị) và COUNT(MAGV) để đếm số lượng giáo viên từ bảng GIAOVIEN,
với điều kiện chỉ lấy các giáo viên có học vị trong danh sách ('CN', 'KS','ThS', 'TS', 'PTS').
Sau đó, sử dụng GROUP BY để nhóm kết quả theo MAKHOA và HOCVI, và sắp xếp
kết quả theo MAKHOA.
 Kết quả truy vấn sẽ hiển thị số lượng giáo viên có từng học vị '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).

- Input: Bảng KETQUATHI

- Output:

- Hướng giải thuật:


 Câu lệnh truy vấn trên sẽ thống kê số lượng học viên theo kết quả (đạt và không đạt)
trong từng môn học.
 Để thực hiện điều này, truy vấn sử dụng SELECT để lấy ra MAMH (mã môn học),
KQUA (kết quả), và sử dụng COUNT(*) để đếm số lượng học viên từ bảng
KETQUATHI. Sau đó sử dụng GROUP BY để nhóm kết quả theo MAMH và KQUA, và
sắp xếp kết quả theo MAMH.
 Kết quả truy vấn sẽ hiển thị số lượng học viên theo kết quả (đạt và không đạt) trong từng
môn học.

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.

- Input: Bảng GIAOVIEN, GIANGDAY, LOP

14 | P a g e
IT004 – Cơ sở dữ liệu
- Output:

- Hướng giải thuật:


 Câu lệnh truy vấn đã cung cấp sẽ trả về thông tin về giáo viên (mã giáo viên và họ tên) là
giáo viên chủ nhiệm của một lớp và đang dạy ít nhất một môn học cho lớp đó.
 Trong câu lệnh truy vấn này, chúng ta sử dụng câu lệnh SELECT DISTINCT để lấy ra
thông tin về mã giáo viên và họ tên từ bảng GIAOVIEN. Với điều kiện rằng mã giáo viên
phải trùng nhau trong ba bảng GIAOVIEN, GIANGDAY và LOP, nghĩa là giáo viên phải
là giáo viên chủ nhiệm của một lớp (GV.MAGV = L.MAGVCN) và cũng dạy ít nhất một
môn học cho lớp đó (GV.MAGV = GD.MAGV và GD.MALOP = L.MALOP).
 Kết quả truy vấn sẽ trả về thông tin về các giáo viên chủ nhiệm của một lớp và cũng dạy
ít nhất một môn học cho lớp đó.

Câu 14: Tìm họ tên lớp trưởng của lớp có sỉ số cao nhất.

- Input: Bảng HOCVIEN, LOP


- Output:

- Hướng giải thuật:


 Câu lệnh truy vấn trên sẽ trả về họ tên của lớp trưởng của lớp có sĩ số cao nhất.
 Để thực hiện điều này, truy vấn sử dụng bảng LOP và HOCVIEN để kết hợp thông tin về
lớp trưởng và sĩ số. Bằng cách sử dụng điều kiện HV.MAHV = L.TRGLOP, truy vấn lựa
chọn họ tên của lớp trưởng từ bảng HOCVIEN. Đồng thời, điều kiện SISO = (SELECT
MAX(SISO) FROM LOP) sẽ chọn ra lớp có sĩ số cao nhất. Câu lệnh này sẽ trả về họ tên
của lớp trưởng của lớp đó.

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

You might also like