1. Trang chủ
  2. » Giáo án - Bài giảng

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

5 249 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 17 KB

Nội dung

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 2

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)

)

Trang 3

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

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 4

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

Trang 5

Câ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)

Ngày đăng: 07/03/2019, 14:06

TỪ KHÓA LIÊN QUAN

w