Bai Tap SQL Server

26
--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

Transcript of Bai Tap SQL Server

Page 1: Bai Tap SQL Server

--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_CNCREATE TABLE GV_HV_CN

Page 2: Bai Tap SQL Server

(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 HOCVISELECT*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_CNINSERT 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

Page 3: Bai Tap SQL Server

SELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANHWHERE 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 CHUYENNGANHMANGASSELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANHWHERE 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 DIACHITNASSELECT GIAOVIEN.*,HOCVI.*,GV_HV_CN.NAM,CHUYENNGANH.TENCN FROM GIAOVIEN,HOCVI,GV_HV_CN,CHUYENNGANHWHERE 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)ASINSERT INTO GIAOVIEN(MAGV,TENGV,DIACHI,DIENTHOAI)

Page 4: Bai Tap SQL Server

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)ASSELECT TENGVFROM GIAOVIENWHERE MAGV IN

(SELECT MAGV FROM GV_HV_CNWHERE MAHV IN

(SELECT MAHVFROM HOCVIWHERE 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

Page 5: Bai Tap SQL Server

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_CNFOR INSERT AS IF EXISTS (

SELECT NAM

Page 6: Bai Tap SQL Server

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 BAI2CREATE DATABASE BAI2ON (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

Page 7: Bai Tap SQL Server

)

--TAO BANG TOCONGDOAN CREATE TABLE TOCONGDOAN(MATCD CHAR(10)PRIMARY KEY,--MÃ TỔ CÔNG ĐOÀN TENTCD NVARCHAR(30))

--TAO BANG CONGDOANCREATE 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 TOCONGDOANSELECT*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

Page 8: Bai Tap SQL Server

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 KHENTHUONGINSERT 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 ASSELECT CONGDOAN.*FROM CONGDOANWHERE 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 CHUAKTAS SELECT CONGDOAN.*FROM CONGDOANWHERE 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 ASSELECT CONGDOAN.*FROM CONGDOAN,KHENTHUONG

Page 9: Bai Tap SQL Server

WHERE (CONGDOAN.MACDV=KHENTHUONG.MACDV)AND KHENTHUONG.LYDO='HOC GIOI' --HIEN THI VIEWSELECT *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 QLDON (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))

Page 10: Bai Tap SQL Server

--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

Page 11: Bai Tap SQL Server

DROP TABLE SINHVIENDROP TABLE DIEM --2.THEM TRUONG DTB VAO BANG SINH VIEN ALTER TABLE SINHVIENADD DTB FLOAT

--3.TAO VIEW VE SINH VIEN CO DIEM CAO NHAT MON ANH VAN 1CREATE VIEW CNL --CAO NHAT LOPASSELECT MAMON,MAX(DIEM)AS DCN --DCN LA DIEM CAO NHATFROM SINHVIEN,DIEM GROUP BY MAMON

--HIEN THI DIEM NHAT MOI MON SELECT *FROM CNL

DROP VIEW CNL

CREATE VIEW TTSV --THONG TIN SINH VIEN ASSELECT 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,

Page 12: Bai Tap SQL Server

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 MATHANGSELECT*FROM NHATKYBAN

--NHAP 5 BO DU LIEU CHO MOI BANG INSERT INTO MATHANG VALUES('H1','BANH TRUNG','50')

Page 13: Bai Tap SQL Server

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 BANALTER 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 MATHANGWHERE 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_1ON(NAME=BAI1_1_DAT,FILENAME='D:\DATA\BAI1_1_DAT.MDF',SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=3MB

Page 14: Bai Tap SQL Server

)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 K7DCNTTCREATE VIEW THTTAS

SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEMFROM LOP,SINHVIEN,DRL WHERE LOP.MALOP=SINHVIEN.MALOP AND SINHVIEN.MASV=DRL.MASV AND LOP.TENLOP='K7DCNTT'

SELECT *FROM THTT

Page 15: Bai Tap SQL Server

--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,DIEMFROM 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 ASSELECT *FROM SINHVIENWHERE MASV IN

(SELECT MASV FROM DRLWHERE 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 LOPCREATE VIEW Y4.2ASSELECT *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_1ON(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',

Page 16: Bai Tap SQL Server

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 K7DCNTTCREATE VIEW THTTAS

SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEMFROM 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

Page 17: Bai Tap SQL Server

SELECT LOP.*,SINHVIEN.MASV,SINHVIEN.TENSV,HOCKY,DIEMFROM 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 ASSELECT *FROM SINHVIENWHERE MASV IN

(SELECT MASV FROM DRLWHERE 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 LOPCREATE VIEW Y4.2ASSELECT *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,SINHVIENWHERE 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

Page 18: Bai Tap SQL Server

ASIF EXISTS (SELECT DIEM

FROM DRL WHERE (DIEM <0)OR (DIEM>100))BEGIN ROLLBACK TRAN

PRINT 'YEU CAU BAN NHAP LAI DU LIEU'

ENDELSE PRINT 'NHAP DU LIEU THANH CONG'

GO

INSERT INTO DRL VALUES ('SV04','1','2009_2010',6.8)

SELECT MASV FROM SINHVIENSELECT HOCKY FROM SINHVIEN

SP_HELPTEXT Y7

--BAI 2 TRANG 5:CREATE DATABASE BA2_5ON (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 (

Page 19: Bai Tap SQL Server

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 THUONGCREATE VIEW Y3 AS SELECT *FROM CONGDOAN WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONG)

Page 20: Bai Tap SQL Server

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 ASSELECT *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 CONGDOANWHERE MATCD IN (SELECT MATCD FROM TOCONGDOAN

WHERE TOCONGDOAN.MATCD=CONGDOAN.MATCDAND 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 INTASSELECT * from CONGDOANwhere (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

Page 21: Bai Tap SQL Server

--CAU 7:SU DUNG KIEU DU LIEU CURSOR DE TONG HOP THONG TIN VE NHUNG CONG DOAN VIEN DA DUOC KHEN --THUONG TRONG NAM 2009DECLARE P CURSOR SCROLL DYNAMIC FOR SELECT *FROM CONGDOAN

WHERE MACDV IN (SELECT MACDV FROM KHENTHUONGWHERE NAM=2009)

OPEN P DECLARE @MACDV CHAR(10),@TENCDV NVARCHAR (30),@NGAYS SMALLDATETIME,@NGAYV SMALLDATETIME,@MATCD CHAR(10) fetch next from Pinto @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCDwhile @@fetch_status=0begin

print''+@MaCDV+' '+@TenCDV+' '+convert(char(10),@NgayS,111)+' '+convert(char(10),@NgayV,111)+' '+@MaTCD

fetch next from Pinto @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD

endclose Pdeallocate P

--CAU 8:CHUA DUOC KHEN THUONG NAM 2009DECLARE P1 CURSOR SCROLL DYNAMIC FOR SELECT *FROM CONGDOAN

WHERE MACDV NOT IN (SELECT MACDV FROM KHENTHUONGWHERE NAM=2009)

OPEN P1 DECLARE @MACDV CHAR(10),@TENCDV NVARCHAR (30),@NGAYS SMALLDATETIME,@NGAYV SMALLDATETIME,@MATCD CHAR(10) fetch next from P1into @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCDwhile @@fetch_status=0begin

print''+@MaCDV+' '+@TenCDV+' '+convert(char(10),@NgayS,111)+' '+convert(char(10),@NgayV,111)+' '+@MaTCD

Page 22: Bai Tap SQL Server

fetch next from Pinto @MaCDV,@TenCDV,@NgayS,@NgayV,@MaTCD

endclose P1deallocate 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 KHENTHUONGFOR 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)