Tải bản đầy đủ (.docx) (23 trang)

BÀI tập lớn ,QUẢN lý SINH VIÊN TRONG SQL

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 (125.24 KB, 23 trang )

MỤC LỤC
Trang

MÔ HÌNH CSDL

3

MÔ HÌNH LIÊN KẾT THỰC THỂ

5

I. THIẾT LẬP CSDL

6

1.TẠO CSDL SINH VIÊN
2.TẠO CSDL MÔN HỌC
3.TẠO CSDL ĐIỂM
4. TẠO CSDL KHOA
5. TẠO CSDL LỚP
6.TẠO CSDL KHEN THƯỞNG
7. TẠO LIÊN KẾT GIỮA CÁC BẢNG

II. CHÈN DỮ LIỆU VÀO CÁC BẢNG

8

1.Chèn dữ liệu vào bảng khoa
2.Chèn dữ liệu vào bảng lop
3.Chèn dữ liệu vào bảng sinh vien
4.Chèn dữ liệu vào bảng mon hoc


5.Chèn dữ liệu vào bảng diem
6.Chèn dữ liệu vào bảng khenthuong

III.
11

BÀI

TẬP

1. Tạo view sinhvien
2. Tạo view diem
3. Tạo view lop
1

VIEW


4. Tạo view khoa
5. Tạo view monhoc
6. Tạo view khenthuong

IV. BÀI TẬP THỐNG KÊ

12

1.Thống kê số lượng sinh viên trong lớp
2.Thống kê số lượng sinh viên cho từng môn học
3.Thống kê số sinh viên được khen thưởng
4.Thống kê số lượng môn học

5.Thống kê điểm
6.Thống kê sinh viên có điểm trung bình năm lớn hơn 6
7.Thống kê số lượng khoa

V.
14

BÀI

TẬP

PROCEDURE

1. Tạo procedure sinh viên
2. Tạo procedure diem
3. Tạo procedure khenthuong
4. Tạo procedure bảng khoa
5. Tạo procedure bảng lop
6. Tạo procedure bảng monhoc

VI. BÀI TẬP TRIGGER

21

1. Tạo trigger insert và update sinh viên
2. Tạo trigger insert và update diem
3. Tạo trigger insert và update monhoc

2



QUẢN LÍ SINH VIÊN
MÔ HÌNH CSDL
1. DANH MỤC ĐIỂM
Tên Cột
Masv
Mamonhoc
Diemtbki1
Diemtbki2
Diemtbnam

Ý Nghĩa
Mã sinh viên
Mã môn học
Điểm trung
bình kì 1
Điểm trung
bình kì 2
Điểm trung
bình năm học

Kiểu
Nchar
Nchar
Decimal

Độ Rộng
10
10
(4,2)


Decimal

(4,2)

Decimal

(4,2)

Kiểu
Nchar
Nvarchar
Nchar

Độ Rộng
10
20
10

Kiểu
Nchar
Nvarchar
Nchar
Nchar
Datetime
Nvarchar

Độ Rộng
10
30

10
5

2. DANH MỤC LỚP
Tên Cột
Malop
Tenlop
Makho

Ý Nghĩa
Mã lớp
Tên lớp
Mã khoa

3. DANH MỤC SINH VIÊN
Tên Cột
Masv
Hoten
Malop
Gioitinh
Ngaysinh
Noisinh

Ý Nghĩa
Mã sinh viên
Họ tên
Mã lớp
Giới tính
Ngày sinh
Nơi sinh

3

30


Diachi

Địa chỉ

Nvarchar

30

Kiểu
Nchar
Nvarchar
tinyint

Độ Rộng
10
20

Kiểu
Nchar
Nvarchar

Độ Rộng
10
20


4. DANH MỤC MÔN HỌC
Tên Cột
Mamh
Tenmonhoc
Sotinchi

Ý Nghĩa
Mã môn học
Tên môn học
Số tín chỉ

