TÀI LIỆU ÔN THI CUỐI KỲ MÔN SQL, create database, create table, create view, create proceduces, đề thi sql có đáp án, đề thi sql có lời giải, đề thi sql, đề thi sql server có lời giải, đề thi sql server có lời giải
Trang 1/*TÀI LIỆU ÔN THI CUỐI KỲ MÔN SQL*/
Bài 1:
/*Trước hết phải tạo 1 database sinh viên VD n tạo trong ổ đĩ như dưới*/
create database Sinhvien
on primary (name=Sinhvien,filename='D:\Hoc_tap\SQL\Thi_60%\Sinhvien.mdf',
size=5,maxsize=50,filegrowth=2)
log on(name=Hoadon_log1,filename='D:\Hoc_tap\SQL\Thi_60%\Sinhvien_log.ldf',
size=2,maxsize=10,filegrowth=1)
-Câu 1: 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
GO
use Sinhvien
GO
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)
create table SinhVien
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 đó
create table DiemThi
(
MSMon int references MonHoc(MSMon),
MSSV int references SinhVien(MSSV),
Trang 2************************************************ Câu 2: 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
Alter table DiemThi
add default 1 for LanThi
GO
b) Điểm thi (Diem) trong table DiemThi được chấm theo thang điểm 10
Alter table DiemThi
Add check (diem between 0 and 10)
GO
/*Cũng có thể dùng Add check (diem >=0 and diem <=10)*/
************************************************ Câu 3: 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
create view vwDiemThiCuoi
as
select d.MSSV,d.MSMon,LanThiCuoi,Diem
from DiemThi d inner join vwLanThiCuoi v on d.MSSV=v.MSSV and
d.MSMon=v.MSMon and d.LanThi=v.LanThiCuoi
GO
Cách khác
create view vwDiemThiCuoi1
as
select MSSV,MSMon,lanthi,diem from diemthi d1
where lanthi = (select max(lanthi) from diemthi d2
where d2.MSSV=d1.MSSV and d2.MSMon=d1.MSMon)
GO
drop view vwDiemThiCuoi1
Câu 4: 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
create trigger itrg_DiemThi on DiemThi
Trang 3inserted of for Insert
declare @D int
Select @D=max (LanThi) from DiemThi inner join Inserted on DiemThi.MSSV
=Inserted.MSSV and DiemThi.MSMon=Inserted.MSMon
Insert into DiemThi
Select MSSV,MSMon,Isnull(@D,0)+1, Diem
Select @D= max(LanThi) from DiemThi inner join Inserted on DiemThi.MSSV
=Inserted.MSSV and DiemThi.MSMon=Inserted.MSMonInsert into DiemThi
Select MSSV,MSMon,Isnull(@D,0)+1, Diem
From Inserted
/*(Chưa làm được)*/
Câu 5: 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
create proc KetQuaThi (@MSSV int)
Bài 2: Quản lý trận đấu*/
/*Trước hết phải tạo 1 database sinh viên VD n tạo trong ổ đĩ như dưới*/
create database QuanLyTranDau
on primary (name=QuanLyTranDau,filename='D:\Hoc_tap\SQL\Thi_60%\QuanLyTranDau.mdf', size=5,maxsize=50,filegrowth=2)
log on(name=QuanLyTranDau_log,filename='D:\Hoc_tap\SQL\Thi_60%\QuanLyTranDau_log.ldf', size=2,maxsize=10,filegrowth=1)
go
use QuanLyTranDau
go
Câu 1: Cơ sở dữ liệu quản lý các trận đấu bóng đá tại một sân vận động 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
Doi(MSDoi, TenDoi, Phai)
Tân từ: Mỗi đội có 1 mã số (MSDoi) là một số nguyên phân biệt; có tên (TenDoi) và thuộc phái
nam hay nữ (Phai)
Trang 4create table Doi
TranDau(MSTD, NgayTD, GioBD, GioKT)
Tân từ: Mỗi trận đấu có 1 mã số (MSTD) là một số nguyên phân biệt với những trận đấu khác,
diễn ra vào 1 ngày (NgayTD), bắt đầu ở một giờ (GioBD) và dự kiến kết thúc tại một giờ (GioKT)
create table TranDau
Tân từ: Lưu trữ danh sách các đội (MSDoi) tham gia thi đấu trong các trận đấu (MSTD) Biết
rằng, mỗi trận đấu là một cuộc gặp gỡ giữa 2 đội và cả 2 đội phải thuộc cùng một phái
Create table DoiThiDau
(
MSTD int not null references TranDau(MSTD),
MSDoi int not null references Doi(MSDoi),
primary key (MSTD, MSDoi)
)
go
drop table Doi
Câu 2: Viết lệnh khai báo bổ sung các ràng buộc sau:
a) Giờ bắt đầu thi đấu (GioTD) phải nhỏ hơn giờ kết thúc (GioKT) trận đấu
alter table TranDau
add check (GioBD<GioKT)
go
b) Hai trận đấu trong table TranDau diễn ra trong cùng một ngày (NgayTD) thì không bắt đầu
ở cùng một giờ thi đấu (GioTD)
alter table TranDau
add unique (NgayTD,GioBD)
go
/*
c/Tui tự thêm: Đổi phải thành dạng bit
Trang 5
-alter table doi
alter column Phai bit not null
go
*/
Câu 3: Tạo View:
a) Tạo view vwDoiChuaThiDau dùng liêt kê danh sách các đội chưa có mã số đội trong table DoiThiDau gồm: Mã số đội, tên đội, phái.
create view vwDoiChuaThiDau
as
select * from Doi
where MSDoi not in
(select MSDoi from DoiThiDau)
b) Tạo view vwSoTranDau dùng thống kê số trận đấu diễn ra trong từng ngày thi đấu với các
thông tin: Ngày thi đấu và số trận đấu trong ngày
create view vwSoTranDau
Câu 4: Tạo insert trigger cho table DoiThiDau dùng kiểm tra ràng buộc mỗi trận đấu chỉ là một cuộc
gặp gỡ giữa 2 đội và cả 2 đội phải thuộc cùng một phái
Create trigger itrg_DoiThiDau on DoiThiDau
if (select count(*) from (inserted inner join DoiThiDau on
inserted.MSTD=DoiThiDau.MSTD) inner join Doi on DoiThiDau.MSDoi=Doi.MSDoi
group by Phai)=1
begin
Trang 6print N'Phái không phù hợp'
Rollback Tran
end
go
Câu 5: Tạo thủ tục hoặc hàm hiển thị thông tin 2 đội tham gia trong một trận đấu khi biết mã số trận
đấu Nếu mã trân đấu không có trong table DoiThiDau thì hiện thị thông báo lỗi Trong đó, mã số trận đấu (MSTD) là giá trị input
create Proc spDoiThiDau(@N int)
Câu 1: Cơ sở dữ liệu quản lý thi 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
ThiSinh(MSTS, Ho, Ten, Ngaysinh, SBD, PhongThi)
Tân từ: Mỗi thí sinh có một mã số (MSTS) là một số nguyên phân biệt, có họ (Ho), tên (Ten),
ngày sinh (Ngaysinh), số báo danh (SBD), thuộc một phòng thi (PhongThi)
CREATE TABLE THISINH
Tân từ: Mỗi môn thi có một mã số (MSMon) là một số nguyên phân biệt và có tên môn thi (TenMon)
CREATE TABLE MONTHI
(
MSMON INT PRIMARY KEY,
TENMON NVARCHAR(30)
)
Trang 7DiemMonThi(MSTS, MSMon, DiemThi)
Tân từ: Ở mỗi môn thi (MSMon) thí sinh (MSTS) có một điểm thi (DiemThi)
CREATE TABLE DIEMMONTHI
(
MSTS INT REFERENCES THISINH(MSTS),
MSMON INT REFERENCES MONTHI(MSMON),
DIEMTHI TINYINT,
CONSTRAINT pk_DIEMMONTHI PRIMARY KEY (MSTS,MSMON)
)
Câu 2: Khai báo bổ sung các ràng buộc sau:
a) Mỗi thí sinh trong table ThiSinh có một số báo danh (SBD) phân biệt
ALTER TABLE THISINH ADD UNIQUE(SBD)
b) Điểm thi (DiemThi) trong table DiemMonThi có giá trị từ 0 đến 10
ALTER TABLE DIEMMONTHI ADD CHECK(DIEMTHI BETWEEN 0 AND 10)
Câu 3: Tạo View:
a) Tạo view vwBoThi dùng liệt kê danh sách thí sinh bỏ thi (không có trong table
b) Tạo view vwKetQuaThi dùng liệt kê tổng điểm thi các môn của các thí sinh gồm: Số báo
danh, họ, tên, ngày sinh, phòng thi, tổng điểm thi Sắp thứ tự ưu tiên theo phòng thi, sau đó
là số báo danh
CREATE VIEW vwKetQuaThi
AS
SELECT SBD,HO,TEN,NGAYSINH,PHONGTHI,SUM(DIEMTHI) AS TONGDIEM
FROM THISINH INNER JOIN DIEMMONTHI ON THISINH.MSTS=DIEMMONTHI.MSTS GROUP BY SBD,HO,TEN,NGAYSINH,PHONGTHI
GO
Câu 4: Tạo update trigger cho table ThiSinh để kiểm tra ràng buộc: Khi chuyển một thí sinh sang
phòng thi khác (sửa PhongThi của thí sinh) thì số thí sinh của phòng thi chuyển đến không được quá 25 thí sinh
CREATE TRIGGER utrg_PHONGTHI ON THISINH
Trang 8Update THISINH set SBD=STT
From THISINH inner join
(select MSTS,ROW_NUMBER() over(order by Ten, Ho) As STT
from THISINH) as tblTemp on ThiSinh MSTS=tblTemp.MSTS
UPDATE THISINH SET SBD=@I WHERE CURRENT OF curTS
FETCH NEXT FROM curTS
Câu 1: Cơ sở dữ liệu quản lý hóa đơn bán hàng 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
1- MatHang(MSMH, TenMH, DonGia, SoTon)
Tân từ: Mỗi mặt hàng có một mã số (MSMH) là một số nguyên phân biệt, có tên mặt hàng
(TenMH), đơn giá (DonGia) bán mới nhất của mặt hàng đó và số lượng hàng tồn kho (SoTon)
CREATE TABLE MATHANG
Tân từ: Mỗi hóa đơn có một mã số phân biệt (MSHD), ngày lập hóa đơn (NgayLap)
CREATE TABLE HOADON
Trang 9MSHD INT REFERENCES HOADON(MSHD),
MSMH INT REFERENCES MATHANG(MSMH),
SOLUONG FLOAT,
DONGIAHD MONEY,
sPRIMARY KEY (MSHD,MSMH)
)
Câu 2: Khai báo bổ sung các ràng buộc sau:
a) Số tồn (SoTon) trong table MatHang có giá trị mặc định (Default) bằng 0
ALTER TABLE MATHANG ADD DEFAULT 0 FOR SOTON
b) Tên mặt hàng trong table MatHang có giá trị phân biệt giữa các mặt hàng
ALTER TABLE MATHANG ADD UNIQUE(TENMH)
Câu 3: Tạo View:
a) Tạo view “vwTienHD” dùng hiển thị tiền bán trên từng hóa đơn gồm các thông tin: mã số hóa đơn, ngày lập, tiền hóa đơn bằng tổng tiền bán từng mặt hàng ghi trên mỗi hóa đơn
SELECT * FROM MATHANG WHERE MSMH NOT IN (SELECT MSMH
FROM HOADON INNER JOIN CTHD ON HOADON.MSHD=CTHD.MSHD WHERE
MONTH(NGAYLAP)=MONTH(GETDATE()))
GO
Câu 4: Xây dựng Insert trigger cho CTHD thực hiện yêu cầu: khi thêm một chi tiết hóa đơn phải cập
nhật lại số lượng tồn (SoTon) của mặt hàng tương ứng
CREATE TRIGGER itrg_GiamTon ON CTHD
Trang 10UPDATE MATHANG SET SOTON=SOTON-SOLUONG
FROM INSERTED WHERE MATHANG.MSMH = INSERTED.MSMH
GO
Câu 5: Viết thủ tục hoặc hàm nhận 2 giá trị input kiểu số nguyên là tháng và năm Hãy liệt kê doanh
thu của từng mặt hàng gồm các thông tin: mã số mặt hàng, doanh thu mặt hàng trong :
a) Một năm nếu tháng là Null và năm khác Null
b) Một tháng nếu tháng và năm khác Null
CREATE PROC spDTThang(@THANG TINYINT, @NAM SMALLINT)
AS
IF(@THANG <> NULL) AND (@NAM <> NULL)
SELECT MSMH,SUM(SOLUONG*DONGIAHD) FROM HOADON INNER JOIN CTHD
ON HOADON.MSHD=CTHD.MSHD WHERE MONTH(NGAYLAP)=@THANG AND
YEAR(NGAYLAP)=@NAM GROUP BY MSMH
ELSE IF (@NAM <> NULL)
SELECT MSMH,SUM(SOLUONG*DONGIAHD) FROM HOADON INNER JOIN CTHD
ON HOADON.MSHD=CTHD.MSHD WHERE YEAR(NGAYLAP)=@NAM GROUP BY MSMH If(@THANG is not null)
select 1
Bài 5
Câu 1: Cơ sở dữ liệu quản lý việc mượn trả sách 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
1- Sach(MaSach, TenSach, SoLuong, SoDaMuon)
Tân từ: Mỗi tựa sách có một mã số (MaSach) là một số nguyên phân biệt, có tên sách (TenSach), số lượng (SoLuong), và số sách hiện đã cho mượn (SoDaMuon)
CREATE TABLE SACH
Trang 11CREATE TABLE DOCGIA
(
MADG INT PRIMARY KEY,
TENDG NVARCHAR(50)
)
3- PhieuMuon(MaDG, NgayMuon, MaSach, NgayTra)
Tân từ: Mỗi ngày mỗi đọc giả chỉ được mượn một quyển sách Khi đọc giả mượn sách cần ghi nhận
mã đọc giả (MaDG), ngày mượn (NgayMuon), mã sách (MaSach), ngày trả sách (NgayTra) Ngày trả sách là Null khi chưa trả sách
CREATE TABLE PHIEUMUON
Câu 2: Khai báo bổ sung các ràng buộc sau:
a) Số lượng sách (SoLuong) trong table Sach không nhỏ hơn số sách đã mượn (SoDaMuon)
ALTER TABLE SACH ADD CONSTRAINT chkSOLUONG CHECK(SOLUONG<=SODAMUON)
b) Ngày mượn sách (NgayMuon) trong table PhieuMuon có giá trị mặc định là ngày hiện hành
ALTER TABLE PHIEUMUON ADD CONSTRAINT dfNGAYMUON DEFAULT GETDATE() FOR NGAYMUON
Câu 3: Tạo View:
a) Tạo view “vwHetSach” dùng liêt kê các sách có số lượng sách (SoLuong) bằng với số lượng sách đã cho mượn (SoDaMuon) gồm các thông tin: Mã sách, tên sách
GO
Câu 4: Tạo update trigger trên table PhieuMuon thực hiện yêu cầu sau: Khi sửa ngày trả của một phiếu
mượn từ giá trị Null sang một giá trị khác Null thì phải giảm số lượng sách đã mượn của tựa sách tương ứng trên table Sach, ngược lại nếu sửa ngày trả từ một giá trị khác Null sang giá trị Null thì phải tăng số lượng sách đã mượn của tựa sách tương ứng trên table Sach
Trang 12CREATE TRIGGER utrg_NGAYTRA ON PHIEUMUON
IF EXISTS(SELECT * FROM DELETED,INSERTED WHERE DELETED.NGAYTRA
!= NULL AND INSERTED.NGAYTRA=NULL)
UPDATE SACH SET SODAMUON=SODAMUON+1 FROM INSERTED WHERE SACH.MASACH=INSERTED.MASACH
GO
Câu 5: Tao thủ tục hoặc hàm trả về số sách còn có thể cho mượn (SoLuong – SoDaMuon) của một mã
sách nào đó Trong đó, mã sách là giá trị input Hiển thị thông báo lỗi nếu mã sách không tồn tại trong
table Sach.
CREATE PROC spDTThang(@MASACH INT)
AS
IF(NOT EXISTS(SELECT * FROM SACH WHERE MASACH=@MASACH))
PRINT N'Khong tim thay ma sach nay!'
ELSE
SELECT SOLUONG-SODAMUON AS ST FROM SACH WHERE MASACH=@MASACH
Bài 6
Câu 1: Cơ sở dữ liệu quản lý kết quả học tập của học sinh 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
1- HocSinh(MSHS, Ho, Ten, TenLop, STTSoDiem)
Tân từ: Mỗi học sinh có một mã số (MSHS) là một số nguyên phân biệt, có họ (Ho), tên (Ten), học ở một lớp (TenLop) và có số thứ tự học sinh ghi trong sổ điểm lớn của lớp (STTSoDiem)
CREATE TABLE HOCSINH
2- MonHoc(MSMon, TenMon, HeSoMon)
Tân từ: Mỗi môn học có mã số là số nguyên phân biệt (MSMon) Có tên môn học (TenMon) và hệ số môn học (HeSoMon) dùng để tính điểm trung bình các môn của một học sinh
CREATE TABLE MONHOC
Trang 13Tân từ: Ở mỗi môn học (MSMon), mỗi học sinh (MSHS) có một điểm trung bình cả năm của môn học
đó (DTBMon)
CREATE TABLE DIEMTBMCN
(
MSHS INT REFERENCES HOCSINH(MSHS),
MSMON INT REFERENCES MONHOC(MSMON),
DTMMON TINYINT,
CONSTRAINT pk_DIEMTBMCN PRIMARY KEY (MSHS,MSMON)
)
Câu 2: Khai báo bổ sung các ràng buộc sau:
a) Mỗi môn học có tên môn học (TenMon) phân biệt
ALTER TABLE MONHOC ADD CONSTRAINT uq_TENMON UNIQUE(TENMON)
b) Điểm trung bình môn (DTBMon) có giá trị từ 0 đến 10
ALTER TABLE DIEMTBMCN ADD CONSTRAINT chk_DTBMON CHECK(DTBMON
BETWEEN 0 AND 10)
Câu 3: Tạo View:
a) Tạo view vwDTBCacMon dùng liêt kê điểm trung bình các môn của các học sinh gồm: Mã
số học sinh, điểm trung bình các môn Trong đó, điểm trung bình các môn của một học sinh bằng tổng điểm trung bình môn (DTBMon) của học sinh đó chia cho tổng hệ số các môn học (HeSoMon)
GO
CREATE VIEW vwDTBCacMon
AS
SELECT MSHS,SUM(DTMMON)/SUM(HESOMON) AS DTB FROM DIEMTBMCN
INNER JOIN MONHOC ON DIEMTBMCN.MSMON=MONHOC.MSMON GROUP BY MSHSGO
b) Tạo view vwThoiHoc dùng liêt kê danh sách học sinh không tồn tại trong table DiemTBMCN
CREATE VIEW vwThoiHoc
AS
SELECT * FROM HOCSINH WHERE MSHS NOT IN (SELECT MSHS FROM
DIEMTBMCN)
GO
Câu 4: Tạo Insert trigger cho table HocSinh để thực hiện yêu cầu sau: Khi thêm một học sinh mới vào
một lớp thì cập nhật tự động số thứ tự của học sinh đó bằng số thứ tự lớn nhất hiện có trong lớp cộng thêm 1
CREATE TRIGGER itrg_STT ON HOCSINH
FOR INSERT
AS
DECLARE @STTMAX INT
SELECT @STTMAX=MAX(HOCSINH.STTSODIEM) FROM HOCSINH,INSERTED
WHERE HOCSINH.TENLOP=INSERTED.TENLOP
UPDATE HOCSINH SET STTSODIEM=@STTMAX+1 FROM INSERTED WHERE
HOCSINH.MSHS=INSERTED.MSHS
Trang 14Câu 5: Viết thủ tục hoặc hàm để điền số thứ tự sổ điểm (STTSoDiem) tự động từ 1 trở đi theo thứ tự
tên và họ của các học sinh trong một lớp Trong đó, tên lớp là giá trị input
CREATE PROC spDienSTTSD(@TENLOP NVARCHAR(50))
Câu 1: Cơ sở dữ liệu quản lý học 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
HocVien(MaHV, Lop, Ho, Ten, Ngaysinh, Phai)
Tân từ: Mỗi học viên có một mã số (MaHV) 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 (Phai)
CREATE TABLE HOCVIEN
Tân từ: Mỗi môn học có một mã số (MaMH) là một số nguyên phân biệt, có tên môn học (TenMon)
CREATE TABLE MONHOC
(
MAMH INT PRIMARY KEY,
TENMON NVARCHAR(50),
)
KetQua(MaHV, MaMH, LanThi, Diem)
Tân từ: Mỗi học viên (MaHV) có thể học nhiều môn (MaMH) 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 đó.CREATE TABLE KETQUA
Trang 15MAHV INT REFERENCES HOCVIEN(MAHV),
MAMH INT REFERENCES MONHOC(MAMH),
LANTHI TINYINT,
DIEM TINYINT,
CONSTRAINT pk_KETQUA PRIMARY KEY (MAHV,MAMH,LANTHI)
)
Câu 2: Khai báo bổ sung các ràng buộc sau:
a) Lần thi (LanThi) trong table KetQua có giá trị mặc định là 1
ALTER TABLE KETQUA ADD CONSTRAINT df_LANTHI DEFAULT 1 LANTHI
b) Điểm thi (Diem) trong table KetQua được chấm theo thang điểm 10
ALTER TABLE KETQUA ADD CONSTRAINT chk_DIEM CHECK(DIEM BETWEEN 0 AND 10)
Câu 3: 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 học 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ụ học viên A thi môn học C ba lần thì lần thi cuối cùng là 3)
là 3) và điểm của lần thi cuối cùng đó
CREATE VIEW vwKetQuaCuoi
AS
SELECT MAHV,MAMH,MAX(LANTHI) AS LTC,DIEM FROM KETQUA GROUP BY MAHV,MAMH,MAX(LANTHI),DIEM
GO
Câu 4: Tạo trigger Insert cho table KetQua 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ụ học 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
CREATE TRIGGER itrg_LANTHI ON KETQUA
INSTEAD OF INSERT
AS
GO
Câu 5: Viết thủ tục hoặc hàm liệt kê kết quả thi các môn của một học viên khi biết mã số của học viên
(MaHV) gồm các thông tin: mã số môn học, lần thi, điểm thi Trong đó, mã số học viên là giá trị input
CREATE PROC spKetQuaThi(@MAHV INT)
AS
SELECT MAMH,LANTHI,DIEM FROM KETQUA WHERE MAHV=@MAHV