quản lý sv

Màu nền
Font chữ
Font size
Chiều cao dòng

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

Bạn đang đọc truyện trên: Truyen2U.Pro