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
Mã
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