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

THIẾT KỆ HỆ THỐNG THÔNG TIN QUẢN LÝ SINH VIÊN

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 (79.86 KB, 3 trang )

I- Tạo các bảng
1. Tạo bảng khoa
Create table khoa (mak char(10) primary key, tenk char(50), diachi char(30));
2. Tạo bảng giaovien
create table giaovien (magv char(10) primary key, hoten char(30), chucdanh char(30), mak
char(10) references khoa(mak));
3. Tạo bảng lop
create table lop (malop char(10) primary key, tenlop char(10), siso byte, mak char(10) references
khoa(mak), magv char(10) references giaovien(magv));
4. Tạo bảng sinhvien
create table sinhvien (masv char(10) primary key, hoten char(40), ngaysinh date, gioitinh yesno,
quequan char(20), malop char(10) references lop(malop));
5. Tạo bảng monhoc
create table monhoc (mamh char(10) primary key, tenmh char(50), sotc byte);
6. Tạo bảng diem
create table diem (masv char(10) references sinhvien(masv), mamh char(10) references
monhoc(mamh), diemlan1 double, diemlan2 double, primary key (masv,mamh));
II- Thực hiện các câu truy vấn SQL
1. Đưa ra mã sinh viên, họ tên của các sinh viên có ngày sinh vào tháng 11
SELECT masv, hoten
FROM sinhvien
WHERE month(ngaysinh)=11;
2. Đưa ra mã lớp, tên lớp của sinh viên khoa thương mại điện tử
SELECT masv, hoten, tenlop
FROM sinhvien AS sv, khoa AS k, lop AS l
WHERE sv.malop=l.malop and l.mak=k.mak and tenk="thuong mai dien tu";
3. Đưa ra mã lớp, tên lớp của lớp có sĩ số lớn nhất
SELECT malop, tenlop
FROM lop
WHERE siso=(select max(siso) from lop);
4. Đưa ra mã khoa, tên khoa, tổng số sinh viên từng khoa( theo tổng số giảm)


SELECT khoa.mak, tenk, sum(siso)
FROM khoa, lop
WHERE lop.mak=khoa.mak
GROUP BY khoa.mak, tenk
ORDER BY sum(siso) DESC;
5. Đưa ra số sinh viên quê ở Hà Nội thuộc lớp 42i1
SELECT count(*) AS so_sv_hanoi
FROM lop, sinhvien
WHERE lop.malop=sinhvien.malop and tenlop="42i1" and quequan="hà nội";
6. Đưa ra mã lớp, tên lớp của các lớp có tỉ lệ nam nhiều hơn nữ
SELECT lop.malop, tenlop, count(*) AS So_sv_nam
FROM lop, sinhvien
WHERE lop.malop=sinhvien.malop and gioitinh=-1
GROUP BY lop.malop, tenlop
HAVING count(*)>(select count(*) from lop l1 where lop.malop=l1.malop);
7. Liệt kê các môn học 3 tín chỉ
SELECT mamh, tenmh
FROM monhoc
WHERE sotc=3;
8. Đưa ra mã sinh viên, họ tên của các sinh viên khoa thương mại điện tử thi lại môn cơ sở dữ
liệu
SELECT sinhvien.masv, hoten
FROM sinhvien, lop, khoa, monhoc, diem
WHERE khoa.mak=lop.mak And lop.malop=sinhvien.malop And sinhvien.masv=diem.masv And
diem.mamh=monhoc.mamh And tenk="thuong mai dien tu" And tenmh="co so du lieu" And
diemlan1<5;
9. Đưa ra mã sinh viên của các sinh viên có tổng điểm 2 môn cơ sở dữ liệu và mạng máy tính
lớn hơn 16
SELECT sinhvien.masv, hoten, sum(diemlan1) AS Tong_diem
FROM sinhvien, monhoc, diem

WHERE sinhvien.masv=diem.masv And diem.mamh=monhoc.mamh And (tenmh="co so du lieu"
Or tenmh="mang may tinh")
GROUP BY sinhvien.masv, hoten
HAVING sum(diemlan1)>16;
10. Đưa ra mã môn học, tên môn học, tổng số sinh viên thi lại của từng môn học
SELECT monhoc.mamh, tenmh, count(*) AS Tong_SV_thilai
FROM monhoc, diem
WHERE diem.mamh=monhoc.mamh And diemlan1<5
GROUP BY monhoc.mamh, tenmh;
11. Đưa ra mã môn học, tên môn học của môn học có nhiều sinh viên không thi qua lần 1 nhất
SELECT monhoc.mamh, tenmh, count(*) AS Tong_SV_thilai
FROM monhoc, diem
WHERE diem.mamh=monhoc.mamh And diemlan1<5
GROUP BY monhoc.mamh, tenmh
HAVING count(*)>=all(select count(*) from monhoc, diem where diem.mamh=
monhoc.mamh and diemlan1<5 group by monhoc.mamh, tenmh);
12. Đưa ra mã sinh viên, họ tên của các sinh viên chưa phải thi lại lần nào
SELECT sinhvien.masv, hoten
FROM sinhvien, diem
WHERE sinhvien.masv=diem.masv and diemlan1>5
GROUP BY sinhvien.masv, hoten;
13. Đưa ra mã sinh viên , họ tên của các sinh viên đã từng được điểm 10
SELECT sinhvien.masv, hoten
FROM sinhvien, diem
WHERE sinhvien.masv=diem.masv and (diemlan1=10 or diemlan2=10)
GROUP BY sinhvien.masv, hoten;
14. Đưa ra mã sinh viên, họ tên của các sinh viên có nhiều điểm 10 nhất
SELECT sinhvien.masv, hoten, count(*) AS So_lan_duoc_diem_10
FROM sinhvien, diem
WHERE sinhvien.masv=diem.masv and (diemlan1=10 or diemlan2=10)

GROUP BY sinhvien.masv, hoten
HAVING count(*)>=all(select count(*) from sinhvien, diem where
sinhvien.masv=diem.masv and (diemlan1=10 or diemlan2=10) group by sinhvien.masv, hoten);
15. Tính điểm trung bình tích luỹ cho các sinhviên ( chỉ tính điểm lần 1)
16. Đưa ra mã sinh viên, họ tên, tên môn học, điểm cao nhất trong các lần thi

×