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

bài tập và lời giải môn cơ sở dữ liệu

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 (27.84 KB, 5 trang )

Đề 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


thì 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)
)


create 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')
/>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


create 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


Câu 5 : Tạo thủ tục
go
create proc ThongTinSV(@MSSV int=1)
/>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)



×