Bài tập và lời giải Hệ quản trị cơ sở dữ liệu DT01692530982boydb.wap.sh
--1. Hãy tạo cấu trúc cơ sở dữ liệu trên(Dùng câu lệnh SQL ; Với mỗi bảng nếu có ràng buộc
--khoá chính hoặc ràng buộc khoá ngoài yêu cầu định nghĩa đầy đủ)
CREATE DATABASE DANGVIEN
Bản quyền thuộc về Diên DBP Địa chỉ lớp CNTT K8A trường đại hoc công nghệ thông tin và truyền thông
USE DANGVIEN
CREATE TABLE TTDV(
MADV CHAR(10) PRIMARY KEY,
TENDV NVARCHAR(30),
NGAYS SMALLDATETIME,
GT CHAR(4),
NGAYVD SMALLDATETIME,
MACB CHAR(10),
CONSTRAINT KN FOREIGN KEY(MACB)REFERENCES CB(MACB))
CREATE TABLE CB(
MACB CHAR(10) PRIMARY KEY,
TENCB NVARCHAR(30))
CREATE TABLE KT(
MADV CHAR(10),
MASKT CHAR(10)PRIMARY KEY,
NGAYQD SMALLDATETIME,
CKT CHAR(20),
LYDO NVARCHAR(30),
CONSTRAINT KN1 FOREIGN KEY(MADV)REFERENCES TTDV(MADV))
INSERT INTO TTDV
VALUES('DV01','DINH XUAN TRIEU','03/07/1989','NAM','05/19/2009','CB01')
INSERT INTO TTDV
VALUES('DV02','DINH XUAN BACH','11/02/1990','NAM','05/19/2010','CB01')
INSERT INTO CB
VALUES('CB01','PHUC TIEN')
INSERT INTO CB
VALUES('CB02','CNTT')
INSERT INTO KT
VALUES('DV01','KT01','05/19/2008','CAP TINH','DV TOT')
INSERT INTO KT
VALUES('DV02','KT02','05/19/2007','CAP XA','DV GIOI')
INSERT INTO KT
VALUES('DV01','KT03','05/19/2008','CAP TP','DV TOT')
SELECT*FROM KT
--2. Tạo view để tổng hợp thông tin về các Đảng viên vào Đảng ngày 19/5/2009
CREATE VIEW CAU2
AS
SELECT*FROM TTDV
WHERE NGAYVD='05/19/2009'
SELECT*FROM CAU2
--3. Tạo thủ tục lưu trữ với tham số vào @Maskt để lưu thông tin về những Đảng viên được khen thưởng theo mã số khen thưởng ở trên
CREATE PROC CAU3
@MASKT CHAR(30)
AS
SELECT TTDV.* FROM TTDV,KT
WHERE TTDV.MADV=KT.MADV AND MASKT=@MASKT
CAU3 'KT03'
--4. Tạo trigger cho phép thay đổi dữ liệu của những bảng liên quan trong view ở ý 2 khi cập nhật dữ liệu trên view.
--5. Dùng kiểu dữ liệu Cursor để tổng hợp thông tin về các Đảng viên chưa được khen thưởng trong năm 2009
--KHAI BAO CURSOR
DECLARE CAU5 CURSOR FOR
SELECT*FROM TTDV
WHERE MADV NOT IN(SELECT MADV FROM KT)
--MO CURSOR
OPEN CAU5
--XU LY CURSOR
DECLARE @MADV CHAR(10),@TENDV CHAR(30),@NGAYS SMALLDATETIME,@GT CHAR(5),@NGAYVD SMALLDATETIME,@MACB CHAR(10)
FETCH NEXT FROM CAU5
INTO @MADV,@TENDV,@NGAYS,@GT,@NGAYVD,@MACB
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MADV+@TENDV+CONVERT(CHAR(30),@NGAYS)+ @GT+CONVERT(CHAR(30),@NGAYVD)+@MACB
FETCH NEXT FROM CAU5
INTO @MADV,@TENDV,@NGAYS,@GT,@NGAYVD,@MACB
END
--DONG
CLOSE CAU5
--HUY
DEALLOCATE CAU5
BÀI TẬP HỆ QUẢN TRỊ CSDL SQL SERVER 2000
Bài 1.
Cho cơ sở dữ liệu quản lý bán hàng gồm các bảng dữ liệu sau:
+ Bảng DMKhach để lưu các danh mục các khách hàng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaKhach
Mã khách hàng
TenKhach
Tên khách hàng
DiaChi
Địa khách hàng
DienThoai
Điện thoại
+ Bảng DMHang để lưu danh mục hàng hoá gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaHang
Mã hàng
TenHang
Tên hàng
DVT
Đơn vị tính
+ Bảng HoaDonBan để lưu danh sách các đơn hàng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
SoHD
Số hoá đơn bán
MaKhach
Mã khách hàng
NgayHD
Ngày hoá đơn
DienGiai
Diễn giải
+ Bảng ChiTietHoaDon để lưu chi tiết các hoá đơn bán hàng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
SoHD
Số hoá đơn bán
MaHang
Mã hàng
SoLuong
Số lượng bán
DonGia
Đơn giá
Yêu cầu
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên(Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu định nghĩa đầy đủ)
Thực hiện các câu lệnh truy vấn sau:
1. Đưa ra danh sách mặt hàng chưa được bán trong tháng 9 năm 2009
2. Đưa ra danh sách khách hàng có địa chỉ ở Thái Nguyên và từng mua hàng trong tháng 9 năm 2009
3. Đưa ra số lượng đã bán tương ứng của từng mặt hàng trong tháng 9 năm 2009
4. Đưa ra tổng số lượng hàng đã bán cho mục đích mua hàng ‘Tiếp khách’
5. Hiển thị thông tin khách hàng đã từng mua hàng tại cửa hàng
2/ Tạo View để tổng hợp dữ liệu về từng mặt hàng đã được bán (Cấu trúc View gồm các thuộc tính: MaHang, TenHang, DVT, SoLuongBan)
3. Tạo View để tổng hợp dữ liệu về các mặt hàng đã được bán với số lượng lớn nhất.
4/ Tạo View để tổng hợp dữ liệu về các khách hàng đã mua hàng trong ngày 20/10/2005.
5/ Tạo thủ tục có tham số vào là @SoHD để đưa ra danh mục các mặt hàng có trong hoá đơn trên.
6/ Tạo thủ tục có tham số vào là @Ngay để đưa ra danh mục các mặt hàng đã được bán vào ngày trên (Danh sách đưa ra gồm các thuộc tính sau: MaHang, TenHang, DVT, SoLuong).
7/ Tạo TRIGGER để kiểm tra khi nhập dữ liệu vào bảng ChiTietHoaDon nếu số lượng hoặc đơn giá nhập vào nhỏ hơn 0 thì in ra màn hình thông báo lỗi “Dữ liệu nhập vào không hợp lệ” và bản ghi này không được phép nhập vào bảng; Ngược lại in ra màn hình thông báo “Dữ liệu đã được nhập thành công”.
8/ Tạo kiểu dữ liệu CURSOR để lưu trữ thông tin về các mặt hàng đã được bán trong ngày 20/11/2006. Sau đó đưa ra màn hình danh sách dữ liệu trên.
9/ Thêm mới một trường TongTien vào bảng HoaDonBan
10/ Dùng kiểu dữ liệu CURSOR để cập nhập dữ liệu cho trường TongTien
Bài 2.
Cho cơ sở dữ liệu quản lý nhà cho thuê bao gồm các bảng dữ liệu sau:
+ Bảng KHACH để lưu danh sách các khách hàng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaK
Mã khách hàng
TenK
Tên khách hàng
ĐiaChi
Địa chỉ khách
SoDT
Số điện thoại
+ Bảng NHA để lưu trữ thông tin về các ngôi nhà cho thuê, gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaN
Mã nhà
TenChuNha
Tên chủ nhà
GiaThue
Giá thuê
DiaChiNha
Địa chỉ nhà
+Bảng HOPDONG để lưu trữ thông tin về các hợp đồng thuê nhà của khách, gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
SoHĐ
Số hợp đồng
MaN
Mã nhà
MaK
Mã khách
NgayBĐ
Ngày bắt đầu hợp đồng
NgayKT
Ngày kết thúc hợp đồng
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
Thực hiện các câu lệnh truy vấn sau:
1. Đưa ra danh sách các ngôi nhà đang được thuê
2. Đưa ra thông tin về khách hàng đã thuê ngôi nhà có mã là ‘NHA09’
3. Đưa ra thông tin về những ngôi nhà hiện chưa có người nào thuê
2/ Tạo View để tổng hợp thông tin về những ngôi nhà có giá thuê cao nhất.
3/ Tạo View để tổng hợp thông tin về các khách hàng ngày hôm nay đã hết hạn hợp đồng.
4/ Tạo View để tổng hợp thông tin về các ngôi nhà chưa từng được ai thuê.
5/ Tạo thủ tục có một tham số vào là @ngay để đưa ra danh sách các khách hàng đã hết hạn hợp đồng vào ngày trên.
6/ Tạo thủ tục để đưa ra màn hình danh sách các ngôi nhà hiện tại chưa có khách hàng thuê.
7/ Tạo thủ tục có tham số là @Ngay để đưa ra danh sách các khách hàng bắt đầu thuê nhà vào ngày trên.
8/ Tạo Trigger để kiểm tra khi nhập dữ liệu vào bảng NHA nếu giá thuê nhập vào <0 thì đưa ra màn hình thông báo lỗi “Dữ liệu nhập vào không hợp lệ” và bản ghi này không được phép nhập vào bảng; Ngược lại in ra màn hình thông báo “Dữ liệu đã được nhập thành công”.
9/ Sử dụng kiểu dữ liệu CURSOR để đưa ra màn hình thông tin về các khách hàng đang thuê các ngôi nhà có địa chỉ ở “Tổ 10, phường Phan Đình Phùng”.
10/ Sử dụng kiểu dữ liệu CURSOR để đưa ra danh sách các ngôi nhà hiện tại chưa có khách hàng thuê.
Bài 3.
Cho cơ sở dữ liệu quản lý sinh viên bao gồm các bảng dữ liệu sau:
+ Bảng LOP để lưu thông tin về các lớp học gồm có các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaLop
Mã lớp học
TenLop
Tên lớp học
+ Bảng TINH để lưu trữ thông tin về các tỉnh thành phố, gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaTinh
Mã tỉnh, thành phố
TenTinh
Tên tỉnh, thành phố
+Bảng SINHVIEN để lưu trữ thông tin về các sinh viên, gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaSV
Mã sinh viên
HoTen
Họ tên sinh viên
NgaySinh
Ngày sinh
GioiTinh
Giới tính
MaLop
Mã lớp
MaTinh
Mã tỉnh
DTB
Điểm trung bình
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
Thực hiện các câu lệnh truy vấn sau:
1. Đưa ra thông tin về những sinh viên có điểm trung bình dưới 5
2. Đưa ra thông tin về sinh viên có địa chỉ ở Thái Nguyên
3. Đưa ra thông tin về các lớp học không có sinh viên nào ở Hà Nội
2/ Tạo View để tổng hợp thông tin về các sinh viên có điểm trung bình cao nhất.
3/ Tạo View để tổng hợp thông tin về các sinh viên có điểm trung bình cao nhất theo từng lớp học.
4/ Tạo thủ tục để đưa ra sĩ số sinh viên cho từng lớp học (Danh sách đưa ra phải có các thuộc tính sau: MaLop, TenLop, SiSo).
5/ Tạo thủ tục có tham số là @Tenlop để xoá thông tin về những sinh viên học ở lớp trên.
6/ Tạo TRIGGER để kiểm tra dữ liệu khi nhập vào bảng sinh viên: nếu điểm trung bình nhập vào <0 thì đưa ra màn hình thông báo lỗi và bản nghi này không được phép nhập vào bảng dữ liệu, ngược lại đưa ra thông báo bản ghi đã nhập thành công.
7/ Sử dụng kiểu dữ liệu CURSOR để đưa ra màn hình danh sách sinh viên học ở lớp có tên là ‘Cao đẳng 2A’.
Bài 4:
Cho cơ sở dữ liệu quản lý Thực tập gồm 3 bảng dữ liệu sau:
+ Bảng SINHVIEN chứa danh sách sinh viên bao gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
Masv
Mã số sinh viên
HotenSV
Họ tên sinh viên
NS
Ngày sinh
Diachi
Địa chỉ
+ Bảng DETAI chứa danh sách các đề tài thực tập gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaDT
Mã số đề tài
TenDT
Tên đề tài
GVHD
Họ và tên giáo viên hướng dẫn đề tài
+ Bảng SV_DETAI chứa thông tin về tình hình thực tập của sinh viên theo các đề tài, gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaDT
Mã số đề tài
MaSV
Mã số sinh viên
NTT
Nơi sinh viên đến thực tập
KQ
Kết quả thực tập của sv theo đề tài đã chọn
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các sinh viên tham gia thực tập tại quê.
3/ Tạo View để tổng hợp thông tin về các sinh viên có kết quả thực tập cao nhất.
4/ Tạo View để tổng hợp thông tin về mỗi giáo viên đã và đang hướng dẫn bao nhiêu sinh viên thực tập.
5/ Tạo thủ tục có tham số vào là @gvhd để đưa ra danh sách các sinh viên do giáo viên trên hướng dẫn.
6/ Tạo thủ tục có tham số vào là @NTT để đưa ra danh sách các sinh viên thực tập tại địa điểm trên.
7/ Tạo thủ tục để đưa ra danh sách các đề tài chưa từng có sinh viên nào tham gia đăng ký thực tập.
8/ Tạo TRIGGER để kiểm tra khi nhập dữ liệu vào bảng SV_DETAI nếu kết quả thực tập nhỏ hơn 0 thì đưa ra màn hình thông báo lỗi và bản nghi này không được phép nhập vào bảng dữ liệu, ngược lại đưa ra thông báo bản ghi đã nhập thành công.
9/ Dùng kiểu dữ liệu CURSOR để đưa ra màn hình danh sách các sinh viên phải thực tập lại (những sinh viên có kết quả thực tập < 5 yêu cầu phải thực tập lại)
10/ Dùng kiểu dữ liệu CURSOR để đưa ra màn hình danh sách các đề tài có kết quả thực tập cao nhất
Bài 5:
Cho cơ sở dữ liệu quản lý thư viện gồm các bảng dữ liệu sau:
+Bảng SACH chứa danh mục sách gồm các thông tin thuộc tính sau:
Tên Thuộc tính
Giải thích
MaSach
Mã sách
TenSach
Tên sách
NXB
Tên nhà xuất bản
NamXB
Năm xuất bản
TenTG
Tên tác giả
+Bảng DOCGIA chứa danh sách độc giả gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaDG
Mã độc giả
TenDG
Tên độc giả
DiaChiDG
Địa chỉ độc giả
+Bảng MUON_TRA chứa thông tin về sự mượn và trả sách của độc giả gồm các thuộc tính:
Tên Thuộc tính
Giải thích
MaDG
Mã độc giả
MaSach
Mã sách
NgayMuon
Ngày mượn
SL
Số lượng mượn
NgayHenTra
Ngày hẹn trả
NgayTra
Ngày trả
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các độc giả đã hết hạn trả sách nhưng chưa trả.
3/ Tạo View để tổng hợp thông tin về danh mục sách chưa từng được độc giả nào mượn.
4/ Tạo View để tổng hợp thông tin về từng loại sách hiện tại có độc giả đang mượn ( Cấu trúc View gồm các thuộc tính sau: MaSach, TenSach, TenTG, SoLuong).
5/ Tạo thủ tục có tham số là @MaDG để đưa ra danh mục sách mà độc giả trên đang mượn.
6/ Tạo thủ tục có tham số là @NgayMuon để đưa ra danh sách các độc giả đã mượn sách vào ngày trên.
7/ Tạo thủ tục để đưa ra danh sách các độc giả ngày hôm nay là hạn cuối cùng phải trả sách cho thư viện.
8/ Tạo TRIGGER để kiểm tra dữ liệu khi nhập vào bảng MUON_TRA nếu số lượng mượn nhỏ hơn 0 thì thì đưa ra màn hình thông báo lỗi và bản nghi này không được phép nhập vào bảng dữ liệu, ngược lại đưa ra thông báo bản ghi đã nhập thành công.
9/ Dùng kiểu dữ liệu CURSOR để đưa ra màn hình danh sách các độc giả đã hiện tại vẫn đang mượn sách của thư viện.
Bài 6
Cho cơ sở dữ liệu quản lý dự án gồm các bảng dữ liệu sau:
+ Bảng NHANVIEN chứa danh sách các nhân viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaNV
Mã nhân viên
Hoten
Họ tên nhân viên
Ngaysinh
Ngày sinh
GT
Giới tính
+ Bảng DUAN chứa thông tin về các dự án gồm có các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaDA
Mã dự án
TenDA
Tên dự án
NganSach
Ngân sách
+ Bảng THAMGIA ghi danh sách sinh viên đăng ký tham gia dự án
Tên Thuộc tính
Giải thích
MaDA
Mã dự án
MaNV
Mã nhân viên
TGBD
Thời gian bắt đầu
TGKT
Thời gian kết thúc
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các nhân viên chưa tham gia bất kỳ dự án nào.
3/ Tạo View để tổng hợp thông tin về các dự án có ngân sách lớn nhất.
Tạo View để tổng hợp thông tin về mỗi nhân viên đã tham gia bao nhiêu dự án.
4/ Tạo thủ tục có tham số là @TenDA để đưa ra danh sách các nhân viên tham gia dự án trên.
5/ Tạo thủ tục có tham số là @TGKT và @MaDA để đưa ra danh sách các nhân viên phải hoàn thành dự án đó vào ngày trên.
6/ Tạo TRIGGER để kiểm tra dữ liệu khi nhập vào bảng DUAN nếu ngân sách nhỏ hơn 0 thì đưa ra màn hình thông báo lỗi và bản nghi này không được phép nhập vào bảng dữ liệu, ngược lại đưa ra thông báo bản ghi đã nhập thành công.
7/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách nhân viên bắt đầu thực hiện dự án “Phòng chống bệnh mắt hột” từ ngày 20/11/2005.
8/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các dự án chưa từng có nhân viên nào tham gia đăng ký.
Bài 7
Cho cơ sở dữ liệu quản lý Tài sản trong một cơ quan gồm các bảng quan hệ sau:
+Bảng DMPhong để lưu danh sách các phòng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaP
Mã phòng
TenP
Tên phòng
+ Bảng DMTaiSan để lưu trữ thông tin về các tài sản gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaTS
Mã tài sản
TenTS
Tên tài sản
DonVi
Đơn vị tính
Gia
Đơn giá
+ Bảng PhanPhoi để lưu trữ thông tin về các loại tài sản có trong từng phòng gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaTS
Mã tài sản
MaP
Mã phòng
SoLuong
Số lượng
NgayPP
Ngày phân phối tài sản
GhiChu
Ghi chú
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các tài sản có đơn giá lớn nhất.
3/ Tạo View để tổng hợp thông tin về những tài sản chưa từng được phân phối cho các phòng để sử dụng.
4/ Tạo thủ tục có tham số là @TenP để đưa ra danh sách các tài sản được phân phối vào phòng trên.
5/ Tạo thủ tục có tham số là @TenTS để đưa ra danh sách các phòng được phân phối tài sản trên.
6/ Tạo TRIGGER để kiểm tra dữ liệu khi nhập vào bảng DMTaiSan nếu đơn giá nhập vào nhỏ hơn 0 thì đưa ra màn hình thông báo lỗi và bản nghi này không được phép nhập vào bảng dữ liệu, ngược lại đưa ra thông báo bản ghi đã nhập thành công.
Bài 8
Cho cơ sở dữ liệu quản lý điểm thi gồm các bảng dữ liệu sau:
+ Bảng SinhVien để lưu danh mục thông tin về sinh viên gồm các trường sau:
Tên Thuộc tính
Giải thích
MaSV
Mã sinh viên
TenSV
Tên sinh viên
NgaySinh
Ngày sinh
GioiTinh
Giới tính
QueQuan
Địa chỉ
+ Bảng MonHoc chứa danh mục các môn học gồm các trường sau:
Tên Thuộc tính
Giải thích
MaM
Mã môn
TenM
Tên môn
DVHT
Đơn vị học trình
+ Bảng Diem để lưu trữ thông tin về điểm thi theo từng môn học của mỗi sinh viên bao gồm các trường sau:
Tên Thuộc tính
Giải thích
MaM
Mã môn
MaSV
Mã sinh viên
DiemThi
Điểm thi
Yêu cầu
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các sinh viên có điểm thi cao nhất của môn học có tên là “Cơ sở dữ liệu”.
3/ Tạo thủ tục có tham số là @TenM để đưa ra danh sách sinh viên phải thi lại môn học trên.
4/ Dùng kiểu dữ liệu CURSOR để đưa ra trung bình điểm thi của từng môn học.
Bài 9
Cho cơ sở dữ liệu quản lý gồm các bảng dữ liệu sau:
+ Bảng GIAOVIEN để lưu các thông tin về giáo viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaGV
Mã giáo viên
TenGV
Tên giáo viên
DiaChi
Địa chỉ giáo viên
DienThoai
Điện thoại giáo viên
+ Bảng HOCVI để lưu thông tin về học vị gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaHV
Mã học vị
TenHV
Tên học vị
+ Bảng CHUYENNGANH để lưu danh sách các chuyên ngành gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaCN
Mã chuyên ngành
TenCN
Tên chuyên ngành
+ Bảng GV_HV_CN để lưu thông tin về học vị của giáo viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaGV
Mã giáo viên
MaHV
Mã học vị
MaCN
Mã chuyên ngành
Nam
Năm đạt học vị
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên(Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu định nghĩa đầy đủ)
2/ Tạo View để cho biết thông tin về các giáo viên có học vị là “Tiến sỹ”
3/ Tạo View để cho biết thông tin về các giáo viên có chuyên ngành “Kinh tế”
4/ Tạo View để cho biết thông tin về các giáo viên có địa chỉ ở “Thái Nguyên”
5/ Tạo thủ tục có tham số vào là @Nam để đưa ra tên của các giáo viên nhận học vị “Tiến sỹ vào năm trên.
6/ Tạo thủ tục nhập dữ liệu cho bảng GIAOVIEN
7/ Tạo thủ tục có tham số vào là @TenHV để đưa ra thông tin về các giáo viên có tên học vị trên
8/ Tạo TRIGGER để kiểm tra khi nhập dữ liệu vào bảng GV_HV_CN nếu năm nhập vào nhỏ hơn 0 thì in ra màn hình thông báo lỗi “Dữ liệu nhập vào không hợp lệ” và bản ghi này không được phép nhập vào bảng; Ngược lại in ra màn hình thông báo “Dữ liệu đã được nhập thành công”.
9/ Dùng kiểu dữ liệu CURSOR để đưa ra thông tin về từng giáo viên của từng chuyên ngành.
Bài 10
Cho cơ sở dữ liệu quản lý gồm các bảng dữ liệu sau:
+ Bảng TOCONGDOAN để lưu thông tin về các chi đoàn gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaTCD
Mã tổ công đoàn
TenTCD
Tên tổ công đoàn
+ Bảng CONGDOAN để lưu thông tin về các đoàn viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaCDV
Mã công đoàn viên
TenCDV
Tên công đoàn viên
NgayS
Ngày sinh
NgayV
Ngày ra nhập công đoàn
MaTCD
Mã tổ công đoàn
+ Bảng KHENTHUONG để lưu thông tin về tình hình khen thưởng của các công đoàn viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaCDV
Mã đoàn viên
MSKT
Mã số khen thưởng
Ldo
Lý do khen thưởng
Nam
Năm khen thưởng
Yêu cầu:
1.Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2. Hãy tạo view để tổng hợp thông tin về các công đoàn viên đã được khen thưởng của tổ công đoàn “Hệ thống thông tin”.
3. Hãy tạo view cho biết thông tin về các công đoàn viên chưa từng được khen thưởng.
4. Hãy tạo view để thông tin về các công đoàn viên được khen thưởng về việc hoàn thành đề tài câp bộ.
5. Tạo thủ tục có tham số vào @TenTCD để đưa ra thông tin về những đoàn viên của chi đoàn trên.
6. Tạo thủ tục có tham số vào @TenTCD, @Nam để đưa ra thông tin về những công đoàn viên của tổ công đoàn đã được khen thưởng vào năm trên.
7. Tạo thủ tục có tham số vào @Tencd để xoá thông tin về những công đoàn viên thuộc chi đoàn trên.
8. Tạo Trigger để kiểm tra việc nhập dữ liệu cho bảng KHENTHUONG. Nếu năm khen thưởng nhỏ hơn 0 thì in ra thông báo dữ liệu không hợp lệ và bản ghi không được phép nhập vào bảng. Ngược lại thì in ra thông báo dữ liệu nhập thành công.
9. Sử dụng kiểu dữ liệu Cursor để tổng hợp thông tin về những công đoàn viên chưa được khen thưởng trong năm 2007.
Bài 11
Cho cơ sở dữ liệu quản lý điểm gồm 3 bảng dữ liệu sau:
+ Bảng SINHVIEN chứa danh sách sinh viên bao gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaSV
Mã số sinh viên
HotenSV
Họ tên sinh viên
NS
Ngày sinh
Diachi
Địa chỉ
DVHT
Đơn vị học trình
+ Bảng MON chứa danh sách các môn học gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaM
Mã môn
TenM
Tên môn
+ Bảng DIEM chứa thông tin về điểm của sinh viên theo các môn học gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaM
Mã môn
MaSV
Mã số sinh viên
Phach
Số phách
DIEM
Điểm thi
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về sinh viên có điểm thi cao nhất của môn “CSDL”.
3/ Tạo View để tổng hợp thông tin về sinh viên có địa chỉ ở “Thái Nguyên”
4/ Tạo View cho biết thông tin về các sinh viên sinh trước năm 1980
5/ Tạo thủ tục có tham số đầo vào @TenM để đưa ra danh sách các sinh viên có điểm thi chưa đạt của môn học trên.
6/ Tạo thủ tục có tham số đầo vào @Diem để đưa ra danh sách các sinh viên có điểm thi thấp hơn điểm trên của môn học “CSDL”.
7/ Tạo Trigger để kiểm tra việc nhập dữ liệu cho bảng DIEM. Nếu điêm nhỏ hơn 0 hoặc điểm lớn hơn 10 thì in ra thông báo dữ liệu không hợp lệ và bản ghi không được phép nhập vào bảng. Ngược lại thì in ra thông báo dữ liệu nhập thành công.
8/ Dùng kiểu dữ liệu CURSOR để đưa ra màn hình danh sách các sinh viên có điểm thi cao nhất của các môn học?
Bài 12
Cho cơ sở dữ liệu quản lý khách sạn gồm các bảng dữ liệu sau:
+ Bảng KhachHang để lưu danh mục thông tin về khách hàng tại khách sạn gồm các trường sau:
Tên Thuộc tính
Giải thích
MaKhach
Mã khách
TenKhach
Tên khách hàng
ĐiaChi
Địa chỉ
SDT
Số điện thoại
+ Bảng Phong để lưu thông tin về các phòng có trong khách sạn gồm các trường sau:
Tên Thuộc tính
Giải thích
MaP
Mã phòng
TenP
Tên phòng
LoaiP
Loại phòng
Gia
Đơn giá
+ Bảng DatPhong (Đặt phòng) để lưu trữ thông tin việc đặt phòng của khách:
Tên Thuộc tính
Giải thích
MaKhach
Mã khách
MaP
Mã phòng
NgayNhan
Ngày nhận phòng
NgayTra
Ngày trả phòng
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo thủ tục để tăng giá của tất cả các phòng trong khách sạn lên 5%.
3/ Tạo View để tổng hợp thông tin về các khách hàng hiện tại đang thuê phòng tại khách sạn.
4/ Tạo View để tổng hợp thông tin hoá đơn thanh toán của khách hàng (hoá đơn gồm các thuộc tính sau: (Mã khách, Tên khách, Mã phòng, Đơn Giá, Ngày nhận, Ngày Trả, Thành Tiền).
5/ Tạo View để tổng hợp thông tin về các khách hàng có số ngày đặt phòng lớn nhất.
6/ Tạo thủ tục để đưa ra danh các phòng hiện tại chưa có khách hàng đặt phòng .
7/ Tạo thủ tục để đưa ra danh sách khách hàng ngày hôm nay phải trả phòng.
8/ Tạo trigger để kiểm tra dữ liệu khi cập nhật vào bảng Phòng phải đảm bảo dữ liệu đơn giá >0.
9/ Tạo trigger để kiểm tra dữ liệu khi nhập vào bảng DatPhong phải đảm ngày trả phòng luôn lớn hơn hoặc bằng ngày nhận phòng.
10/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách khách hàng ngày hôm nay phải trả phòng.
Bài 13
Cho cơ sở dữ liệu gồm các bảng dữ liệu sau:
+ Bảng NhanVien để lưu thông tin về nhân viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaNV
Mã nhân viên
TenNV
Tên nhân viên
DiaChi
Địa chỉ
Map
Mã phòng
Luong
Lương của nhân viên
+ Bảng Phong để lưu thông tin về các phòng ban trong cơ quan gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaP
Mã phòng
TenP
Tên phòng
DiaChiP
Địa chỉ phòng
SDT
Số điện thoại
+ Bảng NgoaiNgu (ngoại ngữ) gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaNN
Mã ngoại ngữ
TenNN
Tên ngoại ngữ
+ Bảng TrinhDo_NN (trình độ ngoại ngữ) để lưu trữ thông tin về trình độ ngoại ngữ của nhân viên:
Tên Thuộc tính
Giải thích
MaNV
Mã nhân viên
MaNN
Mã ngoại ngữ
TrinhDo
Trình độ ngoại ngữ
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về mỗi phòng hiện tại có bao nhiêu nhân viên.
3/ Tạo View để tổng hợp thông tin về các nhân viên chưa tích luỹ được trình độ ngoại ngữ nào.
4/ Tạo View để tổng hợp thông tin về các nhân viên có lương cao nhất trong phòng họ làm việc.
5/ Tạo thủ tục có tham số vào @TenNN và @TrinhDo để đưa ra danh các nhân viên biết ngoại ngữ và trình độ trên.
6/ Tạo thủ tục có tham số vào @TenP để đưa ra tổng số nhân viên hiện có trong phòng này.
7/ Tạo thủ tục có tham số vào là @TenNN, @TenP và @TrinhDo để đưa ra danh các nhân viên ở phòng này biết ngoại ngữ và trình độ ứng với các tham biến đã cho
8/ Tạo thủ tục có tham số vào @TenP để đưa ra danh các nhân viên có lương cao nhất của phòng này.
9/ Tạo Trigger để kiểm tra khi nhập dữ liệu vào bảng NhanVien phải đảm bảo lương của nhân viên phải >0.
10/ Dùng kiểu dữ liệu CURSOR để tăng lương cho mỗi nhân viên lên 10%.
11/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có ngoại ngữ tiếng anh trình độ C..
Bài 14.
Cho cơ sở dữ liệu gồm các bảng dữ liệu sau:
+ Bảng NhanVien để lưu thông tin về nhân viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaNV
Mã nhân viên
TenNV
Tên nhân viên
DiaChi
Địa chỉ
Map
Mã phòng
Luong
Lương của nhân viên
+ Bảng Phong để lưu thông tin về các phòng ban trong cơ quan gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaP
Mã phòng
TenP
Tên phòng
DiaChiP
Địa chỉ phòng
SDT
Số điện thoại
+ Bảng HocVi (học vị) gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
MaHV
Mã học vị
TenHV
Tên học vị
+ Bảng NV_TDHV (trình độ học vị của nhân viên) :
Tên Thuộc tính
Giải thích
MaNV
Mã nhân viên
MaTD
Mã trình độ học vị
ThoiGian
Ngày tháng năm đạt trình độ này
Yêu cầu:
1/ Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2/ Tạo View để tổng hợp thông tin về các nhân viên có học vị là tiến sĩ trước năm 1990.
3/ Tạo View để tổng hợp thông tin về các nhân viên chưa có học vị Tiến sĩ.
4/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có học vị và thời gian đạt được ứng với các tham biến đã cho.
5/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có trình độ học vị và thời gian đạt được học vị đó ứng với các tham biến đã cho.
6/ Tạo trigger để kiểm tra dữ liệu khi nhập vào bảng NV_TDHV sao cho thời gian đạt học vị đó phải <= thời gian hiện tại.
7/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có học vị Tiến sĩ.
Bài 15.
Cho cơ sở dữ liệu quản lý điểm rèn luyện gồm các bảng sau:
+ Bảng LOP để lưu thông tin về các lớp học gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
Malop
Mã lớp
Tenlop
Tên lớp
+ Bảng SINHVIEN để lưu thông tin về các sinh viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
Masv
Mã sinh viên
Tensv
Tên sinh viên
Ngaysinh
Ngày sinh
Malop
Mã lớp
+ Bảng DIEMRL để lưu thông tin về tình hình điểm rèn luyện của các sinh viên gồm các thuộc tính sau:
Tên Thuộc tính
Giải thích
Masv
Mã sinh viên
Hocky
Học kỳ
Nam
Năm học
Diem
Điểm rèn luyện
Yêu cầu:
1. Hãy tạo cấu trúc cơ sở dữ liệu trên (Dùng trình soạn thảo Query Analyzer; Với mỗi bảng nếu có ràng buộc khoá chính hoặc ràng buộc khoá ngoài yêu cầu sv phải định nghĩa đầy đủ).
2. Hãy tạo view để tổng hợp thông tin về điểm rèn luyện của những sinh viên học lớp “Cao đẳng K4A”
3. Hãy tạo view để in ra thông tin về sinh viên có điểm rèn luyện cao nhất.
4. Tạo view để tổng hợp thông tin về những sinh viên có điểm rèn luyện<50 trong năm học 2006-2007.
5. Tạo thủ tục có tham số vào @Masv để đưa ra thông tin về điểm rèn luyện của sinh viên trên.
6. Tạo thủ tục có tham số vào @Malop, @Nam để đưa ra thông tin về điểm rèn luyện của lớp trên vào nam học trên.
7. Tạo thủ tục có tham số vào @tenlop để đưa ra thông tin về điểm rèn luyện của lớp trên.
8. Tạo Trigger kiểm tra việc nhập dữ liệu cho bảng DIEMRL nếu điểm nhập vào <0 hoặc >100 thì đưa ra yêu cầu nhập lại và bản ghi này không được phép nhập vào bảng, ngược lại thì in ra thông báo nhập thành công.
9. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của học kỳ 1 năm học 2007-2008.
10. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của năm học 2006-2007.
Giải
<p data-mce-style="text-align: justify;">
BÀi 1 CREATE DATABASE QUANLYBANHANG
<p data-mce-style="text-align: justify;">
USE QUANLYBANHANG
<p data-mce-style="text-align: justify;">
CREATE TABLE DMKHACH(
<p data-mce-style="text-align: justify;">
MAK CHAR(10) PRIMARY KEY,
<p data-mce-style="text-align: justify;">
TENK CHAR(40) NOT NULL,
<p data-mce-style="text-align: justify;">
DC CHAR(50),
<p data-mce-style="text-align: justify;">
DT CHAR(15)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE TABLE DMH(
<p data-mce-style="text-align: justify;">
MAH CHAR(10) PRIMARY KEY,
<p data-mce-style="text-align: justify;">
TENH CHAR(30) NOT NULL,
<p data-mce-style="text-align: justify;">
DVT CHAR(15)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE TABLE HOADONBAN(
<p data-mce-style="text-align: justify;">
SOHD CHAR(10),
<p data-mce-style="text-align: justify;">
MAK CHAR(10),
<p data-mce-style="text-align: justify;">
NGAYHD SMALLDATETIME NOT NULL,
<p data-mce-style="text-align: justify;">
DIENGIAI CHAR(30)
<p data-mce-style="text-align: justify;">
CONSTRAINT KC_HOADONBAN PRIMARY KEY (SOHD),
<p data-mce-style="text-align: justify;">
CONSTRAINT KN_HOADONBAN FOREIGN KEY (MAK) REFERENCES DMKHACH(MAK)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE TABLE CHITIETHOADON(
<p data-mce-style="text-align: justify;">
SOHD CHAR(10),
<p data-mce-style="text-align: justify;">
MAH CHAR(10),
<p data-mce-style="text-align: justify;">
SL INT,
<p data-mce-style="text-align: justify;">
DONGIA INT,
<p data-mce-style="text-align: justify;">
CONSTRAINT KC_CHITIETHOADON PRIMARY KEY (SOHD,MAH),
<p data-mce-style="text-align: justify;">
CONSTRAINT KN_CHITIETHOADON FOREIGN KEY (SOHD) REFERENCES HOADONBAN(SOHD),
<p data-mce-style="text-align: justify;">
CONSTRAINT KN1_CHITIETHOADON FOREIGN KEY (MAH) REFERENCES DMH(MAH)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--1.DUA RA DANH SACH MAT HANG CHUA DUOC BAN TRONG THANG 9 NAM 2009--
<p data-mce-style="text-align: justify;">
SELECT * FROM DMH
<p data-mce-style="text-align: justify;">
WHERE MAH NOT IN(SELECT MAH FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SOHD IN(SELECT SOHD FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009'))
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--DUA RA DANH SACH KHACH HANG CO DIA CHI O THAI NGUYEN VA TUNG MUA HANG TRONG THANG 9 NAM 2009--
<p data-mce-style="text-align: justify;">
SELECT * FROM DMKHACH
<p data-mce-style="text-align: justify;">
WHERE DC='THAI NGUYEN' AND MAK IN(SELECT MAK FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009')
<p data-mce-style="text-align: justify;">
--DUA RA SO LUONG DA BAN TUONG UNG CUA TUNG MAT HANG TRONG THANG 9 NAM 2009--
<p data-mce-style="text-align: justify;">
SELECT MAH,SUM(SL) AS SL
<p data-mce-style="text-align: justify;">
FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SOHD IN(SELECT SOHD FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009')
<p data-mce-style="text-align: justify;">
GROUP BY MAH
<p data-mce-style="text-align: justify;">
--DUA RA TONG SO LUONG HANG DA BAN CHO MUC DICH MUA HANG 'TIEP KHACH'--
<p data-mce-style="text-align: justify;">
SELECT SUM(SL) AS SL
<p data-mce-style="text-align: justify;">
FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SOHD IN(SELECT SOHD FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE DIENGIAI='TIEP KHACH')
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--HIEN THI THONG TIN KHACH HANG DA TUNG MUA HANG TAI CUA HANG--
<p data-mce-style="text-align: justify;">
SELECT * FROM DMKHACH
<p data-mce-style="text-align: justify;">
WHERE MAK IN(SELECT MAK FROM HOADONBAN)
<p data-mce-style="text-align: justify;">
--2.TAO VIEW DE TONG HOP DU LIEU VE TUNG MAT HANG DA DUOC BAN (CAU TRUC VIEW GOM CAC THUOC TINH:
<p data-mce-style="text-align: justify;">
--MAH,TENH,DVT,SLBAN--
<p data-mce-style="text-align: justify;">
ALTER VIEW VD2
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT DMH.MAH,TENH,DVT,SUM(SL) AS TSL
<p data-mce-style="text-align: justify;">
FROM DMH,CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE DMH.MAH=CHITIETHOADON.MAH
<p data-mce-style="text-align: justify;">
GROUP BY DMH.MAH,TENH,DVT
<p data-mce-style="text-align: justify;">
SELECT * FROM VD2
<p data-mce-style="text-align: justify;">
--3.TAO VIEW DE TONG HOP DU LIEU VE CAC MAT HANG DA DUOC BAN VOI SO LUONG LON NHAT--
<p data-mce-style="text-align: justify;">
CREATE VIEW TG
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT MAH,SUM(SL) AS TSL
<p data-mce-style="text-align: justify;">
FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
GROUP BY MAH
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE VIEW VD3
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT DMH.*,TSL
<p data-mce-style="text-align: justify;">
FROM DMH,TG
<p data-mce-style="text-align: justify;">
WHERE DMH.MAH =TG.MAH AND TSL IN (SELECT MAX(TSL) FROM TG)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--4.TAO VIEW DE TONG HOP DU LIEU VE CAC KHACH HANG DA MUA HANG TRONG NGAY 20/10/2005--
<p data-mce-style="text-align: justify;">
CREATE VIEW VD4
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT * FROM DMKHACH
<p data-mce-style="text-align: justify;">
WHERE MAK IN(SELECT MAK FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE NGAYHD='10/20/2005')
<p data-mce-style="text-align: justify;">
--5.TAO THU TUC CO THAM SO VAO LA @SOHD DE DUA RA DANH MUC CAC MAT HANG CO TRONG HOA DON TREN--
<p data-mce-style="text-align: justify;">
CREATE PROC VD5
<p data-mce-style="text-align: justify;">
@SOHD CHAR(10)
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT * FROM DMH
<p data-mce-style="text-align: justify;">
WHERE MAH IN(SELECT MAH FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SOHD=@SOHD)
<p data-mce-style="text-align: justify;">
EXEC VD5 'HD1'
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--6.TAO THU TUC CO THAM SO VAO LA @NGAY DE DUA RA DANH MUA CAC MAT HANG DA DUOC BAN VAO NGAY TREN
<p data-mce-style="text-align: justify;">
--DANH SACH DUA RA GOM CAC THUOC TINH SAU:MAH,TENH,DVT,SL--
<p data-mce-style="text-align: justify;">
ALTER PROC VD6
<p data-mce-style="text-align: justify;">
@NGAY SMALLDATETIME
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT DMH.MAH,TENH,DVT,SL
<p data-mce-style="text-align: justify;">
FROM DMH,CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE DMH.MAH=CHITIETHOADON.MAH
<p data-mce-style="text-align: justify;">
AND SOHD IN(SELECT SOHD FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE CONVERT(CHAR(10),NGAYHD)=CONVERT(CHAR(10),@NGAY))
<p data-mce-style="text-align: justify;">
EXEC VD6 '10/10/2010'
<p data-mce-style="text-align: justify;">
--7.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG CHITIETHOADON.NEU SO LUONG HOAC DON GIA
<p data-mce-style="text-align: justify;">
--NHAP VAO NHO HON 0 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY
<p data-mce-style="text-align: justify;">
--KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --
<p data-mce-style="text-align: justify;">
CREATE TRIGGER TG7
<p data-mce-style="text-align: justify;">
ON CHITIETHOADON
<p data-mce-style="text-align: justify;">
FOR INSERT
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
IF EXISTS (SELECT SL,DONGIA FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SL<0 OR DONGIA<0)
<p data-mce-style="text-align: justify;">
BEGIN
<p data-mce-style="text-align: justify;">
PRINT 'DU LIEU NHAP VAO KHONG HOP LE'
<p data-mce-style="text-align: justify;">
ROLLBACK TRAN
<p data-mce-style="text-align: justify;">
END
<p data-mce-style="text-align: justify;">
ELSE PRINT 'DU LIEU NHAP THANH CONG'
<p data-mce-style="text-align: justify;">
INSERT INTO CHITIETHOADON
<p data-mce-style="text-align: justify;">
VALUES('HD8','H03','-10','8000')
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--8.TAO KIEU DU LIEU CURSOR DE LUU TRU THONG TIN VE CAC MAT HANG DA DUOC BAN TRONG NGAY 20/11/2006
<p data-mce-style="text-align: justify;">
--SAU DO DUA RA MAN HINH DANH SACH DU LIEU TREN--
<p data-mce-style="text-align: justify;">
--KHAI BAO--
<p data-mce-style="text-align: justify;">
DECLARE CS8 CURSOR FOR
<p data-mce-style="text-align: justify;">
SELECT * FROM DMH
<p data-mce-style="text-align: justify;">
WHERE MAH IN (SELECT MAH FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
WHERE SOHD IN (SELECT SOHD FROM HOADONBAN
<p data-mce-style="text-align: justify;">
WHERE NGAYHD='11/20/2006'))
<p data-mce-style="text-align: justify;">
--OPEN CURSOR--
<p data-mce-style="text-align: justify;">
OPEN CS8
<p data-mce-style="text-align: justify;">
--XU LY MAU TIN--
<p data-mce-style="text-align: justify;">
FETCH NEXT FROM CS8
<p data-mce-style="text-align: justify;">
WHILE @@FETCH_STATUS=0
<p data-mce-style="text-align: justify;">
BEGIN
<p data-mce-style="text-align: justify;">
FETCH NEXT FROM CS8
<p data-mce-style="text-align: justify;">
END
<p data-mce-style="text-align: justify;">
--DONG CURSOR--
<p data-mce-style="text-align: justify;">
CLOSE CS8
<p data-mce-style="text-align: justify;">
--HUY--
<p data-mce-style="text-align: justify;">
DEALLOCATE CS8
<p data-mce-style="text-align: justify;">
--9.THEM MOI MOT TRUONG TONGTIEN VAO BANG HOADONBAN--
<p data-mce-style="text-align: justify;">
ALTER TABLE HOADONBAN
<p data-mce-style="text-align: justify;">
ADD TONGTIEN INT
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--10.DUNG KIEU DU LIEU CURSOR DE CAP NHAP DU LIEU CHO TRUONG TONGTIEN--
<p data-mce-style="text-align: justify;">
--KHAI BAO--
<p data-mce-style="text-align: justify;">
DECLARE CS10 CURSOR FOR
<p data-mce-style="text-align: justify;">
SELECT SOHD,SUM(SL*DONGIA)
<p data-mce-style="text-align: justify;">
FROM CHITIETHOADON
<p data-mce-style="text-align: justify;">
GROUP BY SOHD
<p data-mce-style="text-align: justify;">
--MO--
<p data-mce-style="text-align: justify;">
OPEN CS10
<p data-mce-style="text-align: justify;">
--XU LY MAU TIN--
<p data-mce-style="text-align: justify;">
DECLARE @SOHD CHAR(10),@TONGTIEN FLOAT
<p data-mce-style="text-align: justify;">
FETCH NEXT FROM CS10
<p data-mce-style="text-align: justify;">
INTO @SOHD,@TONGTIEN
<p data-mce-style="text-align: justify;">
WHILE @@FETCH_STATUS=0
<p data-mce-style="text-align: justify;">
BEGIN
<p data-mce-style="text-align: justify;">
UPDATE HOADONBAN
<p data-mce-style="text-align: justify;">
SET TONGTIEN=@TONGTIEN
<p data-mce-style="text-align: justify;">
WHERE SOHD=@SOHD
<p data-mce-style="text-align: justify;">
END
<p data-mce-style="text-align: justify;">
--DONG--
<p data-mce-style="text-align: justify;">
CLOSE CS10
<p data-mce-style="text-align: justify;">
--HUY--
<p data-mce-style="text-align: justify;">
DEALLOCATE CS10
<p data-mce-style="text-align: justify;">
Bài3
<p data-mce-style="text-align: justify;">
CREATE DATABASE QLSV
<p data-mce-style="text-align: justify;">
USE QLSV
<p data-mce-style="text-align: justify;">
CREATE TABLE LOP(
<p data-mce-style="text-align: justify;">
MAL CHAR(10) PRIMARY KEY,
<p data-mce-style="text-align: justify;">
TENL CHAR(20) NOT NULL,
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE TABLE TINH(
<p data-mce-style="text-align: justify;">
MAT CHAR(10) PRIMARY KEY,
<p data-mce-style="text-align: justify;">
TENT CHAR(40),
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE TABLE SV(
<p data-mce-style="text-align: justify;">
MASV CHAR(15) PRIMARY KEY,
<p data-mce-style="text-align: justify;">
HOTEN CHAR(50) NOT NULL,
<p data-mce-style="text-align: justify;">
NGAYS SMALLDATETIME,
<p data-mce-style="text-align: justify;">
GT BIT NOT NULL,
<p data-mce-style="text-align: justify;">
MAL CHAR(10) NOT NULL,
<p data-mce-style="text-align: justify;">
MAT CHAR(10) NOT NULL,
<p data-mce-style="text-align: justify;">
DTB REAL,
<p data-mce-style="text-align: justify;">
CONSTRAINT KN1 FOREIGN KEY (MAL) REFERENCES LOP,
<p data-mce-style="text-align: justify;">
CONSTRAINT KN2 FOREIGN KEY (MAT) REFERENCES TINH
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*1. DUA RA THONG TIN VE NHUNG SINH VIEN CO DIEM TRUNG BINH DUOI 5*/
<p data-mce-style="text-align: justify;">
SELECT *
<p data-mce-style="text-align: justify;">
FROM SV
<p data-mce-style="text-align: justify;">
WHERE DTB<5
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*2.DUA RA THONG TIN VE SINH VIEN CO DIA CHI O THAI NGUYEN*/
<p data-mce-style="text-align: justify;">
SELECT *
<p data-mce-style="text-align: justify;">
FROM SV
<p data-mce-style="text-align: justify;">
WHERE MAT IN(SELECT MAT FROM TINH
<p data-mce-style="text-align: justify;">
WHERE TENT='THAI NGUYEN')
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*3.DUA RA THONG TIN VE CAC LOP HOC KHONG CO SINH VIEN NAO O HA NOI*/
<p data-mce-style="text-align: justify;">
SELECT *
<p data-mce-style="text-align: justify;">
FROM LOP
<p data-mce-style="text-align: justify;">
WHERE MAL NOT IN(SELECT MAL FROM SV
<p data-mce-style="text-align: justify;">
WHERE MAT IN(SELECT MAT FROM TINH
<p data-mce-style="text-align: justify;">
WHERE TENT='HA NOI' ))
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*4.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO DIEM TRUNG BINH CAO NHAT*/
<p data-mce-style="text-align: justify;">
CREATE VIEW DTBMAX
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT *
<p data-mce-style="text-align: justify;">
FROM SV
<p data-mce-style="text-align: justify;">
WHERE DTB IN (SELECT MAX(DTB) FROM SV)
<p data-mce-style="text-align: justify;">
SELECT * FROM DTBMAX
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*5.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO DIEM TRUNG BINH CAO NHAT THEO TUNG LOP HOC*/
<p data-mce-style="text-align: justify;">
CREATE VIEW DCNL
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT MAL,MAX(DTB) AS DCNL
<p data-mce-style="text-align: justify;">
FROM SV
<p data-mce-style="text-align: justify;">
GROUP BY MAL
<p data-mce-style="text-align: justify;">
CREATE VIEW DTBMAXLOP
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT SV.* FROM SV,DCNL
<p data-mce-style="text-align: justify;">
WHERE SV.MAL=DCNL.MAL AND DTB=DCNL
<p data-mce-style="text-align: justify;">
SELECT * FROM DTBMAXLOP
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*6.TAO THU TUC DE DUA RA SI SO SINH VIEN CHO TUNG LOP HOC(DANH SACH,DUA RA PHAI CO CAC THUOC TINH SAU:MALOP,TENLOP,SISO*/
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
CREATE PROC SSSV
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
SELECT SV.MAL,TENL,COUNT(SV.MAL) AS SISO
<p data-mce-style="text-align: justify;">
FROM SV,LOP
<p data-mce-style="text-align: justify;">
WHERE SV.MAL=LOP.MAL
<p data-mce-style="text-align: justify;">
GROUP BY SV.MAL,TENL
<p data-mce-style="text-align: justify;">
EXEC SSSV
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
/*7.TAO THU TUC CO THAM SO LA @TENLOP DE XOA THONG TIN VE NHUNG SINH VIEN HOC O LOP TREN*/
<p data-mce-style="text-align: justify;">
CREATE PROC XOA
<p data-mce-style="text-align: justify;">
@TENL CHAR(20)
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
DELETE FROM SV
<p data-mce-style="text-align: justify;">
WHERE MAL IN(SELECT MAL FROM LOP
<p data-mce-style="text-align: justify;">
WHERE TENL=@TENL)
<p data-mce-style="text-align: justify;">
XOA 'THKT'
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--8.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG SV.NEU DTB NHAP VAO NHO HON 0 THI IN RA MAN HINH
<p data-mce-style="text-align: justify;">
--THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO BANG.
<p data-mce-style="text-align: justify;">
--NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --
<p data-mce-style="text-align: justify;">
CREATE TRIGGER TG8
<p data-mce-style="text-align: justify;">
ON SV
<p data-mce-style="text-align: justify;">
FOR INSERT
<p data-mce-style="text-align: justify;">
AS
<p data-mce-style="text-align: justify;">
IF EXISTS (SELECT DTB FROM SV
<p data-mce-style="text-align: justify;">
WHERE DTB<0)
<p data-mce-style="text-align: justify;">
BEGIN
<p data-mce-style="text-align: justify;">
PRINT 'DU LIEU NHAP VAO KHONG HOP LE'
<p data-mce-style="text-align: justify;">
ROLLBACK TRAN
<p data-mce-style="text-align: justify;">
END
<p data-mce-style="text-align: justify;">
ELSE PRINT'DU LIEU NHAP THANH CONG'
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
INSERT INTO SV
<p data-mce-style="text-align: justify;">
VALUES('SV8','THUONG','10/10/1995','1','N01','T01',-7.0)
<p data-mce-style="text-align: justify;">
<p data-mce-style="text-align: justify;">
--9.SU DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH SINH VIEN HOC O LOP CO TEN LA 'CAO DANG 2A'--
<p data-mce-style="text-align: justify;">
--KHAI BAO--
<p data-mce-style="text-align: justify;">
DECLARE CS9 CURSOR FOR
<p data-mce-style="text-align: justify;">
SELECT * FROM SV
<p data-mce-style="text-align: justify;">
WHERE MAL IN (SELECT MAL FROM LOP
<p data-mce-style="text-align: justify;">
WHERE TENL='CAO DANG 2A')
<p data-mce-style="text-align: justify;">
--MO--
<p data-mce-style="text-align: justify;">
OPEN CS9
<p data-mce-style="text-align: justify;">
--XU LY MAU TIN--
<p data-mce-style="text-align: justify;">
FETCH NEXT FROM CS9
<p data-mce-style="text-align: justify;">
WHILE @@FETCH_STATUS=0
<p data-mce-style="text-align: justify;">
BEGIN
<p data-mce-style="text-align: justify;">
FETCH NEXT FROM CS9
<p data-mce-style="text-align: justify;">
END
<p data-mce-style="text-align: justify;">
--DONG--
<p data-mce-style="text-align: justify;">
CLOSE CS9
<p data-mce-style="text-align: justify;">
--HUY--
<p data-mce-style="text-align: justify;">
DEALLOCATE CS9
<p data-mce-style="text-align: justify;">
Bài 4
<p data-mce-style="text-align: justify;">
CREATE DATABASE THUCTAP
USE THUCTAP
CREATE TABLE SV(
MASV CHAR(15) PRIMARY KEY,
HTSV CHAR(40) NOT NULL,
NGAYS SMALLDATETIME,
DC CHAR(50),
INSERT INTO SV
VALUES('SV01','NGOC LAN','10/30/1990','HA NOI')
INSERT INTO SV
VALUES('SV02','NGOC HUONG','11/28/1991','THAI NGUYEN')
INSERT INTO SV
VALUES('SV03','HUONG NHUNG','11/29/1991','NAM DINH')
INSERT INTO SV
VALUES('SV04','HONG NHUNG','11/11/1991','BINH DINH')
INSERT INTO SV
VALUES('SV05','HONG NHI','09/08/1989','NAM DINH')
CREATE TABLE DETAI(
MADT CHAR(10) PRIMARY KEY,
TENDT CHAR(50) NOT NULL,
GVHD CHAR(45),
INSERT INTO DETAI
VALUES('DT01','CSDL','NGUYEN HUONG')
INSERT INTO DETAI
VALUES('DT02','TIN','NGUYEN NGAN')
INSERT INTO DETAI
VALUES('DT03','TOAN','HONG NGAN')
INSERT INTO DETAI
VALUES('DT04','TOAN LY','HONG NAM')
INSERT INTO DETAI
VALUES('DT05','TOAN TIN','HONG NAM')
INSERT INTO DETAI
VALUES('DT06','TIN HOC','HONG NGAN')
CREATE TABLE SV_DETAI(
MADT CHAR(10),
MASV CHAR(15),
NTT CHAR(40) NOT NULL,
KQ INT,
CONSTRAINT KC PRIMARY KEY(MADT,MASV),
CONSTRAINT KN3 FOREIGN KEY (MADT) REFERENCES DETAI(MADT),
CONSTRAINT KN4 FOREIGN KEY (MASV) REFERENCES SV(MASV),
INSERT INTO SV_DETAI
VALUES('DT01','SV01','HA NOI','7')
INSERT INTO SV_DETAI
VALUES('DT02','SV02','NINH BINH','6')
INSERT INTO SV_DETAI
VALUES('DT03','SV03','NINH THUAN','8')
INSERT INTO SV_DETAI
VALUES('DT04','SV04','BINH THUAN','9')
INSERT INTO SV_DETAI
VALUES('DT05','SV05','BINH MINH','5')
--1.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN THAM GIA THUC TAP TAI QUE--
CREATE VIEW SVTT
AS
SELECT *
FROM SV
WHERE MASV IN (SELECT MASV FROM SV_DETAI
WHERE DC=NTT)
SELECT * FROM SVTT
--2.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO KET QUA CAO NHAT--
CREATE VIEW KQCN
AS
SELECT *
FROM SV
WHERE MASV IN(SELECT MASV FROM SV_DETAI
WHERE KQ IN(SELECT MAX(KQ) FROM SV_DETAI))
--3.TAO VIEW DE TONG HOP THONG TIN VE MOI GIAO VIEN DA VA DANG HUONG DAN BAO NHIEU SINH VIEN THUC TAP--
CREATE VIEW SL
AS
SELECT GVHD,COUNT(DETAI.MADT) AS SOSV
FROM DETAI,SV_DETAI
WHERE DETAI.MADT=SV_DETAI.MADT
GROUP BY GVHD
SELECT * FROM SL
--4.TAO THU TUC CO THAM SO VAO LA @GVHD DE DUA RA DANH SACH CAC SINH VIEN DO GIAO VIEN TREN DANG HUONG DAN--
CREATE PROC DSSV
@GVHD CHAR(45)
AS
SELECT * FROM SV
WHERE MASV IN(SELECT MASV FROM SV_DETAI
WHERE MADT IN(SELECT MADT FROM DETAI
WHERE GVHD=@GVHD))
DSSV 'HONG NAM'
--5.TAO THU TUC CO THAM SO VAO LA @NTT DE DUA RA DANH SACH CAC SINH VIEN THUC TAP TAI DIA DIEM TREN--
CREATE PROC DSSVTT
@NTT CHAR(40)
AS
SELECT * FROM SV
WHERE MASV IN(SELECT MASV FROM SV_DETAI
WHERE NTT=@NTT)
DSSVTT 'NINH BINH'
--6.TAO THU TUC DE DUA RA DANH SACH CAC DE TAI CHUA TUNG CO SINH VIEN NAO THAM GIA DANG KY THUC TAP--
CREATE PROC DSDT
AS
SELECT *
FROM DETAI
WHERE MADT NOT IN(SELECT MADT FROM SV_DETAI)
EXEC DSDT
--7.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG SV_DETAI.NEU KET QUA THUC TAP NHO HON 0
--THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY
--KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --
CREATE TRIGGER TG7
ON SV_DETAI
FOR INSERT
AS
IF EXISTS (SELECT KQ FROM SV_DETAI
WHERE KQ<0)
BEGIN
PRINT 'DU LIEU NHAP VAO KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO SV_DETAI
VALUES ('DT07','SV07','THAI NGUYEN',-9)
--8.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC SINH VIEN PHAI THUC TAP LAI (NHUNG
--SINH VIEN CO KET QUA THUC TAP<5 YEU CAU PHAI THUC TAP LAI)--
--KHAI BAO--
DECLARE CS8 CURSOR FOR
SELECT * FROM SV
WHERE MASV IN (SELECT MASV FROM SV_DETAI
WHERE KQ<5)
--MO--
OPEN CS8
--XU LY MAU TIN--
DECLARE @MASV CHAR(10),@HTSV CHAR(20),@NGAYS SMALLDATETIME,@DC CHAR(20)
FETCH NEXT FROM CS8
INTO @MASV,@HTSV,@NGAYS,@DC
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MASV+@HTSV+CONVERT(CHAR(20),@NGAYS)+@DC
FETCH NEXT FROM CS8
INTO @MASV,@HTSV,@NGAYS,@DC
END
--DONG--
CLOSE CS8
--HUY--
DEALLOCATE CS8
--9.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC DE TAI CO KET QUA THUC TAP CAO NHAT--
--KHAI BAO--
DECLARE CS9 CURSOR FOR
SELECT * FROM DETAI
WHERE MADT IN (SELECT MADT FROM SV_DETAI
WHERE KQ IN (SELECT MAX(KQ) FROM SV_DETAI))
--MO--
OPEN CS9
--XU LY MAU TIN--
FETCH NEXT FROM CS9
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM CS9
END
--DONG--
CLOSE CS9
--HUY--
DEALLOCATE CS9
Bai 6
CREATE DATABASE QUANLYDUAN
USE QUANLYDUAN
CREATE TABLE NHANVIEN(
MANV CHAR(10) PRIMARY KEY,
HOTEN CHAR(40) NOT NULL,
NGAYS SMALLDATETIME,
GOITINH CHAR(3) --GIOI TINH--
CREATE TABLE DUAN(
MADA CHAR(10) PRIMARY KEY,
TENDA CHAR(30) NOT NULL,
NGANSACH MONEY
CREATE TABLE THAMGIA(
MADA CHAR(10),
MANV CHAR(10),
TGBD SMALLDATETIME NOT NULL, --THOI GIAN BAT DAU--
TGKT SMALLDATETIME NOT NULL, --THOI GIAN KET THUC--
CONSTRAINT KC_THAMGIA PRIMARY KEY (MADA,MANV),
CONSTRAINT KN_THAMGIA FOREIGN KEY (MADA) REFERENCES DUAN(MADA),
CONSTRAINT KN1_THAMGIA FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV),
/*2.tao view de tong hop thong tin ve cac nhan vien chua tham gia bat ky du an nao*/
CREATE VIEW VD2
AS
SELECT * FROM NHANVIEN
WHERE MANV NOT IN (SELECT MANV FROM THAMGIA)
--3.tao view de tong hop thong tin ve cac du an co ngan sach lon nhat--
CREATE VIEW VD3
AS
SELECT * FROM DUAN
WHERE NGANSACH IN (SELECT MAX(NGANSACH) FROM DUAN)
--tao view de tong hop thong tin ve moi nhan vien da tham gia bao nhieu du an--
CREATE VIEW VD31
AS
SELECT NHANVIEN.MANV,HOTEN,NGAYS,GOITINH,COUNT(MADA) AS SODUAN
FROM NHANVIEN,THAMGIA
WHERE NHANVIEN.MANV=THAMGIA.MANV
GROUP BY NHANVIEN.MANV,HOTEN,NGAYS,GOITINH
--4.tao thu tuc co tham so la @tenda de dua ra danh sach cac nhan vien tham gia du an tren--
CREATE PROC VD4
@TENDA CHAR(30)
AS
SELECT * FROM NHANVIEN
WHERE MANV IN (SELECT MANV FROM THAMGIA
WHERE MADA IN (SELECT MADA FROM DUAN
WHERE TENDA=@TENDA))
EXEC VD4 'DAU TU'
/* 5.TAO THU TUC CO THAM SO LA @TGKT VA @MADA DE DUA RA DANH SACH CAC NHAN VIEN PHAI HOAN THANH
DU AN DO VAO NGAY TREN*/
ALTER PROC VD5
@TGKT SMALLDATETIME,@MADA CHAR(10)
AS
SELECT * FROM NHANVIEN
WHERE MANV IN (SELECT MANV FROM THAMGIA
WHERE MADA=@MADA AND CONVERT(CHAR(10),TGKT)=CONVERT(CHAR(10),@TGKT))
DECLARE @TGKT SMALLDATETIME,@MADA CHAR (10)
SET @TGKT='10/10/2010'
EXEC VD5 @TGKT, 'DA1'
/*6.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DUAN.NEU NGANSACH NHO HON 0 THI IN RA MAN HINH
THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO BANG.
NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */
CREATE TRIGGER TG6
ON DUAN
FOR INSERT
AS
IF EXISTS (SELECT NGANSACH FROM DUAN
WHERE NGANSACH<0)
BEGIN
PRINT 'DU LIEU NHAP VAO KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
/*7.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH NHAN VIEN BAT DAU THUC HIEN DU AN "PHONG
CHONG BENH MAT HOT" TU NGAY 20/11/2005 */
--KHAI BAO--
DECLARE CS7 CURSOR FOR
SELECT * FROM NHANVIEN
WHERE MANV IN (SELECT MANV FROM THAMGIA
WHERE TGBD='11/20/2005'
AND MADA IN (SELECT MADA FROM DUAN
WHERE TENDA='PHONG CHONG BENH MAT HOT'))
--MO--
OPEN CS7
--XU LY MAU TIN--
FETCH NEXT FROM CS7
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM CS7
END
--DONG--
CLOSE CS7
--HUY--
DEALLOCATE CS7
/*8.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH CAC DU AN CHUA TUNG CO NHAN VIEN NAO THAM GIA
DANG KY */
--KHAI BAO--
DECLARE CS8 CURSOR FOR
SELECT * FROM DUAN
WHERE MADA NOT IN (SELECT MADA FROM THAMGIA)
--MO--
OPEN CS8
--XU LY MAU TIN--
FETCH NEXT FROM CS8
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM CS8
END
--DONG--
CLOSE CS8
--HUY--
DEALLOCATE CS8
Bai 7
CREATE DATABASE QUANLYTAISAN
USE QUANLYTAISAN
create table dmphong
(map nvarchar(10)primary key,
tenp nvarchar(30)not null)
create table dmtaisan
(mats nvarchar(10)primary key,
tents nvarchar(30)not null,
donvi nvarchar(20),--DON VI TINH--
gia int)--DON GIA
create table phanphoi
(mats nvarchar(10)not null,
map nvarchar(10)not null,
soluong int,
ngaypp datetime,--NGAY PHAN PHOI TAI SAN--
ghichu nvarchar(20),
constraint kc primary key (mats,map),
constraint kn1 foreign key(mats)references dmtaisan(mats),
constraint kn2 foreign key (map)references dmphong(map) )
--2.TAO VIEW DE TONG HOP THONG TIN VE CAC TAI SAN CO DON GIA LON NHAT--
CREATE VIEW VD2
AS
SELECT * FROM DMTAISAN
WHERE GIA IN (SELECT MAX(GIA) FROM DMTAISAN)
--3.TAO VIEW DE TONG HOP THONG TIN VE NHUNG TAI SAN CHUA TUNG DUOC PHAN PHOI CHO CAC PHONG DE SU DUNG--
CREATE VIEW VD3
AS
SELECT * FROM DMTAISAN
WHERE MATS NOT IN (SELECT MATS FROM PHANPHOI)
--4.TAO THU TUC CO THAM SO LA @TENP DE DUA RA DANH SACH CAC TAI SAN DUOC PHAN PHOI VAO PHONG TREN--
CREATE PROC VD4
@TENP CHAR(30)
AS
SELECT * FROM DMTAISAN
WHERE MATS IN (SELECT MATS FROM PHANPHOI
WHERE MAP IN (SELECT MAP FROM DMPHONG
WHERE TENP=@TENP))
EXEC VD4 'LAN'
--5.TAO THU TUC CO THAM SO LA @TENTS DE DUA RA DANH SACH CAC PHONG DUOC PHAN PHOI TAI SAN TREN--
CREATE PROC VD5
@TENTS CHAR(20)
AS
SELECT DMTAISAN.*
FROM DMTAISAN,PHANPHOI
WHERE DMTAISAN.MATS=PHANPHOI.MATS AND TENTS=@TENTS
EXEC VD5 'SAT'
/*6.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DMTAISAN.NEU DON GIA NHAP VAO NHO HON 0
THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP
NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */
CREATE TRIGGER TG6
ON DMTAISAN
FOR INSERT
AS
IF EXISTS (SELECT GIA FROM DMTAISAN
WHERE GIA<0)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
Bai8
CREATE DATABASE QUANLYDIEMTHI
USE QUANLYDIEMTHI
create table sinhvien(
masv nvarchar(10) primary key,
tensv nvarchar(30) not null,
ngaysinh datetime not null,
gioitinh nvarchar(10) not null,
quequan nvarchar(30), )
create table monhoc(
mam nvarchar(10) primary key,
tenm nvarchar(20) not null,
dvht int )
create table diem(
mam nvarchar(10) not null,
masv nvarchar(10) not null,
diemthi float not null,
constraint kc primary key(mam,masv),
constraint kn1 foreign key(mam) references monhoc(mam),
constraint kn2 foreign key(masv) references sinhvien(masv) )
/*2.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO DIEM THI CAO NHAT CUA MON HOC CO TEN LA
"CO SO DU LIEU"*/
CREATE VIEW VD2
AS
SELECT * FROM SINHVIEN
WHERE MASV IN (SELECT MASV FROM DIEM
WHERE DIEMTHI IN (SELECT MAX(DIEMTHI) FROM DIEM)
AND MAM IN (SELECT MAM FROM MONHOC
WHERE TENM='CO SO DU LIEU'))
--3.TAO THU TUC CO THAM SO LA @TENM DE DUA RA DANH SACH SINH VIEN PHAI THI LAI MON HOC TREN--
CREATE PROC VD3
@TENM CHAR(20)
AS
SELECT * FROM SINHVIEN
WHERE MASV IN (SELECT MASV FROM DIEM
WHERE DIEMTHI<5 AND MAM IN (SELECT MAM FROM MONHOC
WHERE TENM=@TENM))
EXEC VD3 'SQL'
--4.DUNG KIEU DU LIEU CURSOR DE DUA RA TRUNG BINH DIEM THI CUA TUNG MON HOC--
--KHAI BAO--
DECLARE CS4 CURSOR FOR
SELECT MAM,AVG(DIEMTHI) AS DTB
FROM DIEM
GROUP BY MAM
--MO--
OPEN CS4
--XU LY MAU TIN--
FETCH NEXT FROM CS4
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM CS4
END
--DONG--
CLOSE CS4
--HUY--
DEALLOCATE CS4
Bai 9
CREATE DATABASE QUANLYGIAOVIEN
USE QUANLYGIAOVIEN
CREATE TABLE GIAOVIEN(
MAGV CHAR(10) PRIMARY KEY,
TENGV CHAR(40) NOT NULL,
DC CHAR(40),
DT CHAR(15)
CREATE TABLE HOCVI(
MAHV CHAR(10) PRIMARY KEY,
TENHV CHAR(30) NOT NULL
CREATE TABLE CHUYENNGANH(
MACN CHAR(10) PRIMARY KEY,
TENCN CHAR(30) NOT NULL
CREATE TABLE GV_HV_CN(
MAGV CHAR(10),
MAHV CHAR(10),
MACN CHAR(10),
NAM INT,--NAM DAT HOC VI--
CONSTRAINT KC_GV_HV_CN PRIMARY KEY (MAGV,MAHV,MACN),
CONSTRAINT KN_GV_HV_CN FOREIGN KEY (MAGV) REFERENCES GIAOVIEN(MAGV),
CONSTRAINT KN1_GV_HV_CN FOREIGN KEY (MAHV) REFERENCES HOCVI(MAHV),
CONSTRAINT KN2_GV_HV_CN FOREIGN KEY (MACN) REFERENCES CHUYENNGANH(MACN)
--2.TAO VIEW DE CHO BIET THONG TIN VE CAC GIAO VIEN CO HOC VI LA "TIEN SY"--
CREATE VIEW VD2
AS
SELECT * FROM GIAOVIEN
WHERE MAGV IN (SELECT MAGV FROM GV_HV_CN
WHERE MAHV IN (SELECT MAHV FROM HOCVI
WHERE TENHV='TIEN SY'))
SELECT * FROM VD2
--3.TAO VIEW DE CHO BIET THONG TIN VE CAC GIAO VIEN CO CHUYEN NGANH "KINH TE"--
CREATE VIEW VD3
AS
SELECT * FROM GIAOVIEN
WHERE MAGV IN (SELECT MAGV FROM GV_HV_CN
WHERE MACN IN (SELECT MACN FROM CHUYENNGANH
WHERE TENCN='KINH TE'))
SELECT * FROM VD3
--4.TAO VIEW DE CHO BIET THONG TIN VE CAC GIAO VIEN CO DIA CHI O "THAI NGUYEN"--
CREATE VIEW VD4
AS
SELECT * FROM GIAOVIEN
WHERE DC='THAI NGUYEN'
/*5.TAO THU TUC CO THAM SO VAO LA @NAM DE DUA RA TEN CUA CAC GIAO VIEN NHAN HOC VI "TIEN
SY" VAO NAM TREN*/
ALTER PROC VD5
@NAM INT
AS
SELECT * FROM GIAOVIEN
WHERE MAGV IN (SELECT MAGV FROM GV_HV_CN
WHERE NAM=@NAM AND MAHV IN (SELECT MAHV FROM HOCVI
WHERE TENHV='TIEN SY'))
EXEC VD5 2009
--6.TAO THU TUC NHAP DU LIEU CHO BANG GIAOVIEN--
CREATE PROC VD6
@MAGV CHAR(10),@TENGV CHAR(40),@DC CHAR(40),@DT CHAR(15)
AS
INSERT INTO GIAOVIEN
VALUES(@MAGV,@TENGV,@DC,@DT)
VD6 'GV5','HANG','VINH PHUC','157148'
/*7.TAO THU TUC CO THAM SO VAO LA @TENHV DE DUA RA THONG TIN VE CAC GIAO VIEN CO TEN HOC VI TREN*/
CREATE PROC VD7
@TENHV CHAR(40)
AS
SELECT * FROM GIAOVIEN
WHERE MAGV IN (SELECT MAGV FROM GV_HV_CN
WHERE MAHV IN (SELECT MAHV FROM HOCVI
WHERE TENHV=@TENHV))
EXEC VD7 'THAC SY'
/*8.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG GV_HV_CN.NEU NAM NHAP VAO NHO HON 0
THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP
NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */
CREATE TRIGGER TG8
ON GV_HV_CN
FOR INSERT
AS
IF EXISTS(SELECT NAM FROM GV_HV_CN
WHERE NAM<0)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO GV_HV_CN
VALUES('GV5','HV2','CN2',-2010)
/*9.DUNG KIEU DU LIEU CURSOR DE DUA RA THONG TIN VE TUNG GIAO VIEN CUA TUNG CHUYEN NGANH*/
--KHAI BAO--
DECLARE CS9 CURSOR FOR
SELECT MACN,GIAOVIEN.MAGV,TENGV,DC,DT
FROM GIAOVIEN,GV_HV_CN
WHERE GIAOVIEN.MAGV=GV_HV_CN.MAGV
GROUP BY MACN,GIAOVIEN.MAGV,TENGV,DC,DT
--MO--
OPEN CS9
--XU LY MAU TIN--
DECLARE @B1 CHAR(10),@B2 CHAR(10),@B3 CHAR(30),@B4 CHAR(30),@B5 CHAR(15)
FETCH NEXT FROM CS9
INTO @B1,@B2,@B3,@B4,@B5
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @B1+@B2+@B3+@B4+@B5
FETCH NEXT FROM CS9
INTO @B1,@B2,@B3,@B4,@B5
END
--DONG--
CLOSE CS9
--HUY--
DEALLOCATE CS9
Bài 10
CREATE DATABASE QUANLYDOANVIEN
USE QUANLYDOANVIEN
CREATE TABLE TOCONGDOAN(
MATCD CHAR(10) PRIMARY KEY,
TENTCD CHAR(30) NOT NULL
CREATE TABLE CONGDOAN(
MACDV CHAR(10) PRIMARY KEY,--MA CONG DOAN VIEN--
TENCDV CHAR(30) NOT NULL,--TEN CONG DOAN VIEN--
NGAYSINH SMALLDATETIME,
NGAYV SMALLDATETIME NOT NULL,--NGAY RA NHAP CONG DOAN--
MATCD CHAR(10) NOT NULL,
CONSTRAINT KN_CONGDOAN FOREIGN KEY (MATCD) REFERENCES TOCONGDOAN(MATCD)
CREATE TABLE KHENTHUONG(
MACDV CHAR(10),
MSKT CHAR(10),--MA SO KHEN THUONG--
LYDO CHAR(40),--LY DO KHEN THUONG--
NAM INT,--NAM KHEN THUONG--
CONSTRAINT KC_KHENTHUONG PRIMARY KEY (MACDV,MSKT),
CONSTRAINT KN_KHENTHUONG FOREIGN KEY (MACDV) REFERENCES CONGDOAN(MACDV)
/*2.HAY TAO VIEW DE TONG HOP THONG TIN VE CAC CONG DOAN VIEN DA DUOC KHEN THUONG CUA TO
CONG DOAN "HE THONG THONG TIN"*/
CREATE VIEW VD2
AS
SELECT CONGDOAN.* FROM CONGDOAN,KHENTHUONG,TOCONGDOAN
WHERE CONGDOAN.MACDV=KHENTHUONG.MACDV AND CONGDOAN.MATCD=TOCONGDOAN.MATCD
AND TENTCD='HE THONG THONG TIN'
/*3.HAY TAO VIEW CHO BIET THONG TIN VE CAC CONG DOAN VIEN CHUA TUNG DUOC KHEN THUONG*/
CREATE VIEW VD3
AS
SELECT * FROM CONGDOAN
WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG)
/*4.HAY TAO VIEW DE CHO BIET THONG TIN VE CAC CONG DOAN VIEN DUOC KHEN THUONG VE VIEC HOAN
THANH DE TAI CAP BO*/
CREATE VIEW VD4
AS
SELECT * FROM CONGDOAN
WHERE MACDV IN (SELECT MACDV FROM KHENTHUONG
WHERE LYDO='HOAN THANH DE TAI CAP BO')
/*5.TAO THU TUC CO THAM SO VAO LA @TENTCD DE DUA RA THONG TIN VE NHUNG DOAN VIEN CUA CHI DOAN TREN*/
CREATE PROC VD5
@TENTCD CHAR(30)
AS
SELECT * FROM CONGDOAN
WHERE MATCD IN(SELECT MATCD FROM TOCONGDOAN
WHERE TENTCD=@TENTCD)
EXEC VD5 'HOC SINH'
/*6.TAO THU TUC CO THAM SO VAO LA@TENTCD,@NAM DE DUA RA THONG TIN VE NHUNG CONG DOAN VIEN
CUA TO CONG DOAN DA DUOC KHEN THUONG VAO NAM TREN */
CREATE PROC VD6
@TENTCD CHAR(30), @NAM INT
AS
SELECT CONGDOAN.* FROM CONGDOAN,KHENTHUONG,TOCONGDOAN
WHERE CONGDOAN.MACDV=KHENTHUONG.MACDV AND CONGDOAN.MATCD=TOCONGDOAN.MATCD
AND TENTCD=@TENTCD AND NAM=@NAM
EXEC VD6 'HE THONG THONG TIN', 2009
/*7.TAO THU TUC CO THAM SO VAO LA @TENCD DE XOA THONG TIN VE NHUNG CONG DOAN VIEN THUOC
CHI DOAN TREN*/
CREATE PROC VD7
@TENTCD CHAR(30)
AS
DELETE FROM CONGDOAN
WHERE MATCD IN(SELECT MATCD FROM TOCONGDOAN
WHERE TENTCD=@TENTCD)
EXEC VD7 'THONG TIN KINH TE'
/*8.TAO TRIGGER DE KIEM TRA VIEC NHAP DU LIEU CHO BANG KHENTHUONG.NEU NAM KHEN THUONG NHO
HON 0 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG
DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */
CREATE TRIGGER TG8
ON KHENTHUONG
FOR INSERT
AS
IF EXISTS (SELECT NAM FROM KHENTHUONG
WHERE NAM<0)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO KHENTHUONG
VALUES ('CDV3','04','OH MY GOOD',-2010)
/*9.SU DUNG KIEU DU LIEU CURSOR DE TONG HOP THONG TIN VE NHUNG CONG DOAN VIEN CHUA TUNG DUOC
KHEN THUONG TRONG NAM 2007*/
--KHAI BAO--
DECLARE CS9 CURSOR FOR
SELECT * FROM CONGDOAN
WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG
WHERE NAM=2007)
--MO--
OPEN CS9
--XU LY MAU TIN--
FETCH NEXT FROM CS9
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM CS9
END
--DONG--
CLOSE CS9
--HUY--
DEALLOCATE CS9
BÀi 11
CREATE DATABASE QUANLYDIEM
USE QUANLYDIEM
CREATE TABLE SINHVIEN(
MASV CHAR(10) PRIMARY KEY,
HOTENSV CHAR(40) NOT NULL,
NGAYSINH SMALLDATETIME,
DIACHI CHAR(40),
DVHT INT--DON VI HOC TRINH--
CREATE TABLE MON(
MAM CHAR(10) PRIMARY KEY,
TENM CHAR(30)
CREATE TABLE DIEM(
MAM CHAR(10),
MASV CHAR(10),
PHACH CHAR(10),--SO PHACH--
DIEM FLOAT,--DIEM THI--
CONSTRAINT KC_DIEM PRIMARY KEY(MAM,MASV,PHACH),
CONSTRAINT KN_DIEM FOREIGN KEY (MAM) REFERENCES MON(MAM),
CONSTRAINT KN1_DIEM FOREIGN KEY (MASV) REFERENCES SINHVIEN(MASV)
/*2.TAP VIEW DE TONG HOP THONG TIN VE SINH VIEN CO DIEM THI CAO NHAT CUA MON "CSDL"*/
CREATE VIEW VD2
AS
SELECT * FROM SINHVIEN
WHERE MASV IN (SELECT MASV FROM DIEM
WHERE DIEM IN (SELECT MAX(DIEM) FROM DIEM)
AND MAM IN (SELECT MAM FROM MON
WHERE TENM='CSDL'))
/*3.TAO VIEW DE TONG HOP THONG TIN VE SINH VIEN CO DIA CHI O "THAI NGUYEN"*/
CREATE VIEW VD3
AS
SELECT * FROM SINHVIEN
WHERE DIACHI='THAI NGUYEN'
/*4.TAO VIEW CHO BIET THONG TIN VE CAC SINH VIEN SINH TRUOC NAM 1980*/
CREATE VIEW VD4
AS
SELECT * FROM SINHVIEN
WHERE YEAR(NGAYSINH)<1980
/*5.TAO THU TUC CO THAM SO DAU VAO LA @TENM DE DUA RA DANH SACH CAC SINH VIEN CO DIEM THI
CHUA DAT CUA MON HOC TREN*/
ALTER PROC VD5
@TENM CHAR(30)
AS
SELECT * FROM SINHVIEN
WHERE MASV IN (SELECT MASV FROM DIEM
WHERE DIEM<5 AND MAM IN (SELECT MAM FROM MON
WHERE TENM=@TENM))
EXEC VD5 'JAVA'
/*6.TAO THU TUC CO THAM SO DAU VAO @DIEM DE DUA RA DANH SACH CAC SINH VIEN CO DIEM THI
THAP HON DIEM TREN CUA MON HOC "CSDL"*/
CREATE PROC VD6
@DIEM FLOAT
AS
SELECT * FROM SINHVIEN
WHERE MASV IN (SELECT MASV FROM DIEM
WHERE DIEM<@DIEM AND MAM IN (SELECT MAM FROM MON
WHERE TENM='CSDL'))
EXEC VD6 9
/*7.TAO TRIGGER DE KIEM TRA VIEC NHAP DU LIEU CHO BANG DIEM.NEU DIEM NHO HON 0 HOAC DIEM
LON HON 10 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY
KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG"*/
CREATE TRIGGER TG8
ON DIEM
FOR INSERT
AS
IF EXISTS (SELECT DIEM FROM DIEM
WHERE DIEM<0 OR DIEM>10)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO DIEM
VALUES ('M3','SV1','P07',12)
/*8.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC SINH VIEN CO DIEM THI CAO
NHAT CUA CAC MON HOC*/
--TAO VIEW TRUNG GIAN--
ALTER VIEW MAXDIEM
AS
SELECT MAM,MAX(DIEM) AS DIEMCAONHAT
FROM DIEM
GROUP BY MAM
--KHAI BAO--
DECLARE CS8 CURSOR FOR
SELECT DIEM.MAM,SINHVIEN.MASV,HOTENSV,NGAYSINH,DIACHI,DVHT,DIEM
FROM SINHVIEN,MAXDIEM,DIEM
WHERE SINHVIEN.MASV=DIEM.MASV AND DIEM.MAM=MAXDIEM.MAM AND DIEM=DIEMCAONHAT
GROUP BY DIEM.MAM,SINHVIEN.MASV,HOTENSV,NGAYSINH,DIACHI,DVHT,DIEM
--MO--
OPEN CS8
--XU LY MAU TIN--
PRINT 'DANH SACH SINH VIEN CO DIEM THI CAO NHAT CUA CAC MON HOC LA'
PRINT 'MAM MASV TENSVNGAYSINHDVHTDIEM'
DECLARE @B1 CHAR(10),@B2 CHAR(10),@B3 CHAR(20),@B4 SMALLDATETIME,@B5 CHAR(20),@B6 INT,
@B7 FLOAT
FETCH NEXT FROM CS8
INTO @B1,@B2,@B3,@B4,@B5,@B6,@B7
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @B1+@B2+@B3+CONVERT(CHAR(15),@B4)+@B5+CONVERT(CHAR(10),@B6)+CONVERT(CHAR(5),@B7)
FETCH NEXT FROM CS8
INTO @B1,@B2,@B3,@B4,@B5,@B6,@B7
END
--DONG--
CLOSE CS8
--HUY--
DEALLOCATE CS8
Bai 12
CREATE DATABASE QUANLYKHACHSAN
USE QUANLYKHACHSAN
CREATE TABLE KHACHHANG(
MAK CHAR(10) PRIMARY KEY,
TENK CHAR(40) NOT NULL,
DIACHI CHAR(40),
SDT CHAR(15)
DROP TABLE PHONG (
MAP CHAR(10) PRIMARY KEY,
TENP CHAR(30) NOT NULL,
LOAIP CHAR(20),--LOAI PHONG--
DONGIA FLOAT
CREATE TABLE DATPHONG(
MAK CHAR(10),
MAP CHAR(10),
NGAYNHANSMALLDATETIME,--NGAY NHAN PHONG--
NGAYTRASMALLDATETIME,--NGAY TRA PHONG--
CONSTRAINT KC_DATPHONG PRIMARY KEY(MAK,MAP,NGAYNHAN),
CONSTRAINT KN_DATPHONG FOREIGN KEY (MAK) REFERENCES KHACHHANG(MAK),
CONSTRAINT KN1_DATPHONG FOREIGN KEY (MAP) REFERENCES PHONG(MAP),
/*2.TAO THU TUC DE TANG GIA CUA TAT CA CAC PHONG TRONG KHACH SAN LEN 5%*/
CREATE PROC VD2
AS
UPDATE PHONG
SET DONGIA=DONGIA*1.05
EXEC VD2
/*3.TAO VIEW DE TONG HOP THONG TIN VE CAC KHACH HANG HIEN TAI DANG THUE PHONG TAI KHACH SAN*/
CREATE VIEW VD3
AS
SELECT * FROM KHACHHANG
WHERE MAK IN(SELECT MAK FROM DATPHONG
WHERE NGAYTRA>GETDATE())
/*4.TAO VIEW DE TONG HOP THONG TIN HOA DON THANH TOAN CUA KHACH HANG(HOA DON GOM CAC
THUOC TINH SAU:(MAK,TENK,MAP,DONGIA,NGAYNHAN,NGAYTRA,THANH TIEN)*/
CREATE VIEW VD4
AS
SELECT KHACHHANG.MAK,TENK,PHONG.MAP,DONGIA,NGAYNHAN,NGAYTRA,
CONVERT(INT,(NGAYTRA-NGAYNHAN))*DONGIA AS THANHTIEN
FROM KHACHHANG,PHONG,DATPHONG
WHERE KHACHHANG.MAK=DATPHONG.MAK AND PHONG.MAP=DATPHONG.MAP
GROUP BY KHACHHANG.MAK,TENK,PHONG.MAP,DONGIA,NGAYNHAN,NGAYTRA
/*5.TAO VIEW DE TONG HOP THONG TIN VE CAC KHACH HANG CO SO NGAY DAT PHONG LON NHAT*/
CREATE VIEW TG
AS
SELECT KHACHHANG.MAK,TENK,DIACHI,SDT,SUM(CONVERT(INT,(NGAYTRA-NGAYNHAN))) AS NGAYTHUE
FROM KHACHHANG,DATPHONG
WHERE KHACHHANG.MAK=DATPHONG.MAK
GROUP BY KHACHHANG.MAK,TENK,DIACHI,SDT
CREATE VIEW NGAYMAX
AS
SELECT * FROM TG
WHERE NGAYTHUE IN (SELECT MAX(NGAYTHUE)
FROM TG)
SELECT * FROM NGAYMAX
/*6.TAO THU TUC DE DUA RA DANH SACH CAC PHONG HIEN TAI CHUA CO KHACH HANG DAT PHONG*/
CREATE PROC VD6
AS
SELECT * FROM PHONG
WHERE MAP NOT IN (SELECT MAP FROM DATPHONG
WHERE NGAYTRA>GETDATE())
EXEC VD6
/*7.TAO THU TUC DE DUA RA DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG*/
CREATE PROC VD7
AS
SELECT * FROM KHACHHANG
WHERE MAK IN(SELECT MAK FROM DATPHONG
WHERE CONVERT(CHAR(10),NGAYTRA)=CONVERT(CHAR(10),GETDATE()))
EXEC VD7
/*8.TAO TRIGGER DE KIEM TRA DU LIEU KHI CAP NHAT VAO BANG PHONG PHAI DAM BAO DU LIEU DONGIA>0*/
CREATE TRIGGER TG8
ON PHONG
FOR INSERT
AS
IF EXISTS (SELECT DONGIA FROM PHONG
WHERE DONGIA<0)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
/*9.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DATPHONG PHAI DAM BAO NGAYTRA PHONG LUON
LON HON HOAC BANG NGAY NHAN PHONG*/
ALTER TRIGGER TG9
ON DATPHONG
FOR INSERT
AS
IF EXISTS (SELECT NGAYTRA,NGAYNHAN FROM DATPHONG
WHERE CONVERT(INT,NGAYTRA)<CONVERT(INT,NGAYNHAN))
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO DATPHONG
VALUES('K03','P03','11/20/2010','11/19/2010')
/*10.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG*/
--KHAI BAO--
DECLARE CS10 CURSOR FOR
SELECT KHACHHANG.* FROM KHACHHANG
WHERE MAK IN(SELECT MAK FROM DATPHONG
WHERE CONVERT(CHAR(10),NGAYTRA)=CONVERT(CHAR(10),GETDATE()))
--MO--
OPEN CS10
--XU LY--
PRINT 'DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG LA'
PRINT 'MAKTENKDIACHISDT'
DECLARE @MAK CHAR(10),@TENK CHAR(30),@DIACHI CHAR(30),@SDT CHAR(15)
FETCH NEXT FROM CS10
INTO @MAK,@TENK,@DIACHI,@SDT
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MAK+@TENK+@DIACHI+@SDT
FETCH NEXT FROM CS10
INTO @MAK,@TENK,@DIACHI,@SDT
END
--DONG--
CLOSE CS10
--HUY--
DEALLOCATE CS10
Bai 13
CREATE DATABASE QUANLYNHANVIEN
USE QUANLYNHANVIEN
CREATE TABLE PHONG(
MAP CHAR(10) PRIMARY KEY,
TENP CHAR(30) NOT NULL,
DIACHIP CHAR(30),
SDT CHAR(15)
CREATE TABLE NHANVIEN(
MANV CHAR(10) PRIMARY KEY,
TENNV CHAR(40) NOT NULL,
DIACHI CHAR(40),
MAP CHAR(10),
LUONG INT,--LUONG CUA NHAN VIEN--
CONSTRAINT KN_NHANVIEN FOREIGN KEY(MAP) REFERENCES PHONG(MAP)
CREATE TABLE NGOAINGU(
MANN CHAR(10) PRIMARY KEY,
TENN CHAR(30) NOT NULL
CREATE TABLE TDNN(--TRINH DO NGOAI NGU--
MANV CHAR(10),
MANN CHAR(10),
TRINHDO CHAR(30) NOT NULL,
CONSTRAINT KC_TDNN PRIMARY KEY(MANV,MANN),
CONSTRAINT KN_TDNN FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV),
CONSTRAINT KN1_TDNN FOREIGN KEY(MANN) REFERENCES NGOAINGU(MANN),
--2.TAO VIEW DE TONG HOP THONG TIN VE MOI PHONG HIEN TAI CO BAO NHIEU NHAN VIEN--
CREATE VIEW VD2
AS
SELECT PHONG.MAP,TENP,DIACHIP,SDT,COUNT(NHANVIEN.MAP) AS SONV
FROM PHONG,NHANVIEN
WHERE PHONG.MAP=NHANVIEN.MAP
GROUP BY phong.MAP,TENP,DIACHIP,SDT
--3/ Tạo View để tổng hợp thông tin về các nhân viên chưa tích luỹ được trình độ ngoại ngữ nào--
CREATE VIEW VD3
AS
SELECT * FROM NHANVIEN
WHERE MANV NOT IN (SELECT MANV FROM TDNN)
--4/ Tạo View để tổng hợp thông tin về các nhân viên có lương cao nhất trong phòng họ làm việc.--
CREATE VIEW TG
AS
SELECT MAP,MAX(LUONG) AS LUONGCAONHAT
FROM NHANVIEN
GROUP BY MAP
CREATE VIEW LUONGMAX
AS
SELECT NHANVIEN.*
FROM NHANVIEN,TG
WHERE NHANVIEN.MAP=TG.MAP AND LUONG=LUONGCAONHAT
/*5/ Tạo thủ tục có tham số vào @TenNN và @TrinhDo để đưa ra danh các nhân viên biết ngoại ngữ
và trình độ trên. */
CREATE PROC VD5
@TENN CHAR(30),@TRINHDO CHAR(30)
AS
SELECT * FROM NHANVIEN
WHERE MANV IN (SELECT MANV FROM TDNN
WHERE TRINHDO=@TRINHDO AND MANN IN (SELECT MANN FROM NGOAINGU
WHERE TENN=@TENN))
EXEC VD5 'TIENG ANH','A'
--6/ Tạo thủ tục có tham số vào @TenP để đưa ra tổng số nhân viên hiện có trong phòng này--
ALTER PROC VD6
@TENP CHAR(20)
AS
SELECT PHONG.MAP,COUNT(NHANVIEN.MAP) AS SONV
FROM PHONG,NHANVIEN
WHERE PHONG.MAP=NHANVIEN.MAP AND TENP=@TENP
GROUP BY PHONG.MAP
EXEC VD6 'ABC'
/*7/ Tạo thủ tục có tham số vào là @TenNN, @TenP và @TrinhDo để đưa ra danh các nhân viên
ở phòng này biết ngoại ngữ và trình độ ứng với các tham biến đã cho */
CREATE PROC VD7
@TENNN CHAR(30),@TENP CHAR(20),@TRINHDO CHAR(30)
AS
SELECT NHANVIEN.* FROM NHANVIEN,PHONG,TDNN,NGOAINGU
WHERE NHANVIEN.MANV=TDNN.MANV AND PHONG.MAP=NHANVIEN.MAP
AND NGOAINGU.MANN=TDNN.MANN AND TENN=@TENNN AND TENP=@TENP AND TRINHDO=@TRINHDO
EXEC VD7 'TIENG ANH','ABC','A'
/*8/ Tạo thủ tục có tham số vào @TenP để đưa ra danh các nhân viên có lương cao nhất của phòng này*/
CREATE PROC VD8
@TENP CHAR(20)
AS
SELECT NHANVIEN.*
FROM NHANVIEN,TG,PHONG
WHERE NHANVIEN.MAP=TG.MAP AND TG.MAP=PHONG.MAP AND LUONG=LUONGCAONHAT AND TENP=@TENP
EXEC VD8 'ABC'
/*9/ Tạo Trigger để kiểm tra khi nhập dữ liệu vào bảng NhanVien phải đảm bảo lương của nhân viên
phải >0 */
CREATE TRIGGER tg9
ON NHANVIEN
FOR INSERT
AS
IF EXISTS (SELECT LUONG FROM NHANVIEN
WHERE LUONG<0)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO NHANVIEN
VALUES('NV6','HAI','HA NOI','P04','7000')
--10/ Dùng kiểu dữ liệu CURSOR để tăng lương cho mỗi nhân viên lên 10%.--
--KHAI BAO--
DECLARE CS10 CURSOR FOR
SELECT MANV,TENNV,DIACHI,MAP,(LUONG*1.1) AS LUONGMOI
FROM NHANVIEN
GROUP BY MANV,TENNV,DIACHI,MAP,LUONG
--MO--
OPEN CS10
--XU LY--
PRINT 'DANH SACH NHAN VIEN SAU KHI TANG LUONG LEN 10% LA:'
PRINT 'MANVTENNVDIACHI MAPLUONGMOI'
DECLARE @MANV CHAR(10),@TENNV CHAR(20),@DIACHI CHAR(20),@MAP CHAR(10),@LUONG INT
FETCH NEXT FROM CS10
INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MANV+@TENNV+@DIACHI+@MAP+CONVERT(CHAR(10),@LUONG)
FETCH NEXT FROM CS10
INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG
END
--DONG--
CLOSE CS10
--HUY--
DEALLOCATE CS10
--11/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có ngoại ngữ tiếng anh trình độ C--
--KHAI BAO--
DECLARE CS11 CURSOR FOR
SELECT NHANVIEN.MANV,TENNV,DIACHI,MAP,LUONG
FROM NHANVIEN,TDNN,NGOAINGU
WHERE NHANVIEN.MANV=TDNN.MANV AND TDNN.MANN=NGOAINGU.MANN
AND TENN='TIENG ANH' AND TRINHDO='C'
--MO--
OPEN CS11
--XU LY--
PRINT 'DANH SACH NHAN VIEN CO NGAOI NGU TIENG ANH TRINH DO C LA:'
PRINT 'MANVTENNVDIACHI MAPLUONG'
DECLARE @MANV CHAR(10),@TENNV CHAR(20),@DIACHI CHAR(20),@MAP CHAR(10),@LUONG INT
FETCH NEXT FROM CS11
INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MANV+@TENNV+@DIACHI+@MAP+CONVERT(CHAR(10),@LUONG)
FETCH NEXT FROM CS11
INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG
END
--DONG--
CLOSE CS11
--HUY--
DEALLOCATE CS11
Bai 14
CREATE DATABASE QUANLYTRINHDOHOCVINHANVIEN
USE QUANLYTRINHDOHOCVINHANVIEN
CREATE TABLE PHONG(
MAP CHAR(10) PRIMARY KEY,
TENP CHAR(30) NOT NULL,
DIACHIP CHAR(30),
SDT CHAR(15)
CREATE TABLE NHANVIEN(
MANV CHAR(10) PRIMARY KEY,
TENNV CHAR(40) NOT NULL,
DIACHI CHAR(40),
MAP CHAR(10),
LUONG INT,--LUONG CUA NHAN VIEN--
CONSTRAINT KN_NHANVIEN FOREIGN KEY(MAP) REFERENCES PHONG(MAP)
CREATE TABLE HOCVI(
MAHV CHAR(10) PRIMARY KEY,
TENHV CHAR(30) NOT NULL
CREATE TABLE TDHVNV(--TRINH DO HOC VI NHAN VIEN--
MANV CHAR(10) ,
MATDHV CHAR(10),
THOIGIANSMALLDATETIME,--NGAY THANG NAM DAT TRINH DO NAY--
CONSTRAINT KC_TDHVNV PRIMARY KEY(MANV,MATDHV),
CONSTRAINT KN_TDHVNV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV)
--2/ Tạo View để tổng hợp thông tin về các nhân viên có học vị là tiến sĩ trước năm 1990.--
CREATE VIEW VD2
AS
SELECT * FROM NHANVIEN
WHERE
--3/ Tạo View để tổng hợp thông tin về các nhân viên chưa có học vị Tiến sĩ.--
/*4/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có học vị
và thời gian đạt được ứng với các tham biến đã cho. */
/*5/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có
trình độ học vị và thời gian đạt được học vị đó ứng với các tham biến đã cho. */
/*6/ Tạo trigger để kiểm tra dữ liệu khi nhập vào bảng NV_TDHV sao cho thời gian đạt học vị
đó phải <= thời gian hiện tại.*/
/*7/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có học vị Tiến sĩ.*/
Bài 15
CREATE DATABASE QUANLYDIEMRENLUYEN
USE QUANLYDIEMRENLUYEN
CREATE TABLE LOP(
MAL CHAR(10) PRIMARY KEY,
TENL CHAR(20) NOT NULL
CREATE TABLE SV(
MASV CHAR(10) PRIMARY KEY,
TENSV CHAR(30) NOT NULL,
NGAYSINH SMALLDATETIME,
MAL CHAR(10),
CONSTRAINT KN_SV FOREIGN KEY (MAL) REFERENCES LOP(MAL)
CREATE TABLE DIEMRL(
MASV CHAR(10),
HOCKY INT,
NAM CHAR(4),
DIEM INT--DIEM REN LUYEN--
CONSTRAINT KC_DIEMRL PRIMARY KEY(MASV,HOCKY,NAM),
CONSTRAINT KN_DIEMRL FOREIGN KEY (MASV) REFERENCES SV(MASV)
--2. Hãy tạo view để tổng hợp thông tin về điểm rèn luyện của những sinh viên học lớp “Cao đẳng K4A”--
CREATE VIEW VD2
AS
SELECT * FROM DIEMRL
WHERE MASV IN (SELECT MASV FROM SV
WHERE MAL IN (SELECT MAL FROM LOP
WHERE TENL='CAO DANG K4A'))
--3. Hãy tạo view để in ra thông tin về sinh viên có điểm rèn luyện cao nhất.--
ALTER VIEW VD3
AS
SELECT *
FROM SV
WHERE MASV IN (SELECT MASV FROM DIEMRL
WHERE DIEM IN (SELECT MAX(DIEM) FROM DIEMRL))
--4. Tạo view để tổng hợp thông tin về những sinh viên có điểm rèn luyện<50 trong năm học 2006-2007.--
CREATE VIEW VD4
AS
SELECT * FROM SV
WHERE MASV IN(SELECT MASV FROM DIEMRL
WHERE DIEM<50 AND NAM ='2006-2007')
--5. Tạo thủ tục có tham số vào @Masv để đưa ra thông tin về điểm rèn luyện của sinh viên trên.--
CREATE PROC VD5
@MASV CHAR(10)
AS
SELECT * FROM DIEMRL
WHERE MASV =@MASV
EXEC VD5 'SV2'
/*6. Tạo thủ tục có tham số vào @Malop, @Nam để đưa ra thông tin về điểm rèn luyện của lớp trên vào
nam học trên.*/
CREATE PROC VD6
@MAL CHAR(10),@NAM CHAR(4)
AS
SELECT * FROM DIEMRL
WHERE NAM=@NAM AND MASV IN (SELECT MASV FROM SV
WHERE MAL=@MAL)
EXEC VD6 'L01','2010'
--7. Tạo thủ tục có tham số vào @tenlop để đưa ra thông tin về điểm rèn luyện của lớp trên.--
CREATE PROC VD7
@TENL CHAR(20)
AS
SELECT * FROM DIEMRL
WHERE MASV IN (SELECT MASV FROM SV
WHERE MAL IN (SELECT MAL FROM LOP
WHERE TENL=@TENL))
EXEC VD7 'TH'
/*8. Tạo Trigger kiểm tra việc nhập dữ liệu cho bảng DIEMRL nếu điểm nhập vào <0 hoặc >100 thì đưa
ra yêu cầu nhập lại và bản ghi này không được phép nhập vào bảng, ngược lại thì in ra thông báo nhập
thành công.*/
CREATE TRIGGER TG8
ON DIEMRL
FOR INSERT
AS
IF EXISTS (SELECT DIEM FROM DIEMRL
WHERE DIEM<0 OR DIEM >100)
BEGIN
PRINT 'DU LIEU NHAP KHONG HOP LE'
ROLLBACK TRAN
END
ELSE PRINT 'DU LIEU NHAP THANH CONG'
INSERT INTO DIEMRL
VALUES('SV4','2','2007',90)
/*9. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của học kỳ 1 năm học
2007-2008.*/
DECLARE CS9 CURSOR FOR
SELECT DIEMRL.*
FROM DIEMRL
WHERE HOCKY='1' AND NAM='2007-2008'
--MO--
OPEN CS9
--XU LY--
PRINT 'DANH SACH DIEM REN LUYEN CUA HOC KY 1 NAM HOC 2007-2008 LA:'
PRINT 'MASV HOCKY NAM DIEM'
DECLARE @MASV CHAR(10),@HOCKY INT,@NAM CHAR(20),@DIEM INT
FETCH NEXT FROM CS9
INTO @MASV,@HOCKY,@NAM,@DIEM
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MASV+CONVERT(CHAR(10),@HOCKY)+@NAM+CONVERT(CHAR(10),@DIEM)
FETCH NEXT FROM CS9
INTO @MASV,@HOCKY,@NAM,@DIEM
END
--DONG--
CLOSE CS9
--HUY--
DEALLOCATE CS9
--10. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của năm học 2006-2007.--
--KHAI BAO--
DECLARE CS10 CURSOR FOR
SELECT DIEMRL.*
FROM DIEMRL
WHERE NAM='2006-2007'
--MO--
OPEN CS10
--XU LY--
PRINT 'DANH SACH DIEM REN LUYEN CUA HOC KY 1 NAM HOC 2007-2008 LA:'
PRINT 'MASV HOCKY NAM DIEM'
DECLARE @MASV CHAR(10),@HOCKY INT,@NAM CHAR(20),@DIEM INT
FETCH NEXT FROM CS10
INTO @MASV,@HOCKY,@NAM,@DIEM
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @MASV+CONVERT(CHAR(10),@HOCKY)+@NAM+CONVERT(CHAR(10),@DIEM)
FETCH NEXT FROM CS10
INTO @MASV,@HOCKY,@NAM,@DIEM
END
--DONG--
CLOSE CS10
--HUY--
DEALLOCATE CS10
Quản lí thư viện
THAY MẶT NHÓM EM GỬI CHO CÔ BÀI TẬP THẢO LUẬN 3+4
NHÓM GỒM: NGUYỄN VĂN SÁU
TRẦN VĂN HAI
VŨ HỒNG HẢI
--------------------------=========================---------------------------------------
CREATE DATABASE QLTHUVIEN
USE QLTHUVIEN
CREATE TABLE SACH
MAS CHAR (5) PRIMARY KEY,
TENS NVARCHAR(20) NOT NULL,
NAMXB CHAR(5),
NXB NVARCHAR(50),
TENTG NVARCHAR(30)
CREATE TABLE DG
MADG CHAR(5) PRIMARY KEY,
TENDG NVARCHAR(30) NOT NULL,
DCDG NVARCHAR(20),
CREATE TABLE MT
MADG CHAR(5)NOT NULL,
MAS CHAR(5) NOT NULL,
NGAYM SMALLDATETIME NOT NULL,
SL INT NOT NULL,
NGAYHT SMALLDATETIME,
NGAYT SMALLDATETIME,
CONSTRAINT KC1 PRIMARY KEY (MADG,MAS,NGAYM),
CONSTRAINT KN3 FOREIGN KEY (MADG) REFERENCES DG(MADG),
CONSTRAINT KN4 FOREIGN KEY (MAS) REFERENCES SACH (MAS),
INSERT INTO SACH VALUES ('S06','TIN HOC DAI CUONG','2001','ĐẠI HỌC THÁI NGUYÊN','NGUYỄN THỊ OANH')
INSERT INTO DG VALUES('DG06','NGUYỄN VĂN SÁU','LỚP THKTK7A')
INSERT INTO MT VALUES ('DG06','S02','10/08/2010','1','10/31/2010',NULL)
DELETE MT
--1.1 TẠO VIEW TỔNG HỢP THÔNG TIN VỀ CÁC ĐỘC GIẢ ĐÃ HẾT HẠN TRẢ SÁCH NHƯNG CHƯA TRẢ--
CREATE VIEW TTDG
AS
SELECT *
FROM DG
WHERE MADG IN (SELECT MADG
FROM MT
WHERE DATEDIFF(DAY,GETDATE(),NGAYHT)<=0
AND NGAYT IS NULL
SELECT * FROM TTDG
------------------------------------------------------------------------------------
--1.2 TẠO VIEW ĐỂ TỔNG TỢP THÔNG TIN VỀ DANH MỤC SÁCH CHƯA TỪNG ĐƯỢC ĐỘC GIẢ NÀO MƯỢN--
CREATE VIEW TT1
AS
SELECT *
FROM SACH
WHERE MAS NOT IN (SELECT MAS
FROM MT)
SELECT * FROM TT1
--------------------------------------------------------------------------------------
-- 1.3. TẠO VIEW TỔNG HỢP THÔNG TIN VỀ TỪNG LOẠI SÁCH HIỆN CÓ ĐỘC GIẢ ĐANG MƯỢN
--(CẤU TRÚC VIEW GỒM CÁC THUỘC TÍNH : MASACH,TENSACH,TENDG,SL)
CREATE VIEW TTS
AS
SELECT SACH.TENS, SACH.MAS,DG.TENDG,MT.SL
FROM SACH,DG,MT
WHERE SACH.MAS=MT.MAS
AND DG.MADG=MT.MADG
AND MT.MAS IN(SELECT MAS
FROM MT
WHERE NGAYT IS NULL)
-------------------------------------------------------------------------------------------
--1.4.TAO THU TUC CO THAM SO LA @MADG DE DUA RA DANH MUC SACH MA DOC GIA TREN DANG MUON
CREATE PROC DMS
@MADG CHAR(5)
AS
SELECT *
FROM SACH
WHERE MAS IN(SELECT MAS
FROM MT
WHERE MADG=@MADG)
DMS @MADG='DG03'
---------------------------------------------------------------------------------------------------------
--1.5. TAO THU TUC CO THAM SO LA @MGAYMUON DE DUA RA DANH SACH CAC DOC GIA DA MUON SACH VAO NGAY TREN
CREATE PROC DSDG
@NGAYMUON SMALLDATETIME
AS
SELECT *
FROM DG
WHERE MADG IN (SELECT MADG
FROM MT
WHERE NGAYM = @NGAYMUON)
DSDG '10/8/2010'
----------------------------------------------------------------------------------------------------------------
--1.6. TAO THU TUC DE DUA RA DANH SACH CAC DOC GIA NGAY HOM NAY LA HAN CUOI CUNG PHAI TRA SACH CHO THU VIEN
CREATE PROC HANTRASACH
AS
SELECT *
FROM DG
WHERE MADG IN(SELECT MADG
FROM MT
WHERE DATEDIFF(DAY,GETDATE(),NGAYHT)=0)
HANTRASACH
SELECT * FROM SACH
SELECT * FROM DG
SELECT * FROM MT
Bản quyền thuộc về Diên DBP Địa chỉ lớp CNTT K8A trường đại hoc công nghệ thông tin và truyền thông
Bạn đang đọc truyện trên: AzTruyen.Top