BỘ 7 ĐỀ THI CÓ LỜI GIẢI LẬP TRÌNH SQL SERVER - Tài Liệu Text

Tải bản đầy đủ (.doc) (28 trang)
  1. Trang chủ
  2. >>
  3. Công nghệ thông tin
  4. >>
  5. Database
BỘ 7 ĐỀ THI CÓ LỜI GIẢI LẬP TRÌNH SQL SERVER

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 (125.4 KB, 28 trang )

Môn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 1Câ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ớicá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ônhọ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à 1b) Điểm thi (Diem) trong table DiemThi được chấm theo thang điểm 10Câ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 sinhviê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 Mba 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 khithê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ếtmã 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Đề Thi SQL Có Lời GiảiMôn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 2Câu 1: (3 điểm) 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 3table. 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).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ếnkết thúc tại một giờ (GioKT).DoiThiDau(MSTD, MSDoi)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ảithuộc cùng một phái.Câu 2: (1 điểm) 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.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).Câu 3: (2 điểm) Tạo View:a) Tạo view vwDoiChuaThiDau dùng liêt kê danh sách các đội chưa có mã số độitrong 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 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.Câu 4: (2 điểm) 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.Câu 5: (2 điểm) Tạo thủ tục hoặc hàm hiển thị thông tin 2 đội tham gia trong một trận đấukhi biết mã số trận đấu. Nếu mã trân đấu không có trong table DoiThiDau thì hiện thị thôngbáo lỗi. Trong đó, mã số trận đấu (MSTD) là giá trị inputMôn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 3Câu 1: (3 điểm) 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áctable 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ácFields 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ặthàng (TenMH), đơn giá (DonGia) bán mới nhất của mặt hàng đó và số lượnghàng tồn kho (SoTon).2- HoaDon(MSHD, NgayLap)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)3- CTHD(MSHD, MSMH, SoLuong, DonGiaHD)Tân từ: Mỗi hóa đơn (MSHD) ghi một hoặc nhiều mặt hàng (MSMH) cùng với sốlượng (SoLuong) và đơn giá bán tại thời điểm ghi hóa đơn (DonGiaHD).Câu 2: (1 điểm) 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.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.Câu 3: (2 điểm) 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ôngtin: 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 ghitrên mỗi hóa đơn.b) Tạo view “vwHangKhongBanDuoc” dùng liêt kê danh sách các mặt hàng khôngbán được trong tháng hiện hành.Câu 4: (2 điểm) Xây dựng Insert trigger cho CTHD thực hiện yêu cầu: khi thêm một chitiế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.Câu 5: (2 điểm) 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ặthàng trong :a) Một năm nếu tháng là Null và năm khác Nullb) Một tháng nếu tháng và năm khác NullMôn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 4Câu 1: (3 điểm) 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áctable 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ácFields 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).2- DocGia(MaDG, TenDG)Tân từ: Mỗi đọc giả có một mã số đọc giả (MaDG) là một 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 mỗi đọc giả chỉ được mượn một quyển sách. Khi đọc giả mượn sáchcầ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.Câu 2: (1 điểm) 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)b) Ngày mượn sách (NgayMuon) trong table PhieuMuon có giá trị mặc định là ngàyhiện hànhCâu 3: (2 điểm) 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ằngvới số lượng sách đã cho mượn (SoDaMuon) gồm các thông tin: Mã sách, tênsách.b) Tạo view “vwChuaTraSach” dùng hiển thị danh sách các đọc giả chưa trả sách (cóngày trả là rổng) gồm các 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 trên table PhieuMuon thực hiện yêu cầu sau: Khi sửangà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ượngsá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 ứngtrên table Sach.Câu 5: (2 điểm) 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áolỗi nếu mã sách không tồn tại trong table Sach.Môn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 5Câu 1: (3 điểm) Cơ sở dữ liệu quản lý lương hành chánh sự nghiệp có chứa 3 table. Viếtlệ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- NgachLuong(MSNgach, MoTa)Tân từ: Hệ thống lương hành chánh gồm nhiều ngạch, mỗi ngạch lương có một mã số(MSNgach) là một số nguyên phân biệt, mục mô tả (MoTa) dùng chỉ định nhânviên thực hiện công việc nào, bằng cấp nào thì thuộc ngạch lương này.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 là mộtsố nguyên có giá trị từ 1 trở đi phân biệt trong cùng một ngạch lương. Mỗi bậctrong một ngạch lương có một hệ số lương (HSLuong).3- NhanVien(MSNV, Ho, Ten, MSNgach, Bac, NgayNLCC)Tân từ: Mỗi nhân viên có một mã số (MSNV) là một 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) và ngày nâng lươngcuối cùng (NgayNLCC).Câu 2: (1 điểm) Khai báo bổ sung các ràng buộc sau:a) Trong table DMNgachBac, Hệ số lương (HSLuong) phải phân biệt trong cùng mộtngạch lương (MSNgach).b) Bậc lương (Bac) trong table NhanVien có giá trị mặc định (Default) bằng 1.Câu 3: (2 điểm) Tạo View:a) Tạo view vwHSLuong dùng liêt kê hệ số lương của mỗi nhân viên gồm các thôngtin: 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ânglương cuối cùng (NgayNLCC) đến ngày hiện hành có giá trị không nhỏ hơn 24thá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ậclương (Bac) của một nhân viên thì bậc lương mới không lớn hơn bậc lương cao nhất trongngạch lương của nhân viên (ví dụ, ngạch lương mã số 15113 có số thứ tự bậc lương từ 1 đến10 thì bậc lương mới của nhân viên có mã ngạch 15113 không đượt lớn hơn 10).Câu 5: (2 điểm) Viết thủ tục hay hàm trả về danh sách nhân viên đã được nâng lương trongmột năm (nghĩa là có ngày nâng lương cuối cùng thuộc năm tìm kiếm). Trong đó, năm là mộtgiá trị Input kiểu số nguyên. Nếu năm là Null thì trả về danh sách nhân viên đã được nânglương trong năm hiện hành.Môn thi : Lập trình SQL-SERVERThời gian : 90 phút(Sinh viên được sử dụng tài liệu)Đề 6Câu 1: (3 điểm) Cơ sở dữ liệu địa lý Việt Nam có chứa 3 table. Viết lệnh tạo các table vớicá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- Tinh(MSTinh, TenTinh, DienTich, DanSo, TinhBG)Tân từ: Mỗi tỉnh có một mã tỉnh (MSTinh) là một số nguyên phân biệt, có tên tỉnh(TenTinh), diện tích (DienTich), dân số (DanSo) và là tỉnh biên giới haykhông là tỉnh biên giới (TinhBG).2- BienGioi(MSTinh, TenNuoc)Tân từ : Lưu trữ danh sách các tỉnh (MSTinh) biên giới giáp ranh với một nước khác(TenNuoc)3- LangGieng(MsTinh, MSTinhLG)Tân từ : Mỗi tỉnh (MSTinh) giáp ranh với 1 hay nhiều tỉnh láng giềng (MSTinhLG)Câu 2: (1 điểm) Khai báo bổ sung các 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 trong table Tinh có giá trị phân biệt giữa các tỉnh.Câu 3: (2 điểm) Tạo View:a) Tạo view vwTinhLon dùng liêt kê danh sách các tỉnh có diện tích lớn hơn diệntích các tỉnh láng giềng của tỉnh đó.b) Tạo view vwSoNuocGiapRanh dùng thống kê số nước giáp ranh của các tỉnh biêngiới với các 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 hiện yêu cầu sau: Khi thêmmẫu tin trong table BienGioi thì cập nhật giá trị 1 cho thuộc tính TinhBG trong table Tinhcủa tỉnh có mã số tỉnh (MSTinh) được thêm trong table BienGioi.Câu 5: (2 điểm) Viết thủ tục hoặc hàm dùng liệt kê thông tin các tỉnh láng giềng của mộttỉnh khi biết mã tỉnh. Trong đó, mã tỉnh là giá trị input. Thông tin các tỉnh láng giềng cầnhiể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 tại thì hiệnthông báo lỗi.ĐỀ 7--Câu 1: (3 điểm) 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ácrà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à số nguyên phân biệt, có họ (HO) và tên(Ten) sinh viên, ngày sinh (Ngaysinh), số báo danh (SBD), thuộc một phòng thi (PhongThi).-- MonThi(MSMon, TenMon)--Tân từ: Mỗi môn thi có một mã số (MSMon) là một số nguyên phân biệt, có tên môn thi(TenMon).--DiemMonThi(MSTS, MSMon, DiemThi)--Tân từ: Ở mỗi môn thi (MSMon) thí sinh (MSTS) có một điểm thi (DiemThi).--Câu 2: (1 điểm) 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.--b) Điểm thi (DiemThi) trong table DiemMonThi có giá trị từ 0 đế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ó trong tableDiemMonThi).--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.--Câu 4: (2 điểm) Tạo update trigger cho table ThiSinh để kiểm tra ràng buộc : Khi chuyểnmột thí sinh sang phòng thi khác (sửa PhongThi của thí sinh) thí số thí sinh của phòng thichuyển đến không được quá 25 thí sinh.--Câu 5: (2 điểm) Viết thủ tục hoặc hàm sử dụng để điền số báo danh tự động (SBD) từ 1 trởđi theo thứ tự tên và họ.GIẢI ĐỀ 1use mastergoif exists(select * from sys.databases where name='De1')drop database De1gocreate database De1gouse De1go---------------------Câu 1 : Tạo TABLEcreate 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ộcgoAlter table DiemThi ADDdefault 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 vwLanThiCuoigocreate view vwLanThiCuoiasselect MSSV, MSMon, LanThi=max(LanThi)from DiemThigroup by MSSV, MSMon---------------------Câu 3.a) Tạo view vwDiemThiCuoigocreate view vwDiemThiCuoiaswith BangTam as(select MSSV, MSMon, LanThiMax=max(LanThi)from DiemThigroup by MSSV, MSMon)select D.*from BangTam B join DiemThi D on (B.MSSV=D.MSSV and B.MSMon=D.MSMon andB.LanThiMAX =D.LanThi)---------------------Câu 4 : Tạo triggerGOcreate trigger itrg_AutoLanThi on DiemThifor INSERTASdeclare @MSSV intdeclare @MSMon intselect @MSSV = MSSV,@MSMon = MSMon from insertedif NOT EXISTS (select * from DiemThi where MSSV=@MSSV andMSMon=@MSMon)beginprint'MSSV them vao khong ton tai'rollback tranreturnendupdate DiemThi set DiemThi.LanThi = DiemThi.LanThi + 1from INSERTED I where I.MSSV=@MSSV and I.MSMon=@MSMon---------------------Câu 5 : Tạo thủ tụcgocreate proc ThongTinSV(@MSSV int=1)asBeginselect MSMon,LanThi,Diemfrom DiemThiwhere MSSV = @MSSVEnd-------------------goexec ThongTinSV 3goinsert into DiemThi(MSSV,MSMon,Diem) values(4,1,7)GIẢI ĐỀ 2use mastergoif exists(select * from sys.databases where name='De2')drop database De2gocreate database De2gouse De2go-------------------create table Doi(MSDoi int primary key,TenDoi varchar(40),Phai bit)-------------------create table TranDau(MSTD int primary key,NgayTD datetime,GioBD smalldatetime,GioKT smalldatetime ,)-------------------create table DoiThiDau(MSTD int references TRANDAU(MSTD),MSDOI int,primary key(MSTD,MSDoi),foreign key(MSDOI) references Doi(MSDOI),)goAlter table TranDau ADDcheck(GioBD < GioKT),unique(GioBD,NgayTD)-------------------goinsert into Doi values (1,'Hoang Anh Gia Lai','True')insert into Doi values (2,'Hoang Anh Gia Lai','False')insert into Doi values (3,'Dong Tam Long An','True')insert into Doi values (4,'SHB Da Nang','True')insert into Doi values (5,'SHB Da Nang','False')insert into Doi values (6,'Dong Nai','False')insert into TranDau values (1,'10/10/1998','10/10/1998 2:00:00 PM','10/10/1998 4:00:00PM')insert into TranDau values (2,'10/10/1998','10/10/1998 5:00:00 PM','10/10/1998 7:00:00PM')insert into TranDau values (3,'10/11/1998','10/10/1998 7:00:00 PM','10/10/1998 9:00:00PM')insert into TranDau values (4,'10/12/1998','10/10/1998 6:15:00 AM','10/10/1998 8:15:00AM')insert into TranDau values (5,'10/12/1998','10/10/1998 3:30:00 PM','10/10/1998 5:30:00PM')insert into TranDau values (6,'10/12/1998','10/10/1998 7:00:00 PM','10/10/1998 9:00:00PM')insert into DoiThiDau values (1,1)insert into DoiThiDau values (1,3)insert into DoiThiDau values (2,1)insert into DoiThiDau values (2,4)insert into DoiThiDau values (3,2)insert into DoiThiDau values (3,5)-----------------gocreate view vwDoiChuaThiDauasselect * from Doi Awhere A.MSDoi NOT IN (select B.MSDoi from DoiThiDau B)-------------------gocreate view vwSoTranDauasselect NgayTD, SoTD=count(MSTD)from TranDaugroup by NgayTD-------------------gocreate proc ThongTinTD(@MSTD int)asif NOT exists (select * from DoiThiDau where MSTD = @MSTD)Beginprint'Tran dau khong ton tai'EndelseBeginselect MSTD,DoiThiDau.MSDoi,TenDoi,Phaifrom DoiThiDau join Doi on DoiThiDau.MSDoi = Doi.MSDoiwhere MSTD = @MSTDEnd-------------------goexec ThongTinTD 2GIẢI ĐỀ 3USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = 'De3')BEGINDROP DATABASE De3ENDGOCREATE DATABASE De3GOUSE De3GO-------------------CREATE TABLE MATHANG(MSMH int PRIMARY KEY ,TENMH varchar(100),DONGIA money DEFAULT 0 CHECK (DONGIA >=0),SOTON int)-------------------CREATE TABLE HOADON(MSHD int PRIMARY KEY,NGAYLAPHD datetime DEFAULT GETDATE() NOT NULL,)-------------------CREATE TABLE CTHD(MSHD int references HOADON,MSMH int references MATHANG,SOLUONG Smallint DEFAULT 0 CHECK ( SOLUONG > 0),DONGIABAN MONEY DEFAULT 0 CHECK ( DONGIABAN > 0),PRIMARY KEY (MSHD,MSMH),FOREIGN KEY(MSHD) references HOADON(MSHD),FOREIGN KEY(MSMH) references MATHANG(MSMH))GOALTER TABLE MATHANG ADDdefault 0 for SOTON,unique(TENMH)-------------------INSERT INTO MATHANG VALUES (1,'Ruou',230.5,201)INSERT INTO MATHANG VALUES (2,'Gia vi',40,82)INSERT INTO MATHANG VALUES (3,'Banh kem',10,0)INSERT INTO MATHANG VALUES (4,'Bo',38,30)INSERT INTO MATHANG VALUES (5,'Banh mi',8,435)INSERT INTO MATHANG VALUES (6,'Nem',23.8,97)INSERT INTO MATHANG VALUES (7,'Tao',5,33)INSERT INTO MATHANG VALUES (8,'Ca hop',62.5,100)INSERT INTO MATHANG VALUES (9,'Cam',11,50)-------------------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)-------------------GOCREATE VIEW vwTienHDASSELECT H.MSHD,NGAYLAPHD,TIENHD= SUM(SOLUONG*DONGIABAN)FROM HOADON H JOIN CTHD C ON H.MSHD = C.MSHDGROUP BY H.MSHD,NGAYLAPHD-------------------GOCREATE VIEW vwHangKhongBanDuocASSELECT M.* FROM MATHANG MWHERE MSMH NOT IN( SELECT C.MSMH FROM CTHD CWHERE C.MSHD IN(SELECT H.MSHD FROMHOADON H))-------------------GOCREATE PROC DoanhThu(@Thang int = NULL,@Nam int = NULL)ASIF @Nam is NULLBEGINprint'Gia tri INPUT = NULL'ENDELSEIF @Thang is NULLBEGINSELECT M.MSMH,DOANHTHU=SUM(SOLUONG*DONGIABAN)FROM (MATHANG M JOIN CTHD C ON M.MSMH = C.MSMH)JOIN HOADON H ON H.MSHD = C.MSHDWHERE YEAR(NGAYLAPHD) = @NamGROUP BY M.MSMHENDELSEBEGINSELECT M.MSMH,DOANHTHU=SUM(SOLUONG*DONGIABAN)FROM (MATHANG M JOIN CTHD C ON M.MSMH = C.MSMH)JOIN HOADON H ON H.MSHD = C.MSHDWHERE MONTH(NGAYLAPHD) = @Thang andYEAR(NGAYLAPHD) = @NamGROUP BY M.MSMHEND-------------------GOEXEC DoanhThu 6,2003GOEXEC DoanhThu @Nam=2003GIẢI ĐỀ 4USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = 'De4')BEGINDROP DATABASE De4ENDGOCREATE DATABASE De4GOUSE De4GO-------------------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))GOALTER TABLE SACH ADDCHECK(SOLUONG >= SODAMUON)GOALTER TABLE PHIEUMUON ADDDEFAULT GETDATE() FOR NGAYMUON-------------------GOINSERT 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)-------------------GOINSERT 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')-------------------GOINSERT 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')-------------------GOCREATE VIEW vwHetSachASSELECT MASACH,TENSACH FROM SACHWHERE SOLUONG = SODAMUON-------------------GOCREATE VIEW vwChuaTraSachASSELECT D.MADG,D.TENDG,NGAYMUON,TENSACHFROM (DOCGIA D JOIN PHIEUMUON P ON D.MADG=P.MADG) JOIN SACHS ON S.MASACH=P.MASACHWHERE NGAYTRA IS NULL-------------------GOCREATE PROC SoSachChoMuon(@MASACH INT)ASBEGINIF NOT EXISTS (SELECT MASACH FROM SACH WHERE MASACH =@MASACH)PRINT'Ma sach khong ton tai'ELSESELECT MASACH,SoSachConLai = SOLUONG - SODAMUONFROM SACHWHERE MASACH = @MASACHEND-------------------GOEXEC SoSachChoMuon 7GIẢI ĐỀ 5USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = 'De5')BEGINDROP DATABASE De5ENDGOCREATE DATABASE De5GOUSE De5GO-------------------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)-------------------GOALTER TABLE DMNganhBac ADDUNIQUE(MSNgach,HSLuong)GOALTER TABLE NhanVien ADDDEFAULT 1 FOR BAC-------------------GOCREATE VIEW vwHSLuongASSELECT MSNV,N.MSNgach,N.BAC,HSLuongFROM DMNganhBac D JOIN NhanVien N ON D.MSNgach = n.MSNgachGROUP BY MSNV,N.MSNgach,N.BAC,HSLuong-------------------GOCREATE VIEW vwNangLuongASSELECT * FROM NhanVienWHERE DATEDIFF(M,NGAYNLCC,GETDATE())>=24-------------------GOCREATE PROC DSNangLuong(@Nam int = NULL)ASIF @Nam IS NULLSELECT * FROM NhanVienWHERE YEAR(NGAYNLCC)=YEAR(GETDATE())ELSESELECT * FROM NhanVienWHERE YEAR(NGAYNLCC) = @Nam-------------------GOEXEC DSNangLuong 2000GIẢI ĐỀ 6USE MASTERGOIF EXISTS (SELECT name FROM sys.databases WHERE name = 'De6')BEGINDROP DATABASE De6ENDGOCREATE DATABASE De6GOUSE De6GO-------------------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))GOALTER TABLE LANGGIENG ADDcheck(MSTinhMSTinhLG)GOALTER TABLE TINH ADDunique(MSTinh)-------------------GOINSERT 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')-------------------GOCREATE VIEW vwTinhLonASSELECT T1.TENTINH FROM TINH T1WHERE T1.DIENTICH >= all( SELECT T2.DIENTICH FROM TINH T2,LANGGIENG L2WHERE T2.MSTINH =L2.MSTINH)-------------------GOCREATE VIEW vwSoNuocGiapRanhASSELECT T.MSTinh,TenTinh,SoNuocGiapRanh=Count(TenNuoc)FROM TINH T join BIENGIOI B on T.MSTinh = B.MSTinhGROUP BY T.MSTinh,TenTinh-------------------GOCREATE PROC ThongTinTLG(@MSTinh varchar(5) = NULL)ASBEGINIF @MSTinh IS NULLPRINT'Ma tinh khong ton tai'ELSEBEGINWITH TinhLGAS (SELECT T.MSTinh,T.TenTinh FROM TINH TWHERE T.MSTinh IN (SELECT MSTinhLG FROMLANGGIENG L WHERE L.MSTinh = @MSTinh))SELECT STT=RANK() OVER(ORDER BY MSTinh),* FROMTinhLGENDEND-------------------GOEXEC ThongTinTLG 'DN'