5. DANH MỤC KHOA
Tên Cột
Makhoa
Tenkhoa

Ý Nghĩa
Mã khoa
Tên khoa

6. DANH MỤC KHEN THƯỞNG
Tên Cột
Makt
Masv
Hocbong

Ý Nghĩa

khen
thưởng

Mã sinh viên
Học bổng

4

Kiểu
Nchar

Độ Rộng
10

Nchar
float

10


MÔ HÌNH LIÊN KẾT THỰC THỂ

5


I.

THIẾT LẬP CSDL
1.TẠO CSDL SINH VIÊN
6


create table sinhvien

(
masv nchar(10),
hoten nvarchar (30),
malop nchar (10),
gioitinh nchar(5),
ngaysinh datetime,
noisinh nvarchar (30),
diachi nvarchar (30)
CONSTRAINT PK_SINHVIEN PRIMARY KEY (masv)
)
2.TẠO CSDL MÔN HỌC
create table monhoc
(
mamh nchar (10),
tenmonhoc nvarchar (20),
sotinchi tinyint
constraint pk_monhoc primary key (mamh)
)
3.TẠO CSDL ĐIỂM
create table diem
(
masv nchar (10),
7


mamonhoc nchar(10),
diemtbki1 decimal(4,2),
diemtbki2 decimal (4,2),
diemtbnam decimal(4,2)
constraint pk_diem primary key (masv,mamonhoc)

)
4. TẠO CSDL KHOA
create table khoa
(
makhoa nchar (10),
tenkhoa nvarchar(20)
constraint pk_khoa primary key(makhoa)
)
5. TẠO CSDL LỚP
create table lop
(
malop nchar (10),
tenlop nvarchar (20),
makhoa nchar (10),
constraint pk_lop primary key (malop)
)
6.TẠO CSDL KHEN THƯỞNG
create table khenthuong
8


(
makt nchar(10),
masv nchar(10),
hocbong float
constraint pk_khenthuong primary key (makt)
)

7. TẠO LIÊN KẾT GIỮA CÁC BẢNG
alter table sinhvien ADD FOREIGN KEY (malop) references lop

(malop)
alter table lop add foreign key (makhoa) references khoa (makhoa)
alter table diem add foreign key (masv) references sinhvien(masv)
alter table diem add foreign key (mamonhoc) references
monhoc(mamh)
alter table khenthuong add foreign key (masv) references
sinhvien(masv)

II. CHÈN DỮ LIỆU VÀO CÁC BẢNG
1. Chèn dữ liệu vào bảng khoa
insert into khoa (makhoa,tenkhoa) values ('mk01','cntt')
insert into khoa (makhoa,tenkhoa) values ('mk02','dtvt')
insert into khoa (makhoa,tenkhoa) values ('mk03','mmt')
insert into khoa (makhoa,tenkhoa) values ('mk04','httt')

9


2.Chèn dữ liệu vào bảng lớp
insert
into
lop
('ml01','ht21','mk01')
insert
into
lop
('ml02','ht212','mk01')
insert
into
lop

('ml03','ht2122','mk02')
insert
into
lop
('ml04','ht2123','mk03')

(malop,tenlop,makhoa)

values

(malop,tenlop,makhoa)

values

(malop,tenlop,makhoa)

values

(malop,tenlop,makhoa)

values

