Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
222,5 KB
Nội dung
Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý sinh viên có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa SinhVien(MSSV, Lop, Ho, Ten, Ngaysinh, Nu) Tân từ: Mỗi sinh viên có mã số (MSSV) số nguyên phân biệt, thuộc lớp (Lop), có họ (HO) 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ã số (MSMon) 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) học nhiều môn (MSMon) Mỗi môn học thi nhiều lần (LanThi), lần thi đánh số thứ tự từ trở ghi nhận điểm thi (Diem) lần thi Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Lần thi (LanThi) table DiemThi có giá trị mặc định b) Điểm thi (Diem) table DiemThi 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 sinh viên gồm: Mã số sinh viên, mã số môn học, lần thi cuối môn học (ví dụ sinh viên A thi môn học C ba lần lần thi cuối 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 môn học (ví dụ sinh viên A thi môn học M ba lần lần thi cuối 3) điểm lần thi cuối 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 thêm điểm thi môn học sinh viên Ví dụ sinh viên A thi môn học M hai lần lần thi thêm vào phải Câu 5: (2 điểm) Viết thủ tục hàm liệt kê kết thi môn sinh viên biết mã số sinh viên (MSSV) gồm thông tin: mã số môn học, lần thi, điểm thi Trong đó, mã số sinh viên giá trị input ĐềThiSQLCóLờiGiải Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý trận đấu bóng đá sân vận động có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa Doi(MSDoi, TenDoi, Phai) Tân từ: Mỗi đội có mã số (MSDoi) số nguyên phân biệt; có tên (TenDoi) thuộc phái nam hay nữ (Phai) TranDau(MSTD, NgayTD, GioBD, GioKT) Tân từ: Mỗi trận đấu có mã số (MSTD) số nguyên phân biệt với trận đấu khác, diễn vào ngày (NgayTD), bắt đầu (GioBD) dự kiến kết thúc (GioKT) DoiThiDau(MSTD, MSDoi) Tân từ: Lưu trữ danh sách đội (MSDoi) tham gia thi đấu trận đấu (MSTD) Biết rằng, trận đấu gặp gỡ đội đội phải thuộc phái Câu 2: (1 điểm) Viết lệnh khai báo bổ sung ràng buộc sau: a) Giờ bắt đầu thi đấu (GioTD) phải nhỏ kết thúc (GioKT) trận đấu b) Hai trận đấu table TranDau diễn ngày (NgayTD) không bắt đầu thi đấu (GioTD) Câu 3: (2 điểm) Tạo View: a) Tạo view vwDoiChuaThiDau dùng liêt kê danh sách đội chưa có mã số đội table DoiThiDau gồm: Mã số đội, tên đội, phái b) Tạo view vwSoTranDau dùng thống kê số trận đấu diễn ngày thi đấu với thông tin: Ngày thi đấu số trận đấu ngày Câu 4: (2 điểm) Tạo insert trigger cho table DoiThiDau dùng kiểm tra ràng buộc trận đấu gặp gỡ đội đội phải thuộc phái Câu 5: (2 điểm) Tạo thủ tục hàm hiển thị thông tin đội tham gia trận đấu biết mã số trận đấu Nếu mã trân đấu table DoiThiDau thị thông báo lỗi Trong đó, mã số trận đấu (MSTD) giá trị input Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý hóa đơn bán hàng có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa 1- MatHang(MSMH, TenMH, DonGia, SoTon) Tân từ: Mỗi mặt hàng có mã số (MSMH) số nguyên phân biệt, có tên mặt hàng (TenMH), đơn giá (DonGia) bán mặt hàng số lượng hàng tồn kho (SoTon) 2- HoaDon(MSHD, NgayLap) Tân từ: Mỗi hóa đơn có mã số phân biệt (MSHD), ngày lập hóa đơn (NgayLap) 3- CTHD(MSHD, MSMH, SoLuong, DonGiaHD) Tân từ: Mỗi hóa đơn (MSHD) ghi nhiều mặt hàng (MSMH) với số lượng (SoLuong) đơn giá bán thời điểm ghi hóa đơn (DonGiaHD) Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Số tồn (SoTon) table MatHang có giá trị mặc định (Default) b) Tên mặt hàng table MatHang có giá trị phân biệt mặt hàng Câu 3: (2 điểm) Tạo View: a) Tạo view “vwTienHD” dùng hiển thị tiền bán hóa đơn gồm thông tin: mã số hóa đơn, ngày lập, tiền hóa đơn tổng tiền bán mặt hàng ghi hóa đơn b) Tạo view “vwHangKhongBanDuoc” dùng liêt kê danh sách mặt hàng không bán tháng hành Câu 4: (2 điểm) Xây dựng Insert trigger cho CTHD thực yêu cầu: thêm chi tiết hóa đơn phải cập nhật lại số lượng tồn (SoTon) mặt hàng tương ứng Câu 5: (2 điểm) Viết thủ tục hàm nhận giá trị input kiểu số nguyên tháng năm Hãy liệt kê doanh thu mặt hàng gồm thông tin: mã số mặt hàng, doanh thu mặt hàng : a) Một năm tháng Null năm khác Null b) Một tháng tháng năm khác Null Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý việc mượn trả sách có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa 1- Sach(MaSach, TenSach, SoLuong, SoDaMuon) Tân từ: Mỗi tựa sách có mã số (MaSach) số nguyên phân biệt, có tên sách (TenSach), số lượng (SoLuong), số sách cho mượn (SoDaMuon) 2- DocGia(MaDG, TenDG) Tân từ: Mỗi đọc giả có mã số đọc giả (MaDG) số nguyên phân biệt, có tên đọc giả (TenDG) 3- PhieuMuon(MaDG, NgayMuon, MaSach, NgayTra) Tân từ: Mỗi ngày đọc giả mượ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 Null chưa trả sách Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Số lượng sách (SoLuong) table Sach không nhỏ số sách mượn (SoDaMuon) b) Ngày mượn sách (NgayMuon) table PhieuMuon có giá trị mặc định ngày hành Câu 3: (2 điểm) Tạo View: a) Tạo view “vwHetSach” dùng liêt kê sách có số lượng sách (SoLuong) với số lượng sách cho mượn (SoDaMuon) gồm thông tin: Mã sách, tên sách b) Tạo view “vwChuaTraSach” dùng hiển thị danh sách đọc giả chưa trả sách (có ngày trả rổng) gồm thông tin: mã đọc giả, tên đọc giả, ngày mượn, tên sách mượn Câu 4: (2 điểm) Tạo update trigger table PhieuMuon thực yêu cầu sau: Khi sửa ngày trả phiếu mượn từ giá trị Null sang giá trị khác Null phải giảm số lượng sách mượn tựa sách tương ứng table Sach, ngược lại sửa ngày trả từ giá trị khác Null sang giá trị Null phải tăng số lượng sách mượn tựa sách tương ứng table Sach Câu 5: (2 điểm) Tao thủ tục hàm trả số sách cho mượn (SoLuong – SoDaMuon) mã sách Trong đó, mã sách giá trị input Hiển thị thông báo lỗi mã sách không tồn table Sach Svlhu08ct111@yahoo.com.vn Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý lương hành chánh nghiệp có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa 1- NgachLuong(MSNgach, MoTa) Tân từ: Hệ thống lương hành chánh gồm nhiều ngạch, ngạch lương có mã số (MSNgach) số nguyên phân biệt, mục mô tả (MoTa) dùng định nhân viên thực công việc nào, cấp thuộc ngạch lương 2- DMNgachBac(MSNgach, Bac, HSLuong) Tân từ: Mỗi ngạch lương (MSNgach) có nhiều bậc lương (Bac) Mỗi bậc lương số nguyên có giá trị từ trở phân biệt ngạch lương Mỗi bậc ngạch lương có hệ số lương (HSLuong) 3- NhanVien(MSNV, Ho, Ten, MSNgach, Bac, NgayNLCC) Tân từ: Mỗi nhân viên có mã số (MSNV) số nguyên phân biệt, có họ (Ho), tên (Ten), thuộc ngạch lương (MSNgach), bậc lương (Bac) ngày nâng lương cuối (NgayNLCC) Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Trong table DMNgachBac, Hệ số lương (HSLuong) phải phân biệt ngạch lương (MSNgach) b) Bậc lương (Bac) table NhanVien có giá trị mặc định (Default) Câu 3: (2 điểm) Tạo View: a) Tạo view vwHSLuong dùng liêt kê hệ số lương nhân viên gồm thông tin: mã số nhân viên, mã số ngạch, bậc, hệ số lương b) Tạo view vwNangLuong dùng liệt kê nhân viên có số tháng tính từ ngày nâng lương cuối (NgayNLCC) đến ngày hành có giá trị không nhỏ 24 tháng Câu 4: (2 điểm) Tạo update trigger cho table NhanVien để kiểm tra ràng buộc: Khi nâng bậc lương (Bac) nhân viên bậc lương không lớn bậc lương cao ngạch lương nhân viên (ví dụ, ngạch lương mã số 15113 có số thứ tự bậc lương từ đến 10 bậc lương nhân viên có mã ngạch 15113 không đượt lớn 10) Câu 5: (2 điểm) Viết thủ tục hay hàm trả danh sách nhân viên nâng lương năm (nghĩa có ngày nâng lương cuối thuộc năm tìm kiếm) Trong đó, năm giá trị Input kiểu số nguyên Nếu năm Null trả danh sách nhân viên nâng lương năm hành Môn thi : Lậptrình SQL-SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu địa lý Việt Nam có chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa 1- Tinh(MSTinh, TenTinh, DienTich, DanSo, TinhBG) Tân từ: Mỗi tỉnh có mã tỉnh (MSTinh) số nguyên phân biệt, có tên tỉnh (TenTinh), diện tích (DienTich), dân số (DanSo) tỉnh biên giới hay không tỉnh biên giới (TinhBG) 2- BienGioi(MSTinh, TenNuoc) Tân từ : Lưu trữ danh sách tỉnh (MSTinh) biên giới giáp ranh với nước khác (TenNuoc) 3- LangGieng(MsTinh, MSTinhLG) Tân từ : Mỗi tỉnh (MSTinh) giáp ranh với hay nhiều tỉnh láng giềng (MSTinhLG) Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Trong table LangGieng, mã tỉnh phải khác mã tỉnh láng giềng b) Tên tỉnh table Tinh có giá trị phân biệt tỉnh Câu 3: (2 điểm) Tạo View: a) Tạo view vwTinhLon dùng liêt kê danh sách tỉnh có diện tích lớn diện tích tỉnh láng giềng tỉnh b) Tạo view vwSoNuocGiapRanh dùng thống kê số nước giáp ranh tỉnh biên giới với thông tin: mã tỉnh, tên tỉnh, số nước giáp ranh với tỉnh Câu 4: (2 điểm) Tạo Insert trigger cho table BienGioi để thực yêu cầu sau: Khi thêm mẫu tin table BienGioi cập nhật giá trị cho thuộc tính TinhBG table Tinh tỉnh có mã số tỉnh (MSTinh) thêm table BienGioi Câu 5: (2 điểm) Viết thủ tục hàm dùng liệt kê thông tin tỉnh láng giềng tỉnh biết mã tỉnh Trong đó, mã tỉnh giá trị input Thông tin tỉnh láng giềng cần hiển thị gồm: số thứ tự, mã tỉnh, tên tỉnh láng giềng Nếu mã tỉnh không tồn thông báo lỗiĐỀ Câu 1: (3 điểm) Cơ sở liệu quản lý thicó chứa table Viết lệnh tạo table với ràng buộc khóa chính, khóa ngoại nêu tân từ Kiểu liệu Fields tự chọn theo ngữ nghĩa ThiSinh(MSTS, Ho, Ten, Ngaysinh, SBD, PhongThi) Tân từ: Mỗi thí sinh có mã số (MSTS) số nguyên phân biệt, có họ (HO) tên (Ten) sinh viên, ngày sinh (Ngaysinh), số báo danh (SBD), thuộc phòng thi (PhongThi) MonThi(MSMon, TenMon) Tân từ: Mỗi môn thicó mã số (MSMon) số nguyên phân biệt, có tên môn thi (TenMon) DiemMonThi(MSTS, MSMon, DiemThi) Tân từ: Ở môn thi (MSMon) thí sinh (MSTS) có điểm thi (DiemThi) Câu 2: (1 điểm) Khai báo bổ sung ràng buộc sau: a) Mỗi thí sinh table ThiSinh có số báo danh (SBD) phân biệt b) Điểm thi (DiemThi) table DiemMonThi có giá trị từ đến 10 Câu 3: (2 điểm) Tạo View: a) Tạo view vwBoThi dung liệt kê danh sách thí sinh bỏthi (không có table DiemMonThi) b) Tạo view vwKetQuaThi dùng liệt kê tổng điểm thi môn 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 số báo danh Câu 4: (2 điểm) Tạo update trigger cho table ThiSinh để kiểm tra ràng buộc : Khi chuyển thí sinh sang phòng thi khác (sửa PhongThi thí sinh) thí số thí sinh phòng thi chuyển đến không 25 thí sinh Câu 5: (2 điểm) Viết thủ tục hàm sử dụng để điền số báo danh tự động (SBD) từ trở theo thứ tự tên họ GIẢIĐỀ 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 : 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 : Bổ sung ràng buộc go Alter table DiemThi ADD default for LanThi, check(Diem between 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 : 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 + from INSERTED I where I.MSSV=@MSSV and I.MSMon=@MSMon -Câu : 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 go insert into DiemThi(MSSV,MSMon,Diem) values(4,1,7) -INSERT INTO HOADON VALUES (10144,'3/30/2003') INSERT INTO HOADON VALUES (10150,'4/9/2003') INSERT INTO HOADON VALUES (10156,'4/20/2003') INSERT INTO HOADON VALUES (10158,'4/22/2003') INSERT INTO HOADON VALUES (10175,'5/19/2003') INSERT INTO HOADON VALUES (10177,'5/21/2003') INSERT INTO HOADON VALUES (10193,'6/10/2003') INSERT INTO HOADON VALUES (10207,'6/29/2003') INSERT INTO HOADON VALUES (10225,'7/21/2003') INSERT INTO HOADON VALUES (10226,'7/22/2003') INSERT INTO HOADON VALUES (10255,'8/27/2003') INSERT INTO HOADON VALUES (10258,'8/30/2003') INSERT INTO HOADON VALUES (10261,'9/5/2003') -INSERT INTO CTHD VALUES (10144,2,35,42) INSERT INTO CTHD VALUES (10144,6,20,25) INSERT INTO CTHD VALUES (10144,3,10,10.5) INSERT INTO CTHD VALUES (10150,6,9,25) INSERT INTO CTHD VALUES (10156,2,25,42) INSERT INTO CTHD VALUES (10158,4,12,39.9) INSERT INTO CTHD VALUES (10158,6,20,25) INSERT INTO CTHD VALUES (10175,8,12,65.6) INSERT INTO CTHD VALUES (10177,4,6,39.9) INSERT INTO CTHD VALUES (10177,6,30,25) INSERT INTO CTHD VALUES (10193,6,15,25) INSERT INTO CTHD VALUES (10207,1,10,242) INSERT INTO CTHD VALUES (10225,1,10,242) INSERT INTO CTHD VALUES (10225,4,70,39.9) INSERT INTO CTHD VALUES (10226,4,21,39.9) INSERT INTO CTHD VALUES (10255,3,35,10.5) INSERT INTO CTHD VALUES (10255,1,20,242) INSERT INTO CTHD VALUES (10255,5,55,8.4) INSERT INTO CTHD VALUES (10258,1,50,242) INSERT INTO CTHD VALUES (10261,3,60,10.5) -GO CREATE VIEW vwTienHD AS SELECT H.MSHD,NGAYLAPHD,TIENHD= SUM(SOLUONG*DONGIABAN) FROM HOADON H JOIN CTHD C ON H.MSHD = C.MSHD GROUP BY H.MSHD,NGAYLAPHD -GO CREATE VIEW vwHangKhongBanDuoc AS SELECT M.* FROM MATHANG M WHERE MSMH NOT IN( SELECT C.MSMH FROM CTHD C WHERE C.MSHD IN(SELECT H.MSHD FROM HOADON H)) -GO CREATE PROC DoanhThu(@Thang int = NULL,@Nam int = NULL) AS IF @Nam is NULL BEGIN print'Gia tri INPUT = NULL' END ELSE IF @Thang is NULL BEGIN SELECT M.MSMH,DOANHTHU= SUM(SOLUONG*DONGIABAN) FROM (MATHANG M JOIN CTHD C ON M.MSMH = C.MSMH) JOIN HOADON H ON H.MSHD = C.MSHD WHERE YEAR(NGAYLAPHD) = @Nam GROUP BY M.MSMH END ELSE BEGIN SELECT M.MSMH,DOANHTHU= SUM(SOLUONG*DONGIABAN) FROM (MATHANG M JOIN CTHD C ON M.MSMH = C.MSMH) JOIN HOADON H ON H.MSHD = C.MSHD WHERE MONTH(NGAYLAPHD) = @Thang and YEAR(NGAYLAPHD) = @Nam GROUP BY M.MSMH END -GO EXEC DoanhThu 6,2003 GO EXEC DoanhThu @Nam=2003 GIẢIĐỀ USE master GO IF EXISTS (SELECT name FROM sys.databases WHERE name = 'De4') BEGIN DROP DATABASE De4 END GO CREATE DATABASE De4 GO USE De4 GO -CREATE TABLE SACH ( MASACH INT PRIMARY KEY, TENSACH VARCHAR(100), SOLUONG INT, SODAMUON INT ) -CREATE TABLE DOCGIA ( MADG INT PRIMARY KEY, TENDG VARCHAR(100) ) -CREATE TABLE PHIEUMUON ( MADG INT, NGAYMUON DATETIME, MASACH INT, NGAYTRA DATETIME, PRIMARY KEY(MADG,NGAYMUON), FOREIGN KEY(MADG) REFERENCES DOCGIA(MADG) ) GO ALTER TABLE SACH ADD CHECK(SOLUONG >= SODAMUON) GO ALTER TABLE PHIEUMUON ADD DEFAULT GETDATE() FOR NGAYMUON -GO INSERT INTO SACH VALUES (1,'Cuon theo chieu gio',10,2) INSERT INTO SACH VALUES (2,'Ong gia va bien ca',2,2) INSERT INTO SACH VALUES (3,'Tat den',20,3) INSERT INTO SACH VALUES (4,'Toan roi rac',1,1) INSERT INTO SACH VALUES (5,'Lap trinh C#',4,4) INSERT INTO SACH VALUES (6,'Lich su Dang',3,0) INSERT INTO SACH VALUES (7,'Kinh van hoa',30,5) INSERT INTO SACH VALUES (8,'Chien tranh va hoa binh',10,0) -GO INSERT INTO DOCGIA VALUES (1,'Nguyen Hoang Long') INSERT INTO DOCGIA VALUES (2,'Nguyen Minh Tam') INSERT INTO DOCGIA VALUES (3,'Le Quoc Thinh') INSERT INTO DOCGIA VALUES (4,'To Hoai Tan') INSERT INTO DOCGIA VALUES (5,'Nguyen Trung Truc') INSERT INTO DOCGIA VALUES (6,'La Phi Hung') -GO INSERT INTO PHIEUMUON VALUES (1,'5/20/2000',2,'5/27/2000') INSERT INTO PHIEUMUON VALUES (1,'5/30/2000',5,'6/20/2000') INSERT INTO PHIEUMUON VALUES (1,'7/7/2000',7,'7/25/2000') INSERT INTO PHIEUMUON VALUES (1,'7/1/2000',8,NULL) INSERT INTO PHIEUMUON VALUES (2,'7/2/2000',7,NULL) INSERT INTO PHIEUMUON VALUES (2,'7/3/2000',5,NULL) INSERT INTO PHIEUMUON VALUES (3,'7/4/2000',5,'7/11/2000') INSERT INTO PHIEUMUON VALUES (3,'7/5/2000',3,'7/12/2000') INSERT INTO PHIEUMUON VALUES (3,'7/6/2000',7,'7/13/2000') INSERT INTO PHIEUMUON VALUES (4,'7/7/2000',1,'7/14/2000') INSERT INTO PHIEUMUON VALUES (4,'7/8/2000',7,NULL) INSERT INTO PHIEUMUON VALUES (4,'7/9/2000',2,'7/16/2000') INSERT INTO PHIEUMUON VALUES (4,'7/10/2000',3,'7/17/2000') INSERT INTO PHIEUMUON VALUES (5,'7/11/2000',5,NULL) INSERT INTO PHIEUMUON VALUES (5,'7/12/2000',4,NULL) INSERT INTO PHIEUMUON VALUES (5,'7/13/2000',7,'7/20/2000') INSERT INTO PHIEUMUON VALUES (6,'7/14/2000',3,'7/21/2000') -GO CREATE VIEW vwHetSach AS SELECT MASACH,TENSACH FROM SACH WHERE SOLUONG = SODAMUON -GO CREATE VIEW vwChuaTraSach AS SELECT D.MADG,D.TENDG,NGAYMUON,TENSACH FROM (DOCGIA D JOIN PHIEUMUON P ON D.MADG=P.MADG) JOIN SACH S ON S.MASACH=P.MASACH WHERE NGAYTRA IS NULL -GO CREATE PROC SoSachChoMuon(@MASACH INT) AS BEGIN IF NOT EXISTS (SELECT MASACH FROM SACH WHERE MASACH = @MASACH) PRINT'Ma sach khong ton tai' ELSE SELECT MASACH,SoSachConLai = SOLUONG - SODAMUON FROM SACH WHERE MASACH = @MASACH END -GO EXEC SoSachChoMuon GIẢIĐỀ USE master GO IF EXISTS (SELECT name FROM sys.databases WHERE name = 'De5') BEGIN DROP DATABASE De5 END GO CREATE DATABASE De5 GO USE De5 GO -CREATE TABLE NgachLuong ( MSNgach INT PRIMARY KEY, MOTA VARCHAR(100) ) -CREATE TABLE DMNganhBac ( MSNgach INT, BAC INT, HSLuong FLOAT, PRIMARY KEY(MSNgach,BAC), FOREIGN KEY(MSNgach) REFERENCES NgachLuong(MSNgach) ) -CREATE TABLE NhanVien ( MSNV INT PRIMARY KEY, HO VARCHAR(50), TEN VARCHAR(50), MSNgach INT, BAC INT, NGAYNLCC DATETIME ) -GO ALTER TABLE DMNganhBac ADD UNIQUE(MSNgach,HSLuong) GO ALTER TABLE NhanVien ADD DEFAULT FOR BAC -GO CREATE VIEW vwHSLuong AS SELECT MSNV,N.MSNgach,N.BAC,HSLuong FROM DMNganhBac D JOIN NhanVien N ON D.MSNgach = n.MSNgach GROUP BY MSNV,N.MSNgach,N.BAC,HSLuong -GO CREATE VIEW vwNangLuong AS SELECT * FROM NhanVien WHERE DATEDIFF(M,NGAYNLCC,GETDATE())>=24 -GO CREATE PROC DSNangLuong(@Nam int = NULL) AS IF @Nam IS NULL SELECT * FROM NhanVien WHERE YEAR(NGAYNLCC)=YEAR(GETDATE()) ELSE SELECT * FROM NhanVien WHERE YEAR(NGAYNLCC) = @Nam -GO EXEC DSNangLuong 2000 GIẢIĐỀ USE MASTER GO IF EXISTS (SELECT name FROM sys.databases WHERE name = 'De6') BEGIN DROP DATABASE De6 END GO CREATE DATABASE De6 GO USE De6 GO -CREATE TABLE TINH ( MSTinh varchar(5) primary key, TenTinh varchar(100) NOT NULL, DienTich decimal NOT NULL, DanSo decimal NOT NULL, TinhBG bit ) -CREATE TABLE BIENGIOI ( MSTinh varchar(5), TenNuoc varchar(100), primary key (MSTinh,TenNuoc), foreign key(MSTinh) references TINH(MSTinh) ) -CREATE TABLE LANGGIENG ( MSTinh varchar(5), MSTinhLG varchar(5), primary key (MSTinh,MSTinhLG), foreign key(MSTinh) references TINH(MSTinh) ) GO ALTER TABLE LANGGIENG ADD check(MSTinhMSTinhLG) GO ALTER TABLE TINH ADD unique(MSTinh) -GO INSERT INTO TINH VALUES('AG','AN GIANG',3493,1812200,'True') INSERT INTO TINH VALUES('BD','BINH DINH',4503,1420600,'False') INSERT INTO TINH VALUES('BG','BINH DUONG',3859,590800,'False') INSERT INTO TINH VALUES('BI','BINH THUAN',5345,786300,'False') INSERT INTO TINH VALUES('BL','BAC LIEU',4697,571500,'False') INSERT INTO TINH VALUES('BP','BINH PHUOC',6687,236500,'True') INSERT INTO TINH VALUES('BT','BEN TRE',2225,1184100,'False') INSERT INTO TINH VALUES('CB','CAO BANG',8445,564400,'True') INSERT INTO TINH VALUES('CM','CA MAU',3211,866100,'False') INSERT INTO TINH VALUES('CT','CAN THO',4126,1559300,'False') INSERT INTO TINH VALUES('DL','DAC LAC',11800,661000,'True') INSERT INTO TINH VALUES('DN','DONG NAI',7578,1741000,'False') INSERT INTO TINH VALUES('DT','DONG THAP',3391,1335700,'True') INSERT INTO TINH VALUES('GL','GIA LAI',25536,764200,'True') INSERT INTO TINH VALUES('HB','HA BAC',4609,1929300,'False') INSERT INTO TINH VALUES('HT','HA TINH',9845,1300500,'True') INSERT INTO TINH VALUES('KG','KIEN GIANG',6358,1150500,'True') INSERT INTO TINH VALUES('KH','KHANH HOA',3773,836700,'False') INSERT INTO TINH VALUES('LA','LONG AN',4355,1105300,'True') INSERT INTO TINH VALUES('LC','LAI CHAU',17068,387400,'True') INSERT INTO TINH VALUES('LD','LAM DONG',9933,511300,'False') INSERT INTO TINH VALUES('NA','NGHE AN',12502,2457600,'True') INSERT INTO TINH VALUES('NT','NINH THUAN',6374,495600,'False') INSERT INTO TINH VALUES('PY','PHU YEN',6804,549700,'False') INSERT INTO TINH VALUES('QB','QUANG BINH',7340,501800,'True') INSERT INTO TINH VALUES('QN','QUANG NGAI',7900,967500,'False') INSERT INTO TINH VALUES('QT','QUANG TRI',8555,603350,'True') INSERT INTO TINH VALUES('SG','TP.HO CHI MINH',2029,3667600,'False') INSERT INTO TINH VALUES('ST','SOC TRANG',2523,960400,'False') INSERT INTO TINH VALUES('TG','TIEN GIANG',2337,1399100,'False') INSERT INTO TINH VALUES('TN','TAY NINH',4030,772500,'True') INSERT INTO TINH VALUES('TT','THUA THIEN HUE',3123,1000500,'True') INSERT INTO TINH VALUES('TV','TRA VINH',1732,836200,'False') INSERT INTO TINH VALUES('VL','VINH LONG',2154,923600,'False') -INSERT INTO BIENGIOI VALUES('AG','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('BP','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('CB','TRUNGQUOC') INSERT INTO BIENGIOI VALUES('DL','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('DT','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('GL','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('GL','LAO') INSERT INTO BIENGIOI VALUES('HT','LAO') INSERT INTO BIENGIOI VALUES('KG','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('LA','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('LC','LAO') INSERT INTO BIENGIOI VALUES('LC','TRUNGQUOC') INSERT INTO BIENGIOI VALUES('NA','LAO') INSERT INTO BIENGIOI VALUES('QB','LAO') INSERT INTO BIENGIOI VALUES('QT','LAO') INSERT INTO BIENGIOI VALUES('TN','CAMPUCHIA') INSERT INTO BIENGIOI VALUES('TT','LAO') -INSERT INTO LANGGIENG VALUES('AG','DT') INSERT INTO LANGGIENG VALUES('AG','KG') INSERT INTO LANGGIENG VALUES('AG','CT') INSERT INTO LANGGIENG VALUES('BD','QN') INSERT INTO LANGGIENG VALUES('BD','PY') INSERT INTO LANGGIENG VALUES('BD','GL') INSERT INTO LANGGIENG VALUES('BG','SG') INSERT INTO LANGGIENG VALUES('BG','BP') INSERT INTO LANGGIENG VALUES('BG','DN') INSERT INTO LANGGIENG VALUES('BI','DN') INSERT INTO LANGGIENG VALUES('BI','NT') INSERT INTO LANGGIENG VALUES('BL','CM') INSERT INTO LANGGIENG VALUES('BL','ST') INSERT INTO LANGGIENG VALUES('BP','BG') INSERT INTO LANGGIENG VALUES('BP','DL') INSERT INTO LANGGIENG VALUES('BT','TG') INSERT INTO LANGGIENG VALUES('BT','TV') INSERT INTO LANGGIENG VALUES('CM','BL') INSERT INTO LANGGIENG VALUES('CT','AG') INSERT INTO LANGGIENG VALUES('CT','VL') INSERT INTO LANGGIENG VALUES('CT','TV') INSERT INTO LANGGIENG VALUES('CT','ST') INSERT INTO LANGGIENG VALUES('DL','BP') INSERT INTO LANGGIENG VALUES('DL','GL') INSERT INTO LANGGIENG VALUES('DL','KH') INSERT INTO LANGGIENG VALUES('DN','SG') INSERT INTO LANGGIENG VALUES('DN','BG') INSERT INTO LANGGIENG VALUES('DN','BI') INSERT INTO LANGGIENG VALUES('DN','LD') INSERT INTO LANGGIENG VALUES('DT','AG') INSERT INTO LANGGIENG VALUES('DT','TG') INSERT INTO LANGGIENG VALUES('DT','VL') INSERT INTO LANGGIENG VALUES('DT','LA') INSERT INTO LANGGIENG VALUES('GL','DL') INSERT INTO LANGGIENG VALUES('HT','NA') INSERT INTO LANGGIENG VALUES('HT','QB') INSERT INTO LANGGIENG VALUES('KG','AG') INSERT INTO LANGGIENG VALUES('KH','NT') INSERT INTO LANGGIENG VALUES('KH','PY') INSERT INTO LANGGIENG VALUES('KH','DL') INSERT INTO LANGGIENG VALUES('LA','SG') INSERT INTO LANGGIENG VALUES('LA','TG') INSERT INTO LANGGIENG VALUES('LA','DT') INSERT INTO LANGGIENG VALUES('LD','DN') INSERT INTO LANGGIENG VALUES('LD','NT') INSERT INTO LANGGIENG VALUES('NA','HT') INSERT INTO LANGGIENG VALUES('NT','BI') INSERT INTO LANGGIENG VALUES('NT','LD') INSERT INTO LANGGIENG VALUES('NT','KH') INSERT INTO LANGGIENG VALUES('PY','KH') INSERT INTO LANGGIENG VALUES('PY','BD') INSERT INTO LANGGIENG VALUES('QB','HT') INSERT INTO LANGGIENG VALUES('QB','QT') INSERT INTO LANGGIENG VALUES('QN','BD') INSERT INTO LANGGIENG VALUES('QT','QB') INSERT INTO LANGGIENG VALUES('QT','TT') INSERT INTO LANGGIENG VALUES('SG','LA') INSERT INTO LANGGIENG VALUES('SG','BG') INSERT INTO LANGGIENG VALUES('SG','TN') INSERT INTO LANGGIENG VALUES('SG','DN') INSERT INTO LANGGIENG VALUES('ST','CT') INSERT INTO LANGGIENG VALUES('ST','BL') INSERT INTO LANGGIENG VALUES('TG','LA') INSERT INTO LANGGIENG VALUES('TG','DT') INSERT INTO LANGGIENG VALUES('TG','BT') INSERT INTO LANGGIENG VALUES('TN','SG') INSERT INTO LANGGIENG VALUES('TT','QT') INSERT INTO LANGGIENG VALUES('TV','VL') INSERT INTO LANGGIENG VALUES('VL','CT') INSERT INTO LANGGIENG VALUES('VL','DT') INSERT INTO LANGGIENG VALUES('VL','TV') -GO CREATE VIEW vwTinhLon AS SELECT T1.TENTINH FROM TINH T1 WHERE T1.DIENTICH >= all( SELECT T2.DIENTICH FROM TINH T2, LANGGIENG L2 WHERE T2.MSTINH = L2.MSTINH) -GO CREATE VIEW vwSoNuocGiapRanh AS SELECT T.MSTinh,TenTinh,SoNuocGiapRanh=Count(TenNuoc) FROM TINH T join BIENGIOI B on T.MSTinh = B.MSTinh GROUP BY T.MSTinh,TenTinh -GO CREATE PROC ThongTinTLG(@MSTinh varchar(5) = NULL) AS BEGIN IF @MSTinh IS NULL PRINT'Ma tinh khong ton tai' ELSE BEGIN WITH TinhLG AS (SELECT T.MSTinh,T.TenTinh FROM TINH T WHERE T.MSTinh IN (SELECT MSTinhLG FROM LANGGIENG L WHERE L.MSTinh = @MSTinh)) SELECT STT=RANK() OVER(ORDER BY MSTinh),* FROM TinhLG END END -GO EXEC ThongTinTLG 'DN' Giảiđề go create database DeThi go use DeThi go -Câu : Tạo TABLE create table ThiSinh ( MSTS int primary key, Ho varchar(30), Ten varchar(50), NgaySinh datetime, SBD int, PhongThi varchar(10) ) -create table MonThi ( MSMon int primary key, TenMon varchar(30) ) -create table DiemMonThi ( MSTS int, MSMon int, DiemThi int, primary key(MSTS,MSMon), foreign key(MSTS) references ThiSinh(MSTS), foreign key(MSMon) references MonThi(MSMon), ) Câu : Bổ sung ràng buộc go Alter table ThiSinh ADD unique(SBD) go Alter table DiemMonThi ADD check(DiemThi between and 10) -insert into ThiSinh values (1,'Nguyen Hoang','Long','11/10/1989',38,102) insert into ThiSinh values (2,'Le Ngoc','Nam','11/10/1989',42,102) insert into ThiSinh values (3,'Le Thanh','Phuc','11/10/1989',50,102) insert into ThiSinh values (4,'Diep Hoang','Minh','11/10/1989',41,102) insert into ThiSinh values (5,'Giap Tuan','An','11/10/1989',1,101) insert into ThiSinh values (6,'Tran The','Dai','11/10/1989',9,101) insert into ThiSinh values (7,'Pham Thi Viet','Ha','11/10/1989',21,101) insert into ThiSinh values (8,'Nguyen Quoc Trung','Hieu','11/10/1989',24,101) insert into ThiSinh values (9,'La Phi','Hung','11/10/1989',28,101) insert into ThiSinh values (10,'Dang Ngoc','Son','11/10/1989',53,103) insert into ThiSinh values (11,'Nguyen Van','Son','11/10/1989',54,103) insert into ThiSinh values (12,'Nguyen Minh','Tam','11/10/1989',56,103) insert into ThiSinh values (13,'Nguyen Thanh','Tam','11/10/1989',59,103) -insert into MonThi values (1,'Toan A3') insert into MonThi values (2,'TTHCM') -insert into DiemMonThi values(1,1,2) insert into DiemMonThi values(1,2,3) insert into DiemMonThi values(2,1,4) insert into DiemMonThi values(2,2,5) insert into DiemMonThi values(3,1,6) insert into DiemMonThi values(3,2,7) insert into DiemMonThi values(4,1,8) insert into DiemMonThi values(4,2,9) insert into DiemMonThi values(5,2,5) insert into DiemMonThi values(6,1,2) insert into DiemMonThi values(6,2,3) insert into DiemMonThi values(8,1,6) insert into DiemMonThi values(8,2,7) insert into DiemMonThi values(9,2,9) insert into DiemMonThi values(11,1,2) insert into DiemMonThi values(12,1,4) insert into DiemMonThi values(12,2,5) -Câu 3.a) Tạo view vwBoThi go create view vwBoThi as select T.* from ThiSinh T where T.MSTS NOT IN (select D.MSTS from DiemMonThi D) -Câu 3.b) Tạo view vwKetQuaThi go create view vwDiemThiCuoi as with TongDiem as (select SBD,Ho,Ten,Ngaysinh,PhongThi,TongDiemThi = SUM(DiemThi) from ThiSinh T join DiemMonThi D on T.MSTS = D.MSTS group by SBD,Ho,Ten,Ngaysinh,PhongThi) select STT=Rank() over(partition by PhongThi order by SBD),* from TongDiem -Câu : Tạo trigger GO create trigger utrg_SuaPhongThi on ThiSinh for UPDATE AS if (select count(T.MSTS) from ThiSinh T where T.PhongThi=(select I.PhongThi from INSERTED I)) >=5 begin print'So thi sinh khong duoc >5' rollback tran end -Kiểm tra trigger go select * from ThiSinh where MSTS = go update ThiSinh set PhongThi = 101 where MSTS = go select * from ThiSinh where MSTS = -Câu : Tạo thủ tục go create proc Auto_SBD as Begin select MSTS,Ho,Ten,Ngaysinh,PhongThi,SBD=ROW_NUMBER() over(order by Ten) from ThiSinh End -go exec Auto_SBD .. .Đề Thi SQL Có Lời Giải Môn thi : Lập trình SQL- SERVER Thời gian : 90 phút (Sinh viên sử dụng tài liệu) Đề Câu 1: (3 điểm) Cơ sở liệu quản lý trận đấu bóng đá sân vận động có chứa table... Tân từ: Mỗi môn thi có mã số (MSMon) số nguyên phân biệt, có tên môn thi (TenMon) DiemMonThi(MSTS, MSMon, DiemThi) Tân từ: Ở môn thi (MSMon) thí sinh (MSTS) có điểm thi (DiemThi) Câu 2: (1... VALUES (3, '7/ 6/2000' ,7, '7/ 13/2000') INSERT INTO PHIEUMUON VALUES (4, '7/ 7/2000',1, '7/ 14/2000') INSERT INTO PHIEUMUON VALUES (4, '7/ 8/2000' ,7, NULL) INSERT INTO PHIEUMUON VALUES (4, '7/ 9/2000',2, '7/ 16/2000')