You are on page 1of 22

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

You might also like