3. Chèn dữ liệu vào bảng sinh viên
insert
into
sinhvien
(masv,hoten,malop,gioitinh,ngaysinh,noisinh,diachi) values
('mssv01',N'sinh
viên
a','ml01','nam','09-08-1998',N'hà

nội',N'hà nội')
insert
into
sinhvien
(masv,hoten,malop,gioitinh,ngaysinh,noisinh,diachi) values
('mssv02',N'sinh
viên
b','ml01','nam','10-08-1998',N'hà
nam',N'hà nội')
insert
into
sinhvien
(masv,hoten,malop,gioitinh,ngaysinh,noisinh,diachi) values
('mssv03',N'sinh
viên
c','ml01','nam','11-08-1998',N'hà
nội',N'hà nội')
insert
into
sinhvien
(masv,hoten,malop,gioitinh,ngaysinh,noisinh,diachi) values
('mssv04',N'sinh
viên
d','ml01','nam','12-08-1998',N'hà
nội',N'phú thọ')
4. Chèn dữ liệu vào bảng môn học
10


insert into monhoc

('mmh01','tin',3)
insert into monhoc
('mmh02','c#',3)
insert into monhoc
('mmh03','csdl',3)
insert into monhoc
('mmh04','pttk',4)

(mamh,tenmonhoc,sotinchi) values
(mamh,tenmonhoc,sotinchi) values
(mamh,tenmonhoc,sotinchi) values
(mamh,tenmonhoc,sotinchi) values

5. Chèn dữ liệu vào bảng điểm
insert
into
(masv,mamonhoc,diemtbki1,diemtbki2,diemtbnam)
('mssv01','mmh01',6,6,6)
insert
into
(masv,mamonhoc,diemtbki1,diemtbki2,diemtbnam)
('mssv02','mmh02',7,7,7)
insert
into
(masv,mamonhoc,diemtbki1,diemtbki2,diemtbnam)
('mssv03','mmh03',8,8,8)
insert
into
(masv,mamonhoc,diemtbki1,diemtbki2,diemtbnam)
('mssv04','mmh04',8,8,8)


diem
values
diem
values
diem
values
diem
values

6. Chèn dữ liệu vào bảng khen thưởng
insert into khenthuong (makt,masv,hocbong) values
('mkt01','mssv03',500000)
insert into khenthuong (makt,masv,hocbong) values
('mkt02','mssv04',600000)

11


III. BÀI TẬP VIEW
7. Tạo view sinhvien
create view getsinhvien
as
select masv,hoten,gioitinh,diachi from sinhvien
8. Tạo view diem
create view getdiem
as
select masv,diemtbnam from diem
9. Tạo view lớp
create view getlop

as
select
malop,tenlop,makhoa

4. Tạo view khoa
create view getkhoa
as
select * from khoa
5.Tạo view môn học
create view getmonhoc
as
select mamh,tenmonhoc from monhoc

12

from

lop


6.Tạo view khen thưởng
create view getkhenthuong
as
select makt,masv from khenthuong
7. Tạo view giữa điểm và sinh viên
create view sinhvien_diem
as
select
diem.masv,hoten,diemtbki1,diemtbki2,diemtbnam
from diem,sinhvien where sinhvien.masv=diem.masv

8. Tạo view giữa sinh viên và khen thưởng
create view sinhvien_khenthuong
as
select
khenthuong.masv,hoten,makt,hocbong
from
sinhvien,khenthuong where sinhvien.masv=khenthuong.masv

IV. BÀI TẬP THỐNG KÊ
1. Thống kê số lượng sinh viên trong lớp
select malop,masv = count(masv) from sinhvien group by
malop
2. Thống kê số lượng sinh viên cho từng môn học
select tenmonhoc, count (distinct masv)'tổng số sv ' from
monhoc,diem
where monhoc.mamh=diem.mamonhoc
group by tenmonhoc
3. Thống kê số sinh viên được khen thưởng
13


select hocbong,count (distinct 'masv')'masv' from
khenthuong,sinhvien where khenthuong.masv=sinhvien.masv
group by hocbong
4. Thống kê số lượng môn học
select count (distinct mamh)'Tổng số môn học' from monhoc
5. Thống kê điểm
select diemtbnam,count (masv )'Số Lượng Sinh Viên' from
diem
group by diemtbnam

6. Thống kê sinh viên có điểm trung bình năm lớn hơn 6
select diemtbnam,count (masv )'mã sv' from diem
group by diemtbnam,masv
having diemtbnam>6
7. Thống kê số lượng khoa
select count (makhoa)'Tổng Số Khoa'from khoa

V.

BÀI TẬP PROCEDURE

4. Tạo procedure sinh viên
4.1.
Tạo procedure thêm sinh viên
create proc sinhvien_insert
@masv nchar (10),
@hoten nvarchar (30),
@malop nchar(10),
@gioitinh nchar(5),
@ngaysinh datetime,
14


@noisinh nvarchar(30),
@diachi nvarchar (30)
as
begin
insert into sinhvien
(masv,hoten,malop,gioitinh,ngaysinh,noisinh,diachi) values
(@masv,@hoten,@malop,@gioitinh,@ngaysinh,@noisinh,@

diachi)
end
4.2.

Tạo procedure sửa sinh viên
create proc sinhvien_update
@masv nchar (10),
@hoten nvarchar (30),
@malop nchar(10),
@gioitinh nchar(5),
@ngaysinh datetime,
@noisinh nvarchar(30),
@diachi nvarchar (30)
as
begin
update sinhvien set
masv=@masv,hoten=@hoten,malop=@malop,gioitinh=@
gioitinh,ngaysinh=@ngaysinh,noisinh=@noisinh,diachi=
@diachi where masv=@masv
end

4.3.

Tạo procedure xóa sinh viên
create proc sinhvien_delete
@masv nchar (10),
@hoten nvarchar (30),
@malop nchar(10),
15



@gioitinh nchar(5),
@ngaysinh datetime,
@noisinh nvarchar(30),
@diachi nvarchar (30)
as
begin
delete sinhvien where masv=@masv
end
5. Tạo procedure điểm
2.1 Tạo procedure thêm điểm
create proc diem_insert
@masv nchar(10),
@mamonhoc nchar (10),
@diemtbki1 decimal(4, 2),
@diemtbki2 decimal(4, 2),
@diemtbnam decimal(4, 2)
as
begin
insert into diem
(masv,mamonhoc,diemtbki1,diemtbki2,diemtbnam) values
(@masv,@mamonhoc,@diemtbki1,@diemtbki2,@diemtb
nam)
end
2.2 Tạo procedure sửa điểm
create proc diem_update
@masv nchar(10),
@mamonhoc nchar (10),
@diemtbki1 decimal(4, 2),
@diemtbki2 decimal(4, 2),

@diemtbnam decimal(4, 2)
16


as
begin
update diem set
masv=@masv,mamonhoc=@mamonhoc,diemtbki1=@die
mtbki1,diemtbki2=@diemtbki2,diemtbnam=@diemtbnam
where masv=@masv
end
2.3 Tạo procedure xóa điểm
create proc diem_delelte
@masv nchar(10),
@mamonhoc nchar (10),
@diemtbki1 decimal(4, 2),
@diemtbki2 decimal(4, 2),
@diemtbnam decimal(4, 2)
as
begin
delete diem where masv=@masv
end
3.Tạo procedure khen thưởng
3.1 Tạo procedure thêm dữ liệu vào bảng khen thưởng
create proc khenthuong_insert
@makt nchar(10),
@masv nchar(10),
@hocbong float
as
begin


17


insert into khenthuong (makt,masv,hocbong)
values (@makt,@masv,@hocbong)
end
3.2 .Tạo procedure sửa dữ liệu bảng khen thưởng
create proc khenthuong_update
@makt nchar(10),
@masv nchar(10),
@hocbong float
as
begin
update khenthuong set
makt=@makt,masv=@masv,hocbong=@hocbong where makt=@makt
end
3.3 Tạo procedure xóa dữ liệu bảng khen thưởng
create proc khenthuong_delete
@makt nchar(10),
@masv nchar(10),
@hocbong float
as
begin
delete khenthuong where makt=@makt
end

4. Tạo procedure bảng khoa
18



4.1 Tạo procedure thêm vào bảng khoa
create proc khoa_insert
@makhoa nchar (10),
@tenkhoa nvarchar(20)
as
begin
insert into khoa (makhoa,tenkhoa) values
(@makhoa,@tenkhoa)
end
4.2 Tạo procedure sửa dữ liệu bảng khoa
create proc khoa_update
@makhoa nchar (10),
@tenkhoa nvarchar(20)
as
begin
update khoa set makhoa=@makhoa,tenkhoa=@tenkhoa
where makhoa=@makhoa
end
4.3 Tạo procedure xóa dữ liệu bảng khoa
create proc khoa_delete
@makhoa nchar (10),
@tenkhoa nvarchar(20)
as
begin
delete khoa where makhoa=@makhoa
end
5.Tạo procedure lớp
5.1 Tạo procedure thêm dữ liệu vào lớp
create proc lop_insert

19


@malop nchar (10),
@tenlop nvarchar (20),
@makhoa nchar (10)
as
begin
insert into lop (malop,tenlop,makhoa) values
(@malop,@tenlop,@makhoa)
end
5.2 Tạo procedure sửa dữ liệu bảng lớp
create proc lop_update
@malop nchar (10),
@tenlop nvarchar (20),
@makhoa nchar (10)
as
begin
update lop set
malop=@malop,tenlop=@tenlop,makhoa=@makhoa
where malop=@malop
end
5.3 Tạo procedure xóa dữ liệu bảng lớp
create proc lop_delete
@malop nchar (10),
@tenlop nvarchar (20),
@makhoa nchar (10)
as
begin
delete lop where malop=@malop

end
6. Tạo procedure bảng môn học
20


6.1 Tạo procedure thêm dữ liệu vào bảng môn học
create proc monhoc_insert
@mamh nchar (10),
@tenmonhoc nvarchar (20),
@sotinchi tinyint
as
begin
insert into monhoc (mamh,tenmonhoc,sotinchi) values
(@mamh,@tenmonhoc,@sotinchi)
end
6.2 Tạo procedure sửa dữ liệu bảng môn học
create proc monhoc_update
@mamh nchar (10),
@tenmonhoc nvarchar (20),
@sotinchi tinyint
as
begin
update monhoc set
mamh=@mamh,tenmonhoc=@tenmonhoc,sotinchi=@soti
nchi where mamh=@mamh
end
6.3 Tạo procedure xóa dữ liệu môn học
create proc monhoc_delete
@mamh nchar (10),
@tenmonhoc nvarchar (20),

@sotinchi tinyint
as
begin
delete monhoc where mamh=@mamh
end
21


VI. BÀI TẬP TRIGGER
4. Tạo trigger insert và update sinh viên
create trigger tg_sinhvien on sinhvien for insert,update
as
begin
declare @count int =0
select @count = count (*) from inserted where
YEAR(GETDATE()) - YEAR(inserted.ngaysinh)<18
if (@count>0)
begin
print N'Tuổi Của Sinh Viên Không Được Nhỏ Hơn 18'
rollback tran
end
end
5. Tạo trigger insert và update điểm
create trigger tg_diem on diem for insert,update
as
begin
declare @count decimal (4,2)
select @count=COUNT(*) from inserted where
inserted.diemtbki1>10
select @count=COUNT(*) from inserted where

inserted.diemtbki2>10
select @count=COUNT(*) from inserted where
inserted.diemtbnam>10
select @count=COUNT(*) from inserted where
inserted.diemtbki1<0
select @count=COUNT(*) from inserted where
inserted.diemtbki2<0
22


select @count=COUNT(*) from inserted where
inserted.diemtbnam<0
if(@count>0)
begin
print N'Điểm nhập vào không hợp lệ không thể nhỏ
hơn 0 hoặc lớn hơn 10'
rollback tran
end
end
6. Tạo trigger insert và update môn học
create trigger tg_monhoc on monhoc for insert,update
as
begin
declare @tinchi tinyint =0
select @tinchi=count (sotinchi) from inserted where
inserted.sotinchi<=0
if (@tinchi>0)
begin
print N'số tín chỉ không đc nhỏ hơn 0'
rollback tran

end
end

23



×