Tài liệu liên quan

  • Ôn thi ĐH có Phân dang + Đê thi có lời giải Ôn thi ĐH có Phân dang + Đê thi có lời giải
    • 44
    • 610
    • 0
  • Tuyển tập đề thi có lời giải nguyên lý máy Tuyển tập đề thi có lời giải nguyên lý máy
    • 40
    • 5
    • 5
  • 7 đề ôn thi (có lời giải) máy tính bỏ túi 7 đề ôn thi (có lời giải) máy tính bỏ túi
    • 44
    • 784
    • 12
  • 10 đề ôn thi (có lời giải) máy tính bỏ túi 10 đề ôn thi (có lời giải) máy tính bỏ túi
    • 52
    • 818
    • 4
  • Tuyển tập 7 đề ôn thi (có lời giải) máy tính bỏ túi Tuyển tập 7 đề ôn thi (có lời giải) máy tính bỏ túi
    • 29
    • 970
    • 3
  • Tuyển Chọn 77 Đề Thi  Môn Toán Vào Lớp 10 Các Trường Chuyên - Có Lời Giải Chi Tiết Tuyển Chọn 77 Đề Thi Môn Toán Vào Lớp 10 Các Trường Chuyên - Có Lời Giải Chi Tiết
    • 312
    • 3
    • 0
  • Tổng hợp 6 đề thi có lời giải chi tiết môn kinh tế lượng ĐHKT huế Tổng hợp 6 đề thi có lời giải chi tiết môn kinh tế lượng ĐHKT huế
    • 29
    • 2
    • 13
  • Đề cương 24 bài tập có lời giải Lập trình C Đề cương 24 bài tập có lời giải Lập trình C
    • 50
    • 1
    • 0
  • Tổng hợp các dạng toán về phương trình đường thẳng trong các đề thi (có lời giải) Tổng hợp các dạng toán về phương trình đường thẳng trong các đề thi (có lời giải)
    • 60
    • 591
    • 1
  • Đề thi có lời giải Đề thi có lời giải
    • 13
    • 392
    • 2

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

(222.5 KB - 28 trang) - BỘ 7 ĐỀ THI CÓ LỜI GIẢI LẬP TRÌNH SQL SERVER Tải bản đầy đủ ngay ×

Từ khóa » Bài Tập Về View Trong Sql Có Lời Giải