SinhVienMSSV, Lop, Ho, Ten, Ngaysinh, Nu Tân từ: Mỗi sinh viên có một mã số MSSV là số nguyên phân biệt, thuộc một lớp Lop, có họ HO và tên Ten sinh viên, ngày sinh Ngaysinh, thuộc phái
Trang 1Đề 1
Câu 1: (3 điểm) Cơ sở dữ liệu quản lý sinh viên có chứa 3 table Viết lệnh tạo các table với
các ràng buộc khóa chính, khóa ngoại được nêu trong tân từ Kiểu dữ liệu của các Fields là tự
chọn theo ngữ nghĩa
SinhVien(MSSV, Lop, Ho, Ten, Ngaysinh, Nu)
Tân từ: Mỗi sinh viên có một mã số (MSSV) là số nguyên phân biệt, thuộc một lớp
(Lop), có họ (HO) và tên (Ten) sinh viên, ngày sinh (Ngaysinh), thuộc phái nữ hay nam (Nu)
MonHoc(MSMon, TenMon)
Tân từ: Mỗi môn học có một mã số (MSMon) là một số nguyên phân biệt, có tên môn
học (TenMon)
DiemThi(MSSV, MSMon, LanThi, Diem)
Tân từ: Mỗi sinh viên (MSSV) có thể học nhiều môn (MSMon) Mỗi môn học có thể
thi nhiều lần (LanThi), mỗi lần thi được đánh số thứ tự từ 1 trở đi và ghi nhận điểm thi (Diem) của các lần thi đó
Câu 2: (1 điểm) Khai báo bổ sung các ràng buộc sau:
a) Lần thi (LanThi) trong table DiemThi có giá trị mặc định là 1
b) Điểm thi (Diem) trong table DiemThi được chấm theo thang điểm 10
Câu 3: (2 điểm) Tạo View:
a) Tạo view vwLanThiCuoi dùng liêt kê danh sách lần thi cuối cùng của các sinh viên gồm: Mã số sinh viên, mã số môn học, lần thi cuối cùng của môn học (ví dụ sinh viên A thi môn học C ba lần thì lần thi cuối cùng là 3)
b) Tạo view vwDiemThiCuoi dùng liêt kê danh sách sinh viên gồm: Mã số sinh viên,
mã số môn học, lần thi cuối cùng của môn học (ví dụ sinh viên A thi môn học M
ba lần thì lần thi cuối cùng là 3) và điểm của lần thi cuối cùng đó
Câu 4: (2 điểm) Tạo trigger Insert cho table DiemThi dùng điền tự động số thứ tự lần thi khi
thêm điểm thi một môn học của một sinh viên Ví dụ sinh viên A đã thi môn học M hai lần
Trang 2thì lần thi mới thêm vào phải là 3.
Câu 5: (2 điểm) Viết thủ tục hoặc hàm liệt kê kết quả thi các môn của một sinh viên khi biết
mã số của sinh viên (MSSV) gồm các thông tin: mã số môn học, lần thi, điểm thi Trong đó,
mã số sinh viên là giá trị input
Lời giả:
use master
go
if exists(select * from sys.databases where name='De1')
drop database De1
go
create database De1
go
use De1
go
Câu 1 : Tạo TABLE
create table SinhVien
( MSSV int identity(1,1) primary key,
Lop varchar(10),
Ho varchar(10),
Ten varchar(30),
NgaySinh datetime,
Nu bit
)
create table MonHoc
( MSMon int identity(1,1) primary key,
TenMon varchar(30)
)
Trang 3create table DiemThi
( MSSV int,
MSMon int,
LanThi int,
Diem int,
primary key(MSSV,MSMon,LanThi),
foreign key(MSSV) references SinhVien(MSSV),
foreign key(MSMon) references MonHoc(MSMon),
)
Câu 2 : Bổ sung ràng buộc
go
Alter table DiemThi ADD
default 1 for LanThi,
check(Diem between 0 and 10)
insert into SinhVien values ('07ct112','Nguyen','Hoang Long','11/10/1989','True') insert into SinhVien values ('07ct112','Le','Ngoc Nam','11/10/1989','True')
insert into SinhVien values ('07ct112','Le','Thanh Phuc','12/25/1989','True')
insert into MonHoc values ('SQL 2005')
insert into MonHoc values ('TTHCM')
https://www.facebook.com/minhduc2091
insert into DiemThi values(1,1,1,10)
insert into DiemThi values(2,1,1,7)
insert into DiemThi values(2,1,2,9)
insert into DiemThi values(3,1,1,8)
insert into DiemThi values(3,2,1,2)
insert into DiemThi values(3,2,2,6)
insert into DiemThi values(3,2,3,10)
Câu 3.a) Tạo view vwLanThiCuoi
go
Trang 4create view vwLanThiCuoi
as
select MSSV, MSMon, LanThi=max(LanThi)
from DiemThi
group by MSSV, MSMon
Câu 3.a) Tạo view vwDiemThiCuoi
go
create view vwDiemThiCuoi
as
with BangTam as(select MSSV, MSMon, LanThiMax=max(LanThi)from DiemThi
group by MSSV, MSMon)
select D.*
from BangTam B join DiemThi D on (B.MSSV=D.MSSV and
B.MSMon=D.MSMon and
B.LanThiMAX =D.LanThi)
Câu 4 : Tạo trigger
GO
create trigger itrg_AutoLanThi on DiemThi
for INSERT
AS
declare @MSSV int
declare @MSMon int
select @MSSV = MSSV,@MSMon = MSMon from inserted
if NOT EXISTS (select * from DiemThi where MSSV=@MSSV and MSMon=@MSMon)
begin
print'MSSV them vao khong ton tai'
rollback tran
return
end
update DiemThi set DiemThi.LanThi = DiemThi.LanThi + 1
from INSERTED I where I.MSSV=@MSSV and I.MSMon=@MSMon
Trang 5Câu 5 : Tạo thủ tục
go
create proc ThongTinSV(@MSSV int=1)
https://www.facebook.com/minhduc2091
as
Begin
select MSMon,LanThi,Diem
from DiemThi
where MSSV = @MSSV
End
go
exec ThongTinSV 3
go
insert into DiemThi(MSSV,MSMon,Diem) values(4,1,7)