--BAI TAP THUC HANH CHO CAC LOP TIN CHI--
--TAO CO SO DU LIEU QUAN LY GOM CAC BANG DU LIEU SAU--
CREATE DATABASE QLGV --QUAN LY GIAO VIEN
ON
(
NAME=QLGV_DAT,
FILENAME='D:\DATA\GLGV_DAT.MDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
LOG ON
(
NAME=QLGV_LOG,
FILENAME='D:\DATA\QLGV_LOG.LDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
--TAO BANG GIAO VIEN
CREATE TABLE GIAOVIEN
(
MAGV CHAR(10) PRIMARY KEY,
TENGV NVARCHAR (30),
DIACHI NVARCHAR (30),
DIENTHOAI CHAR (15)
)
--TAO BANG HOCVI
CREATE TABLE HOCVI
(
MAHV CHAR (10)PRIMARY KEY,
TENHOCVI NVARCHAR (15)
)
--TAO BANG CHUYEN NGANH
CREATE TABLE CHUYENNGANH
(
MACN CHAR(10)PRIMARY KEY,
TENCN NVARCHAR (30)
)
--TAO BANG GV_HV_CN
CREATE TABLE GV_HV_CN
(
MAGV CHAR(10),
MAHV CHAR (10),
MACN CHAR(10),
NAM CHAR (10),
CONSTRAINT R0 PRIMARY KEY(MAGV,MAHV,MACN),
CONSTRAINT R1 FOREIGN KEY (MAGV) REFERENCES GIAOVIEN(MAGV),
CONSTRAINT R2 FOREIGN KEY (MAHV) REFERENCES HOCVI(MAHV),
CONSTRAINT R3 FOREIGN KEY (MACN) REFERENCES CHUYENNGANH(MACN)
)
SELECT *FROM GIAOVIEN
SELECT*FROM HOCVI
SELECT*FROM CHUYENNGANH
SELECT*FROM GV_HV_CN
--NHAP DU LIEU CHO BANG GIAOVIEN
INSERT INTO GIAOVIEN VALUES('GV01','TRAN VAN THINH','BAC GIANG
','01689994275')
INSERT INTO GIAOVIEN VALUES('GV02','HOANG VAN CUONG ','BAC GIANG
','0123456789')
INSERT INTO GIAOVIEN VALUES('GV03','NGUYEN THI DUNG','BAC GIANG
','01653755211')
--NHAP DU LIEU CHO BANG HOC VI
INSERT INTO HOCVI VALUES ('HV01','THAC SI')
INSERT INTO HOCVI VALUES ('HV02','TIEN SI')
INSERT INTO HOCVI VALUES ('HV03','GIAO SU')
--NHAP DU LIEU CHO BANG CHUYEN NGANH
INSERT INTO CHUYENNGANH VALUES ('CN01','MANG VA TRUYEN THONG')
INSERT INTO CHUYENNGANH VALUES ('CN02','KHOA HOC MAY TINH')
INSERT INTO CHUYENNGANH VALUES ('CN03','KHOA HOC CO BAN')
--NHAP DU LIEU CHO BANG GV_HV_CN
INSERT INTO GV_HV_CN VALUES('GV01','HV01','CN01','2009')
INSERT INTO GV_HV_CN VALUES('GV02','HV02','CN01','2009')
INSERT INTO GV_HV_CN VALUES('GV03','HV01','CN02','2009')
SELECT MAGV
FROM GIAOVIEN
--2.TAO VIEW TONG HOP GIAO VIEN CO HOC VI TIEN SI
CREATE VIEW TIENSI
AS
SELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN
FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANH
WHERE GIAOVIEN.MAGV=GV_HV_CN.MAGV AND
HOCVI.MAHV=GV_HV_CN.MAHV AND
CHUYENNGANH.MACN=GV_HV_CN.MACN AND HOCVI.TENHOCVI='TIEN SI'
SELECT *FROM TIENSI
DROP VIEW TIENSI
--3.TAO VIEW TONG HOP THONG TIN GIAO VIEN CHUYEN NGANH MANG VA
TRUYEN THONG
CREATE VIEW CHUYENNGANHMANG
AS
SELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN
FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANH
WHERE GIAOVIEN.MAGV=GV_HV_CN.MAGV AND
HOCVI.MAHV=GV_HV_CN.MAHV AND
CHUYENNGANH.MACN=GV_HV_CN.MACN AND CHUYENNGANH.TENCN='MANG
VA TRUYEN THONG'
--HIEN THI VIEW CHUYEN NGANH MANG
SELECT *FROM CHUYENNGANHMANG
--4.TAO VIEW DE CHO BIET THONG TIN VE GIAO VIEN CO DIA CHI O THAI
NGUYEN
CREATE VIEW DIACHITN
AS
SELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN
FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANH
WHERE GIAOVIEN.MAGV=GV_HV_CN.MAGV AND
HOCVI.MAHV=GV_HV_CN.MAHV AND
CHUYENNGANH.MACN=GV_HV_CN.MACN AND GIAOVIEN.DIACHI='BAC GIANG'
SELECT *FROM DIACHITN
--TAO THU TUC NHAP DU LIEU CHO BANG GIAO VIEN
CREATE PROC SP_NHAP
@MAGV CHAR (10),
@TENGV NVARCHAR(30),
@DIACHI NVARCHAR (30),
@DIENTHOAI CHAR(15)
AS
INSERT INTO GIAOVIEN(MAGV,TENGV,DIACHI,DIENTHOAI)
VALUES (@MAGV,@TENGV,@DIACHI,@DIENTHOAI)
GO
SELECT * FROM GIAOVIEN
--XEM NOI DUNG THU TUC
SP_HELPTEXT SP_NHAP
DROP PROC SP_NHAP
EXEC SP_NHAP 'GV04','THAN VAN CHINH','BAC GIANG','0123456963'
EXEC SP_NHAP 'GV05','HOANG TRONG NGHIA','BAC GIANG','0123456963'
--6.TAO THU TUC CO THAM SO @NAM DE DUA 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
CREATE PROC SP_HVTS --HỌC VỊ TIẾN SĨ
@NAM CHAR (10)
AS
SELECT TENGV
FROM GIAOVIEN
WHERE MAGV IN
(SELECT MAGV FROM GV_HV_CN
WHERE MAHV IN
(SELECT MAHV
FROM HOCVI
WHERE TENHOCVI='TIEN SI'
)
AND NAM=@NAM
)
EXEC SP_HVTS '2009'
--6.TAO THU TUC CO THAM SO @TENHV DE DUA RA THONG TIN VE CAC GIAO
VIEN CO TEN HOC VI TREN
CREATE PROC SP_Y6
@TENHOCVI NVARCHAR (15)
AS
SELECT*
FROM GIAOVIEN
WHERE MAGV IN
(
SELECT MAGV
FROM GV_HV_CN
WHERE MAHV IN
(
SELECT MAHV
FROM HOCVI
WHERE TENHOCVI=@TENHOCVI
)
)
EXEC SP_Y6 'TIEN SI'
--LAM LAI
CREATE PROC SP_Y7
@TENHOCVI NVARCHAR (15)
AS
SELECT *
FROM GIAOVIEN
WHERE MAGV IN
(
SELECT MAGV
FROM GV_HV_CN
WHERE MAHV IN
(
SELECT MAHV
FROM HOCVI
WHERE TENHOCVI=@TENHOCVI
)
)
EXEC SP_Y7 'THAC SI'
--8.TAO 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 MAN HINH LA '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'BẢN GHI ĐƯỢC NHẬP THÀNH CÔNG'
CREATE TRIGGER TRUYNHAP
ON GV_HV_CN
FOR INSERT
AS
IF EXISTS (
SELECT NAM
FROM GV_HV_CN
WHERE NAM <0 )
BEGIN
PRINT 'DU LIEU KHONG HOP LE'
ROLLBACK TRAN
END
ELSE
PRINT 'NHAP DU LIEU THANH CONG'
GO
--DEN DAY THI OK ROI NHUNG SAO KHI MINH INSERT DU LIEU LAI BAO LOI NHI
--Invalid object name 'GV_HV_CN'.??WHAT ??
DROP TRIGGER TRUYNHAP
INSERT INTO GV_HV_CN VALUES ('GV10','HV05','CN05','2010')
--9.DUNG KIEU DU LIEU CURSOR DE DUA RA THONG TIN CUA TUNG GIAO VIEN
CUA TUNG CHUYEN NGANH
DECLARE TTGV CURSOR --THONG TIN GIAO VIEN
--BAI 2 CHO CO SO DU LIEU QUAN LY GOM
--TAO CO SO DU LIEU BAI2
CREATE DATABASE BAI2
ON
(
NAME=BAI2_DAT,
FILENAME='D:\DATA\BAI2_DAT.MDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
LOG ON
(
NAME=BAI2_LOG,
FILENAME='D:\DATA\BAI2_LOG.LDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
--TAO BANG TOCONGDOAN
CREATE TABLE TOCONGDOAN
(
MATCD CHAR(10)PRIMARY KEY,--MÃ TỔ CÔNG ĐOÀN
TENTCD NVARCHAR(30)
)
--TAO BANG CONGDOAN
CREATE TABLE CONGDOAN
(
MACDV CHAR(10)PRIMARY KEY,--MA CÔNG ĐOÀN VIÊN
TENCDV NVARCHAR(30),--TÊN CÔNG ĐOÀN VIÊN
NGAYS SMALLDATETIME,--NGAY SINH
NGAYV SMALLDATETIME,--NGÀY VÀO ĐOÀN
MATCD CHAR (10),
CONSTRAINT KN1 FOREIGN KEY(MATCD)REFERENCES TOCONGDOAN(MATCD)
)
--TAO BANG KHEN THUONG
CREATE TABLE KHENTHUONG
(
MACDV CHAR(10),
MSKT CHAR (10),
LYDO NVARCHAR(30),
NAM CHAR (4),
CONSTRAINT KC PRIMARY KEY (MACDV,MSKT),
CONSTRAINT KN2 FOREIGN KEY (MACDV)REFERENCES CONGDOAN(MACDV)
)
--HIEN THI BANG
SELECT*FROM TOCONGDOAN
SELECT*FROM CONGDOAN
SELECT*FROM KHENTHUONG
--NHAP DU LIEU CHO BANG TO CONG DOAN
INSERT INTO TOCONGDOAN VALUES('T1','TO KHOA HOC')
INSERT INTO TOCONGDOAN VALUES('T2','TO MAY TINH ')
INSERT INTO TOCONGDOAN VALUES('T3','TO HE THONG THONG TIN')
INSERT INTO TOCONGDOAN VALUES('T4','TO MANG TRUYEN THONG')
--NHAP DU LIEU CHO BANG CONG DOAN
INSERT INTO CONGDOAN VALUES('DV01','TRAN VAN
THINH','02/23/1989','01/01/1995','T1')
INSERT INTO CONGDOAN VALUES('DV02','NGUYEN VAN
A','12/23/1989','01/01/1995','T1')
INSERT INTO CONGDOAN VALUES('DV03','PHAM VAN B','11/17/1989','01/01/1995','T2')
INSERT INTO CONGDOAN VALUES('DV04','HOANG VAN
C','09/10/1989','01/01/1995','T3')
--NHAP DU LIEU CHO BANG KHENTHUONG
INSERT INTO KHENTHUONG VALUES ('DV01','KT10','HOC GIOI','2010')
INSERT INTO KHENTHUONG VALUES ('DV01','KT09','TAN GAI GIOI','2010')
INSERT INTO KHENTHUONG VALUES ('DV02','KT11','KHONG HOC THI THOI','2010')
INSERT INTO KHENTHUONG VALUES ('DV03','KT12','HOC GIOI','2010')
INSERT INTO KHENTHUONG VALUES ('DV04','KT13','HOC GIOI','2010')
--2.HAY TAO VIEW DE TONG HOP THONG TIN VE CAC CONG DOAN VIEN DA DUOC
KHEN THUONG O TO CONG DOAN HE THONG THONG TIN
CREATE VIEW THTT--TONG HOP THONG TIN
AS
SELECT CONGDOAN.*
FROM CONGDOAN
WHERE MACDV IN (SELECT MACDV FROM KHENTHUONG)
--HIEN THI VIEW
SELECT*FROM THTT
DROP VIEW THTT
--3.TAO VIEW HIEN TH VE CAC CING DOAN VIEN CHUA DUOC KHEN THUONG
CREATE VIEW CHUAKT
AS
SELECT CONGDOAN.*
FROM CONGDOAN
WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG)
DROP VIEW CHUAKT
--HIEN THI VIEW
SELECT *FROM CHUAKT
--4.HAY TAO VIEW DE TONG HOP THONG TIN VE CAC CONG DOAN VIEN DUOC
KHEN THUONG VI HOC GIOI
CREATE VIEW Y4
AS
SELECT CONGDOAN.*
FROM CONGDOAN,KHENTHUONG
WHERE (CONGDOAN.MACDV=KHENTHUONG.MACDV)AND
KHENTHUONG.LYDO='HOC GIOI'
--HIEN THI VIEW
SELECT *FROM Y4
--bai 3:CHO CO SO DU LIEU QUAN LY DIEM GOM 3 BANG DU LIEU SAU
--TAO CO SO DU LIEU VOI TEN QUAN LY DIEM
CREATE DATABASE QLD
ON
(
NAME=QLD_DAT,
FILENAME='D:\DATA\QLD_DAT.MDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
LOG ON
(
NAME=QLD_LOG,
FILENAME='D:\DATA\QLD_LOG.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
--TAO BANG SINH VIEN
CREATE TABLE SINHVIEN
(
MASV CHAR(10)PRIMARY KEY,
HOTENSV NVARCHAR(30),
NS NVARCHAR (30),
DIACHI NVARCHAR(30)
)
--TAO BANG MON
CREATE TABLE MON
(
MAMON CHAR(10)PRIMARY KEY,
TENMON NVARCHAR (30),
DVHT CHAR (2)
)
--TAO BANG DIEM
CREATE TABLE DIEM
(
MAMON CHAR(10),
MASV CHAR(10),
PHACH CHAR (10),
DIEM FLOAT,
CONSTRAINT RBKC PRIMARY KEY (MAMON,MASV),
CONSTRAINT RBKN1 FOREIGN KEY (MAMON)REFERENCES MON(MAMON),
CONSTRAINT RBKN2 FOREIGN KEY (MASV)REFERENCES SINHVIEN(MASV)
)
--HIEN THI THONG TIN CAC BANG
SELECT*FROM SINHVIEN
SELECT*FROM MON
SELECT *FROM DIEM
--NHAP DU LIEU CHO CAC BANG
INSERT INTO SINHVIEN VALUES ('SV01','TRAN VAN A','02/23/89','BAC GIANG')
INSERT INTO SINHVIEN VALUES ('SV02','NGUYEN VAN B','11/17/89','VINH PHUC')
INSERT INTO SINHVIEN VALUES ('SV03','NGUYEN THI DUNG','10/09/89','HA NOI')
INSERT INTO SINHVIEN VALUES ('SV04','HOANG VAN DONG','04/05/89','THANH
HOA')
--NHAP DU LIEU CHO BANG MON
INSERT INTO MON VALUES ('M1','ANH VAN 1','2')
INSERT INTO MON VALUES ('M2','ANH VAN CO SO','2')
INSERT INTO MON VALUES ('M3','MANG MAY TINH','3')
INSERT INTO MON VALUES ('M4','CHUONG TRINH DICH',4)
--NHAP DU LIEU CHO BANG DIEM
INSERT INTO DIEM VALUES('M1','SV01','125','6.5')
INSERT INTO DIEM VALUES('M1','SV02','126','8.5')
INSERT INTO DIEM VALUES('M2','SV02','136','7.5')
INSERT INTO DIEM VALUES('M3','SV03','165','8.5')
DROP TABLE MON
DROP TABLE SINHVIEN
DROP TABLE DIEM
--2.THEM TRUONG DTB VAO BANG SINH VIEN
ALTER TABLE SINHVIEN
ADD DTB FLOAT
--3.TAO VIEW VE SINH VIEN CO DIEM CAO NHAT MON ANH VAN 1
CREATE VIEW CNL --CAO NHAT LOP
AS
SELECT MAMON,MAX(DIEM)AS DCN --DCN LA DIEM CAO NHAT
FROM SINHVIEN,DIEM
GROUP BY MAMON
--HIEN THI DIEM NHAT MOI MON
SELECT *FROM CNL
DROP VIEW CNL
CREATE VIEW TTSV --THONG TIN SINH VIEN
AS
SELECT SINHVIEN.*
FROM SINHVIEN,MON,DIEM
WHERE MASV IN
(SELECT MASV FROM DIEM
WHERE MAMON IN
(SELECT MAMON FROM CNL
WHERE DIEM=DCN
)
AND MAMON IN (SELECT MAMON FROM MON WHERE TENMON='ANH VAN 1')
)
--SAI ROI ?KO BIET SAI O DAU NUA BUN QUA!
DROP VIEW TTSV
SELECT *FROM TTSV
--BAI 3:QUAN LY TINH HINH BAN HANG
--TAO CO SO DU LIEU
--QUAN LY BAN HANG
CREATE DATABASE QLBH
ON
(
NAME=QLBH_DAT,
FILENAME='D:\DATA\QLBH_DAT.MDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
LOG ON
(
NAME =QLBH_LOG,
FILENAME='D:\DATA\QLBH_LOG.LDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=5MB
)
--TAO BANG MAT HANG
CREATE TABLE MATHANG
(
MAH CHAR(10) PRIMARY KEY,
TENH NVARCHAR(30),
SOLUONG TINYINT
)
--TAO BANG NHAT KY BAN
CREATE TABLE NHATKYBAN
(
STT TINYINT PRIMARY KEY,
NGAY SMALLDATETIME,
NGUOIMUA nvarchar(30),
MAH CHAR(10),
SOLUONG TINYINT,
GIA FLOAT,
CONSTRAINT R4 FOREIGN KEY(MAH) REFERENCES MATHANG(MAH)
)
DROP TABLE NHATKYBAN
--SHOW CAC BANG VUA TAO
SELECT*FROM MATHANG
SELECT*FROM NHATKYBAN
--NHAP 5 BO DU LIEU CHO MOI BANG
INSERT INTO MATHANG VALUES('H1','BANH TRUNG','50')
INSERT INTO MATHANG VALUES('H2','BANH MUT','150')
INSERT INTO MATHANG VALUES('H3','SOCOLA','250')
INSERT INTO MATHANG VALUES('H4','BANH PHU THE','150')
INSERT INTO MATHANG VALUES('H5','BANH TROI TAU','250')
--NHAP 5 BO DU LIEU CHO BANG NHAT KY BAN
INSERT INTO NHATKYBAN VALUES('01','11/10/2010','TRAN VAN
THINH','H1','35','1500')
INSERT INTO NHATKYBAN VALUES('02','11/25/2010','HOANG VAN
CUONG','H1','15','1500')
INSERT INTO NHATKYBAN VALUES('03','11/25/2010','TRAN HUU DAT','H2','50','2500')
INSERT INTO NHATKYBAN VALUES('04','11/25/2010','PHAM GIA
THINH','H3','35','4500')
INSERT INTO NHATKYBAN VALUES('05','11/25/2010','TRUONG QUOC
THINH','H5','35','1500')
---them mot truong THANH TIEN VAO TRUONG NHAT KY BAN
ALTER TABLE NHATKYBAN
ADD THANHTIEN FLOAT
--TAO VIEW TONG HOP THONG TIN VE NHUNG MAT HANG CHUA CO AI MUA
CREATE VIEW CHUAMUA
AS
SELECT MATHANG.*
FROM MATHANG
WHERE MAH NOT IN (SELECT MAH FROM NHATKYBAN)
SELECT *FROM CHUAMUA
--
--BAI 1:TRANG 1:CHO SO SO DU LIEU QUAN LY DIEM REN LUYEN
CREATE DATABASE BA1_1
ON
(
NAME=BAI1_1_DAT,
FILENAME='D:\DATA\BAI1_1_DAT.MDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
LOG ON
(
NAME=BAI1_1_LOG,
FILENAME='D:\DATA\BAI1_1_LOG.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
--TAO BANG LOP
CREATE TABLE LOP
(
MALOP CHAR (10)PRIMARY KEY,
TENLOP NVARCHAR(30)
)
--TAO BANG SINHVIEN
CREATE TABLE SINHVIEN
(
MASV CHAR(10)PRIMARY KEY,
TENSV NVARCHAR(30),
NGAYSINH DATETIME,
MALOP CHAR(10),
CONSTRAINT KNB1_1 FOREIGN KEY (MALOP)REFERENCES LOP(MALOP)
)
--TAO BANG DIEM REN LUYEN
CREATE TABLE DRL
(
MASV CHAR (10),
HOCKY CHAR(2),
NAM CHAR(10),
DIEM FLOAT,
CONSTRAINT KCB1_1 PRIMARY KEY (MASV,HOCKY),
CONSTRAINT KN2B1_1 FOREIGN KEY (MASV)REFERENCES SINHVIEN(MASV)
)
--SHOW CAC BANG
SELECT *FROM LOP
SELECT *FROM SINHVIEN
SELECT*FROM DRL
--CAU2.1 HAY TAO VIEW TONG HOP THONG TIN VE DIEM REN LUYEN CUA NHUNG SINH VIEN
HOC LOP K7DCNTT
CREATE VIEW THTT
AS
SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEM
FROM LOP,SINHVIEN,DRL
WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND
LOP.TENLOP='K7DCNTT'
SELECT *FROM THTT
--CAU 3.1:TAO THU TUC CO THAM SO @MASV DE DUA RA THONG TIN VE DIEM REN LUYEN
CUA SINH VIEN TREN
CREATE PROC SPTHSV
@MASV CHAR (10)
AS
SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEM
FROM LOP,SINHVIEN,DRL
WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND
SINHVIEN.MASV=@MASV
EXEC SPTHSV 'SV01'
--CAU 5:TAO VIEW DE IN RA THONG TIN SINH VIEN CO DIEM REN LUYEN CAO NHAT
CREATE VIEW THDRL --THONG TIN DIEM REN LUYEN
AS
SELECT *
FROM SINHVIEN
WHERE MASV IN
(SELECT MASV FROM DRL
WHERE DIEM IN (SELECT MAX(DIEM) FROM DRL)
)
SELECT *FROM THDRL
--CAU 5.2:IN RA THONG TIN SINH VIEN CO DIEM REN LUYEN CAO NHAT CUA MOI LOP
CREATE VIEW Y4.2
AS
SELECT *
FROM SINHVIEN
WHERE SINHVIEN IN
(SELECT MASV FROM DRL
WHERE DIEM IN (SELECT )
)
--cau 4:SU DUNG KIEU DU LIEU CURSOR DE IN RA MAN HINH DANH SACH DIEM REM LUYEN
CUA NAM 2009_2010
--BAI 1:TRANG 1:CHO SO SO DU LIEU QUAN LY DIEM REN LUYEN
CREATE DATABASE BA1_1
ON
(
NAME=BAI1_1_DAT,
FILENAME='D:\DATA\BAI1_1_DAT.MDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
LOG ON
(
NAME=BAI1_1_LOG,
FILENAME='D:\DATA\BAI1_1_LOG.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
--TAO BANG LOP
CREATE TABLE LOP
(
MALOP CHAR (10)PRIMARY KEY,
TENLOP NVARCHAR(30)
)
--TAO BANG SINHVIEN
CREATE TABLE SINHVIEN
(
MASV CHAR(10)PRIMARY KEY,
TENSV NVARCHAR(30),
NGAYSINH DATETIME,
MALOP CHAR(10),
CONSTRAINT KNB1_1 FOREIGN KEY (MALOP)REFERENCES LOP(MALOP)
)
--TAO BANG DIEM REN LUYEN
CREATE TABLE DRL
(
MASV CHAR (10),
HOCKY CHAR(2),
NAM CHAR(10),
DIEM FLOAT,
CONSTRAINT KCB1_1 PRIMARY KEY (MASV,HOCKY),
CONSTRAINT KN2B1_1 FOREIGN KEY (MASV)REFERENCES SINHVIEN(MASV)
)
--SHOW CAC BANG
SELECT *FROM LOP
SELECT *FROM SINHVIEN
SELECT*FROM DRL
--CAU2.1 HAY TAO VIEW TONG HOP THONG TIN VE DIEM REN LUYEN CUA NHUNG SINH VIEN
HOC LOP K7DCNTT
CREATE VIEW THTT
AS
SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEM
FROM LOP,SINHVIEN,DRL
WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND
LOP.TENLOP='K7DCNTT'
SELECT *FROM THTT
--CAU 3.1:TAO THU TUC CO THAM SO @MASV DE DUA RA THONG TIN VE DIEM REN LUYEN
CUA SINH VIEN TREN
CREATE PROC SPTHSV
@MASV CHAR (10)
AS
SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEM
FROM LOP,SINHVIEN,DRL
WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND
SINHVIEN.MASV=@MASV
EXEC SPTHSV 'SV01'
--CAU 5:TAO VIEW DE IN RA THONG TIN SINH VIEN CO DIEM REN LUYEN CAO NHAT
CREATE VIEW THDRL --THONG TIN DIEM REN LUYEN
AS
SELECT *
FROM SINHVIEN
WHERE MASV IN
(SELECT MASV FROM DRL
WHERE DIEM IN (SELECT MAX(DIEM) FROM DRL)
)
SELECT *FROM THDRL
--CAU 5.2:IN RA THONG TIN SINH VIEN CO DIEM REN LUYEN CAO NHAT CUA MOI LOP
CREATE VIEW Y4.2
AS
SELECT *
FROM SINHVIEN
WHERE SINHVIEN IN
(SELECT MASV FROM DRL
WHERE DIEM IN (SELECT )
)
--cau 4:SU DUNG KIEU DU LIEU CURSOR DE IN RA MAN HINH DANH SACH DIEM REM LUYEN
CUA NAM 2009_2010
--cau 6:TAO THU TUC CO THAM SO VAO @MALOP,@NAM DE DUA RA THONG TIN DIEM REN
LUYEN
--CUA LOP TREN VAO NAM HOC TREN
CREATE PROC Y6
@MALOP CHAR(10),
@NAM CHAR(10)
AS
SELECT DRL.*
FROM DRL,LOP,SINHVIEN
WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND LOP.MALOP=@MALOP
AND DRL.NAM=@NAM
EXEC Y6 'DH01','2009_2010'
--CAU 7:TAO TRIGGER KIEM TRA VIEC NHAP DU LIEU CHO BANG DIEM REN LUYEN NEU
DIEM REN LUYEN NHAP
--NHAP VAO NHO <0 HOAC >100 THI DUA RA YEU CAU NHA LAI VA BAN NGHI NAY KO DUOC
PHEP NHAP VAO BANG
--VA NGUOC LAI THI THONG BAO LA THANH CONG
CREATE TRIGGER Y7
ON DRL FOR INSERT
AS
IF EXISTS (SELECT DIEM
FROM DRL WHERE (DIEM <0)OR (DIEM>100))
BEGIN ROLLBACK TRAN
PRINT 'YEU CAU BAN NHAP LAI DU
LIEU'
END
ELSE PRINT 'NHAP DU LIEU THANH CONG'
GO
INSERT INTO DRL VALUES ('SV04','1','2009_2010',6.8)
SELECT MASV FROM SINHVIEN
SELECT HOCKY FROM SINHVIEN
SP_HELPTEXT Y7
--BAI 2 TRANG 5:
CREATE DATABASE BA2_5
ON
(
NAME=BAI2_5_DAT,
FILENAME='D:\DATA\BAI2_5_DAT.MDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
LOG ON
(
NAME=BAI2_5_LOG,
FILENAME='D:\DATA\BAI2_5_LOG.LDF',
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=3MB
)
--TAO BANG TOCONGDOAN
CREATE TABLE TOCONGDOAN
(
MATCD CHAR(10)PRIMARY KEY,
TENTCD NVARCHAR (30)
)
--TAO BANG CONGDOAN
CREATE TABLE CONGDOAN
(
MACDV CHAR(10)PRIMARY KEY,
TENCDV NVARCHAR (30),
NGAYS SMALLDATETIME,
NGAYV SMALLDATETIME,
MATCD CHAR(10),
CONSTRAINT KNB2_5 FOREIGN KEY (MATCD) REFERENCES
TOCONGDOAN(MATCD)
)
--TAO BANG KHEN THUONG
CREATE TABLE KHENTHUONG
(
MACDV CHAR(10),
MSKT CHAR(5),
LYDO NVARCHAR(30),
NAM CHAR(4),
CONSTRAINT KCB2_5 PRIMARY KEY(MACDV,MSKT),
CONSTRAINT KN1B2_5 FOREIGN KEY (MACDV) REFERENCES CONGDOAN(MACDV)
)
SELECT *FROM TOCONGDOAN
SELECT* FROM CONGDOAN
SELECT *FROM KHENTHUONG
--CAU 2:HAY TAO VIEW HIEN THI THONG TIN VE CAC CONG DOAN VIEN DA
DUOC KHEN THUONG O TO TOAN
CREATE VIEW Y2
AS
SELECT *
FROM CONGDOAN
WHERE MACDV IN (SELECT MACDV FROM KHENTHUONG
WHERE MATCD IN ( SELECT MATCD
FROM TOCONGDOAN
WHERE TENTCD='TOAN')
)
SELECT*FROM Y2
--CAU 3:TAO VIEW CHO BIET THONG TIN VE CAC CONG DOAN VIEN CHUA
DUOC KHEN THUONG
CREATE VIEW Y3
AS
SELECT *
FROM CONGDOAN
WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG)
SELECT *FROM Y3
--CAU 4:TAO VIEW DE TONG HOP THONG TIN VE CONG DOAN VIEN DUOC
KHEN THUONG VOI LY DO TAN GAI PRO
CREATE VIEW Y5
AS
SELECT *
FROM CONGDOAN
WHERE MACDV IN (SELECT MACDV FROM KHENTHUONG
WHERE LYDO='TAN GAI PRO')
SELECT *FROM Y5
--CAU 5:TAO THU TUC CO THAM SO @TENTCD DE DUA RA THONG TIN VE
NHUNG DOAN VIEN THUOC
--CHI DOAN TREN
CREATE PROC Y5_1
@TENTCD CHAR(30)
AS
SELECT *
FROM CONGDOAN
WHERE MATCD IN (SELECT MATCD FROM TOCONGDOAN
WHERE TOCONGDOAN.MATCD=CONGDOAN.MATCD
AND TENTCD=@TENTCD)
EXEC Y5_1 'TOAN'
--CAU 6:TAO THU TUC CO THAM SO @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 Y6_1
@TENTCD CHAR(30),
@NAM INT
AS
SELECT *
from CONGDOAN
where (MaTCD in (select MaTCD from TOCONGDOAN where
TenTCD=@TenTCD))
and (MaCDV in (select MaCDV from KHENTHUONG where Nam=@Nam))
EXEC Y6 'TOAN',2009
ALTER TABLE KHENTHUONG
ALTER COLUMN NAM INT
--CAU 7:SU DUNG KIEU DU LIEU CURSOR DE TONG HOP THONG TIN VE
NHUNG CONG DOAN VIEN DA DUOC KHEN
--THUONG TRONG NAM 2009
DECLARE P CURSOR SCROLL DYNAMIC
FOR SELECT *
FROM CONGDOAN
WHERE MACDV IN (SELECT MACDV FROM KHENTHUONG
WHERE NAM=2009
)
OPEN P
DECLARE @MACDV CHAR(10),@TENCDV NVARCHAR (30),@NGAYS
SMALLDATETIME,@NGAYV SMALLDATETIME,
@MATCD CHAR(10)
fetch next from P
into @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD
while @@fetch_status=0
begin
print''+@MaCDV+' '+@TenCDV+'
'+convert(char(10),@NgayS,111)+'
'+convert(char(10),@NgayV,111)+' '+@MaTCD
fetch next from P
into @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD
end
close P
deallocate P
--CAU 8:CHUA DUOC KHEN THUONG NAM 2009
DECLARE P1 CURSOR SCROLL DYNAMIC
FOR SELECT *
FROM CONGDOAN
WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG
WHERE NAM=2009
)
OPEN P1
DECLARE @MACDV CHAR(10),@TENCDV NVARCHAR (30),@NGAYS
SMALLDATETIME,@NGAYV SMALLDATETIME,
@MATCD CHAR(10)
fetch next from P1
into @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD
while @@fetch_status=0
begin
print''+@MaCDV+' '+@TenCDV+'
'+convert(char(10),@NgayS,111)+'
'+convert(char(10),@NgayV,111)+' '+@MaTCD
fetch next from P
into @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD
end
close P1
deallocate P1
--CAU 9:TAO TRIGGER DE KIEM TRA VIEC NHAP DU LIEU CHO BANG
KHENTHUONG NEU NAM
--KHEN THUONG <0 THI IN RA THONG BAO 'NHAP DU LIEU KHONG THANH
CONG 'NGC LAI ....
CREATE TRIGGER Y9
ON KHENTHUONG
FOR INSERT
AS
IF EXISTS (SELECT NAM FROM KHENTHUONG
WHERE NAM<0)
BEGIN ROLLBACK TRAN
PRINT 'NHAP DU LIEU KHONG THANH CONG '
END
ELSE PRINT 'NHAP DU LIEU THANH CONG'
GO
INSERT INTO KHENTHUONG VALUES ('CDV01','KT03','ANH YEU EM
',2009)
INSERT INTO KHENTHUONG VALUES ('CDV01','KT02','ANH NHO EM
',2009)