Bài giảng Cơ sở Dữ liệu SQL: Quản lý Điểm học tập của Sinh viên do ThS. Nguyễn Anh Việt biên soạn trình bày các bước tạo cơ sở dữ liệu trong SQL thông qua bài ví dụ Quản lý điểm học tập của sinh viên, nhằm giúp các bạn thực hành môn Cơ sở dữ liệu tốt hơn. Mời các bạn cùng tham khảo.
Trang 1* Tạo Database QuanLySinhVien
- Trước hết, nếu ñã có QuanLySinhVien thì xoá ñi, sau ñó tạo và Chọn QuanLySinhVien ñể làm việc:
If Exists (Select Name from Sys.Databases Where Name=N 'QuanLySinhVien' )
Drop Database QuanLySinhVien;
Create Database QuanLySinhVien;
Use QuanLySinhVien;
- Chọn Refresh ñể xem kết quả:
* Tạo Table SinhVien
- Trước hết, nếu ñã có Table SinhVien thì xoá ñi, sau ñó tạo lại Table SinhVien:
If Exists (Select Name from Sys.Tables Where Name=N 'SinhVien' ) Drop Table SinhVien;
Create Table SinhVien
(
MaSV Int Not Null Primary Key Identity,
TenSV NVarChar ( 50 ) Not Null,
GioiTinh NVarchar ( 5 ),
NgaySinh DateTime ,
Que NVarChar ( 50 ),
Lop NVarChar ( 5 )
)
* Tạo Table MonHoc
- Nếu ñã có Table MonHoc thì xoá ñi, sau ñó tạo lại Table MonHoc:
If Exists (Select Name from Sys.Tables Where Name=N 'MonHoc' ) Drop Table MonHoc;
Create Table MonHoc
(
MaMH Int Not Null Primary Key Identity,
TenMH NVarChar ( 50 ),
DVHT Int
Trang 2* Tạo Table KetQua
- Nếu ñã có Table KetQua thì xoá ñi, sau ñó tạo lại Table KetQua:
If Exists (Select Name from Sys Tables Where Name = N 'KetQua' ) Drop Table KetQua;
Create Table KetQua
(
MaSV Int ,
MaMH Int ,
Diem Int ,
Constraint Check_Diem Check ( Diem Between 0 and 10 ),
Constraint Primary_Key Primary Key MaSV , MaMH ),
Constraint KhoaNgoai_SV_KQ Foreign Key ( MaSV ) References SinhVien ( MaSV ),
Constraint KhoaNgoai_MH_KQ Foreign Key ( MaMH ) References MonHoc ( MaMH )
)
* Nhập dữ liệu vào Table KetQua
Insert Into Sinhvien
Select N 'Phạm Trung Tính' , 'Nam' , '03/30/1996' , N 'Quảng Ninh' , 'L01' Union All Select N 'Trần Bảo Trọng' , 'Nam' , '12/14/1995' , N 'Hà Giang' , 'L02' Union All Select N 'Lê Thùy Dung' , N 'Nữ' , '05/12/1997' , 'Hà Nội' , 'L03' Union All
Select N 'Lê Trường An' , 'Nam' , '11/20/1995' , 'Ninh Bình' , 'L04' Union All
Select N 'Phạm Thị Hương Giang' , N 'Nữ' , '2/21/1999' , N 'Hòa Bình' , 'L02' Union All Select N 'Đoàn Duy Thức' , 'Nam' , '4/12/1994' , 'Hà Nội' , 'L01' Union All
Select N 'Dương Tuấn Thông' , 'Nam' , '4/12/1991' , N 'Nam Định' , 'L03' Union All Select N 'Lê Thành Đạt' , 'Nam' , '4/15/1993' , N 'Phú Thọ' , 'L04'
* Nhập dữ liệu vào Table MonHoc
Insert Into MonHoc
Select N 'Toán cao cấp' , 3 Union All
Select N 'Mạng máy tính' , Union All
Select N 'Tin học ñại cương' , 4 Union All
Select N 'Hệ quản trị cơ sở dữ liệu' , 2 Union All
Select N 'Cơ sở dữ liệu' , 2
* Nhập dữ liệu vào Table KetQua
Insert Into Ketqua
Select 1 , 1 , 8 Union All
Select 1 , 2 , 5 Union All
Select 2 , 2 , 1 Union All
Select 3 , 2 , 7 Union All
Select 4 , 2 , 3 Union All
Select 1 , 3 , 7 Union All
Select 2 , 1 , 9 Union All
Select 4 , 1 , 2 Union All
Select 3 , 1 , 4 Union All
Select 2 , 3 , 2 Union All
Select 5 , 1 , 4 Union All
Select 6 , 1 , 2 Union All
Select 6 , 3 , 9 Union All
Select 6 , 2 , 7 Union All
Select 6 , 5 , 10
Trang 3Ví dụ 1 : Cho biết mã số, tên, ñiểm thi tất cả các môn của sinh viên Phạm Trung Tính
- Tìm ñiểm của sinh viên theo tên sinh viên:
Select MH MaMH , TenMH , Diem
From SinhVien SV , MonHoc MH , KetQua KQ
Where SV MaSV = KQ MaSV and MH MaMH = KQ MaMH and TenSV = N 'Phạm Trung Tính'
- Kết quả như sau:
Ví dụ 2 : Cho biết mã số, tên, ñiểm thi tất cả các môn của sinh viên có mã sinh viên = 2
- Tìm ñiểm của sinh viên theo mã sinh viên:
Select MH MaMH , TenMH , Diem
From SinhVien SV , MonHoc MH , KetQua KQ
Where SV MaSV = KQ MaSV and MH MaMH = KQ MaMH and SV MaSV = 2
- Kết quả như sau:
Ví dụ 3 : Cho biết mã số, tên môn và ñiểm thi ở những môn mà sinh viên Đoàn Duy Thức phải thi lại (ñiểm<5)
- Thực hiện:
Select MH.MaMH, TenMH, Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and Diem < 5
and TenSV = N 'Đoàn Duy Thức'
- Kết quả như sau:
Ví dụ 4: Cho biết mã số, tên những sinh viên ñã thi ít nhất là 1 trong 3 môn Cơ sở dữ liệu, cấu trúc dữ liệu, mạng máy tính
Trang 4- Thực hiện:
Select SV MaSV , TenSV
From SinhVien SV , MonHoc MH , KetQua KQ
Where SV MaSV = KQ MaSV and MH MaMH = KQ MaMH and TenMH in ( N 'Cơ sở dữ liệu' ,
N 'Cấu trúc dữ liệu' , N 'Mạng máy tính' )
- Kết quả như sau:
Ví dụ 5 : Cho biết mã số, tên những môn mà sinh viên có mã số 1 chưa có ñiểm
- Thực hiện:
Select MaMH, TenMH
From MonHoc MH
Except
(Select MH.MaMH, TenMH
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and SV.MaSV = 1 )
- Kết quả như sau:
Ví dụ 6: Cho biết mã số, tên những sinh viên có ñiểm thi môn 1 không thấp nhất khoa
- Thực hiện:
Select SV.MaSV, TenSV, KQ.Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and MH.MaMH = 1 and Diem >
(select MIN(Diem) from KetQua where MaMH = 1 )
- Kết quả như sau:
Trang 5Ví dụ 7: Cho biết mã số và tên những sinh viên có ñiểm thi môn 1 lớn hơn ñiểm thi môn 1 của sinh viên 3
- Thực hiện:
Select SV.MaSV, TenSV
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and MH.MaMH = 1 and Diem >
(Select Diem From KetQua Where MaMH = 1 and MaSV = 3 )
- Kết quả như sau:
Ví dụ 8: Cho biết số sinh viên phải thi lại môn Cơ sở dữ liệu
- Thực hiện:
Select COUNT(*) as N 'Số sv thi lại'
From MonHoc MH, KetQua KQ
Where MH.MaMH = KQ.MaMH and TenMH = N 'Mạng máy tính' and Diem < 5
- Kết quả như sau:
Ví dụ 9: Cho biết MaSV, TenSV, Điểm của các sinh viên phải thi lại môn Cơ sở dữ liệu