Thứ Sáu, 22 tháng 2, 2013

SQL-Quản lý điểm tốt nghiệp ở trường DH


/*cau 01*/
/*if exists(select name from sysdatabases where name='qlDiemDTTN')
drop database qlDiemDTTN*/

/*CAU 2*/
--create database qlDiemDTTN
/*CAU 3*/
--use qlDiemDTTN
/*CAU 4*/
/*if exists(select name from sysobjects where name='SINHVIEN')
drop Table SINHVIEN*/
/*cau5*/
--create table SINHVIEN
--(
--MSSV CHAR(6) NOT NULL,
--TENSV NVARCHAR(30) NOT NULL,
--LOP CHAR(6) NOT NULL,
--SODT VARCHAR(11),
--DIACHI NVARCHAR(50) NOT NULL,
--CONSTRAINT PK_SINHVIEN primary key(MSSV)
--)
/*CAU 6*/
/*if exists(select name from sysobjects where name='DETAI')
drop Table DETAI*/
/*CAU 7*/
--CREATE TABLE DETAI
--(
--MSDT CHAR(6) NOT NULL,
--TENDT NVARCHAR(30) NOT NULL,
--constraint PK_DETAI primary key(MSDT)
--)
/*CAU 8*/
/*if exists(select name from sysobjects where name='SV_DETAI')
drop Table SV_DETAI*/
/*CAU 9*/
--CREATE TABLE SV_DETAI
--(
--MSSV CHAR(6) NOT NULL,
--MSDT CHAR(6) NOT NULL,
--CONSTRAINT PK_SV_DETAI PRIMARY KEY(MSSV,MSDT),
--CONSTRAINT FK_SINHVIEN_SV_DETAI FOREIGN KEY(MSSV) REFERENCES SINHVIEN(MSSV),
--CONSTRAINT FK_DETAI_SV_DETAI FOREIGN KEY(MSSV) REFERENCES SINHVIEN(MSSV),
--)
/*CAU 10*/
/*if exists(select name from sysobjects where name='HOCHAM')
drop Table HOCHAM*/
/*CAU 11*/
--CREATE TABLE HOCHAM
--(
--MSHH SMALLINT NOT NULL,
--TENHH NVARCHAR(20) NOT NULL,
--CONSTRAINT PK_HOCHAM PRIMARY KEY(MSHH)
--)
/*CAU 12*/
/*if exists(select name from sysobjects where name='GIAOVIEN')
drop Table GIAOVIEN*/
/*CAU 13*/
--CREATE TABLE GIAOVIEN
--(
--MSGV SMALLINT NOT NULL,
--TENGV NVARCHAR(30) NOT NULL,
--DIACHI NVARCHAR(50) NOT NULL,
--SODT VARCHAR(11) NOT NULL,
--CONSTRAINT PK_GIAOVIEN PRIMARY KEY(MSGV)
--)
/*CAU 14*/
/*if exists(select name from sysobjects where name='GV_HH')
drop Table GV_HH*/
/*CAU 15*/
--CREATE TABLE GV_HH
--(
--MSGV SMALLINT NOT NULL,
--MSHH SMALLINT NOT NULL,
--NAM SMALLDATETIME NOT NULL,
--CONSTRAINT PK_GV_HH PRIMARY KEY(MSGV,MSHH),
--CONSTRAINT FK_GV_HH_HOCHAM FOREIGN KEY(MSHH) REFERENCES HOCHAM(MSHH),
--CONSTRAINT FK_GV_HH_GIAOVIEN FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV)
--)
/*CAU 16*/
/*if exists(select name from sysobjects where name='GIAOVIEN')
drop Table GIAOVIEN*/
/*CAU 17*/
--CREATE TABLE HOCVI
--(
--MSHV SMALLINT NOT NULL,
--TENHV NVARCHAR(10) NOT NULL,
--CONSTRAINT PK_HOCVI PRIMARY KEY(MSHV)
--)
/*CAU 18*/
/*if exists(select name from sysobjects where name='CHUYENNGANH')
drop Table CHUYENNGANH*/
/*CAU 19*/
--CREATE TABLE CHUYENNGANH
--(
--MSCN SMALLINT NOT NULL,
--TENCN NVARCHAR(30) NOT NULL,
--CONSTRAINT PK_CHUYENNGANH PRIMARY KEY(MSCN)
--)
/*CAU 21*/
/*if exists(select name from sysobjects where name='GIAOVIEN_HV_CN')
drop Table GV_HV_CN*/
/*CAU 22*/
--CREATE TABLE GV_HV_CN
--(
--MSGV SMALLINT NOT NULL,
--MSHV SMALLINT NOT NULL,
--MSCN SMALLINT NOT NULL,
--NAM SMALLDATETIME NOT NULL,
--CONSTRAINT PK_GV_HV_CN PRIMARY KEY(MSGV,MSHV,MSCN),
--CONSTRAINT FK_GIAOVIEN_HV_CN FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV),
--CONSTRAINT FK_HOCVI_HV_CN FOREIGN KEY(MSHV) REFERENCES HOCVI(MSHV),
--CONSTRAINT FK_CHUYENNGANH_HV_CN FOREIGN KEY(MSCN) REFERENCES CHUYENNGANH(MSCN),
--)
/*CAU 23*/
/*if exists(select name from sysobjects where name='GV_HDDT')
drop Table GV_HDDT*/
/*CAU 24*/
--CREATE TABLE GV_HDDT
--(
--MSGV SMALLINT NOT NULL,
--MSDT CHAR(6) NOT NULL,
--DIEM FLOAT NOT NULL,
--CONSTRAINT PK_HDDT PRIMARY KEY(MSGV,MSDT),
--CONSTRAINT FK_GIAOVIEN_GV_HDDT FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV),
--CONSTRAINT FK_DETAI_GV_HDDT FOREIGN KEY(MSDT) REFERENCES DETAI(MSDT)
--)
/*CAU 25*/
/*if exists(select name from sysobjects where name='GV_PBDT')
drop Table GV_PBDT*/
/*CAU 26*/
--CREATE TABLE GV_PBDT
--(
--MSGV SMALLINT NOT NULL,
--MSDT CHAR(6) NOT NULL,
--DIEM FLOAT NOT NULL,
--CONSTRAINT PK_PBDT PRIMARY KEY(MSGV,MSDT),
--CONSTRAINT FK_GIAOVIEN_GV_PBDT FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV),
--CONSTRAINT FK_DETAI_GV_PBDT FOREIGN KEY(MSDT) REFERENCES DETAI(MSDT),
--)
/*CAU 27*/
/*if exists(select name from sysobjects where name='GV_UVDT')
drop Table GV_UVDT*/
/*CAU 28*/
--CREATE TABLE GV_UVDT
--(
--MSGV SMALLINT NOT NULL,
--MSDT CHAR(6) NOT NULL,
--DIEM FLOAT NOT NULL,
--CONSTRAINT PK_UVDT PRIMARY KEY(MSGV,MSDT),
--CONSTRAINT FK_GIAOVIEN_GV_UVDT FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV),
--CONSTRAINT FK_DETAI_GV_UVDT FOREIGN KEY(MSDT) REFERENCES DETAI(MSDT),
--)
/*if exists(select name from sysobjects where name='HOIDONG')
drop Table HOIDONG*/
/*CAU 29*/
--CREATE TABLE HOIDONG
--(
--MSHD SMALLINT NOT NULL,
--PHONG SMALLINT ,
--TGBD SMALLDATETIME ,
--NGAYHD SMALLDATETIME NOT NULL,
--TINHTRANG VARCHAR(30) NOT NULL,
--MSGVCTHD SMALLINT NOT NULL,
--CONSTRAINT PK_HOIDONG PRIMARY KEY(MSHD),
--CONSTRAINT FK_GIAOVIEN_HOIDONG FOREIGN KEY(MSGVCTHD) REFERENCES GIAOVIEN(MSGV)
--)
/*CAU 30*/
/*if exists(select name from sysobjects where name='HOIDONG_GV')
drop Table HOIDONG_GV*/
/*CAU 31*/
--CREATE TABLE HOIDONG_GV
--(
--MSHD SMALLINT NOT NULL,
--MSGV SMALLINT NOT NULL,
--CONSTRAINT PK_HOIDONG_GV PRIMARY KEY(MSHD,MSGV),
--CONSTRAINT FK_GIAOVIEN_HOIDONG_GV FOREIGN KEY(MSGV) REFERENCES GIAOVIEN(MSGV)
--)
/*CAU 32*/
/*if exists(select name from sysobjects where name='HOIDONG_DT')
drop Table HOIDONG_DT*/
/*CAU 33*/
--CREATE TABLE HOIDONG_DT
--(
--MSHD SMALLINT NOT NULL,
--MSDT CHAR(6) NOT NULL,
--TG_BATDAU SMALLDATETIME,
--TG_KETTHUC SMALLDATETIME,
--CONSTRAINT PK_HOIDONG_DT PRIMARY KEY(MSHD,MSDT),
--CONSTRAINT FK_HOIDONG_HOIDONG_DT FOREIGN KEY(MSHD) REFERENCES HOIDONG(MSHD),
--CONSTRAINT FK_DETAI_HOIDONG_DT FOREIGN KEY(MSDT) REFERENCES DETAI(MSDT)
--)
/*CAU 34*/
--INSERT INTO SINHVIEN VALUES('080001',N'Nguyễn Ân','08TH01','0905123331',N'12 Lê Độ')
--INSERT INTO SINHVIEN VALUES('080002',N'Trần Hùng','08TH01','0905123332',N'10 Lê Lai')
--INSERT INTO SINHVIEN VALUES('080003',N'Lê Thúy Hằng','08TH01','0905123333',N'05 Lê Duẩn')
--INSERT INTO SINHVIEN VALUES('080004',N'Ngô Tuấn','08TH02','0905123334',N'10 Đống Đa')
--INSERT INTO SINHVIEN VALUES('080005',N'Phạm Tài','08TH02','0905123335',N'01 Đống Đa')
--INSERT INTO SINHVIEN VALUES('080006',N'Đinh Tiến','08TH01','0905123336',N'10 Lê Lợi')
/*Cau 35*/
--INSERT INTO DETAI VALUES('DT0001',N'Quản lý thư viện')
--INSERT INTO DETAI VALUES('DT0002',N'Nhận dạng vân tay')
--INSERT INTO DETAI VALUES('DT0003',N'Bán đấu giá trên mạng')
--INSERT INTO DETAI VALUES('DT0004',N'Quản lý siêu thị')
--INSERT INTO DETAI VALUES('DT0005',N'Xử lý ảnh')
/*cau 36*/
--INSERT INTO SV_DETAI VALUES('080001','DT0004')
--INSERT INTO SV_DETAI VALUES('080002','DT0005')
--INSERT INTO SV_DETAI VALUES('080003','DT0001')
--INSERT INTO SV_DETAI VALUES('080004','DT0002')
--INSERT INTO SV_DETAI VALUES('080005','DT0003')
--INSERT INTO SV_DETAI VALUES('080006','DT0005')

/*CAU 37*/
--INSERT INTO HOCHAM VALUES(1,N'Phó giáo sư')
--INSERT INTO HOCHAM VALUES(2,N'Giáo sư')
/*CAU 38*/
--INSERT INTO GIAOVIEN VALUES(1,N'Nguyễn Dũng',N'10 Lê Lợi','0905123456')
--INSERT INTO GIAOVIEN VALUES(2,N'Trần Cảnh',N'13 Lê Lai','0905123457')
--INSERT INTO GIAOVIEN VALUES(3,N'Nguyễn Dũng',N'13 Lê Độ','0905123458')
--INSERT INTO GIAOVIEN VALUES(4,N'Nguyễn Thị Lý',N'10 Lê Lai','0905123459')
--INSERT INTO GIAOVIEN VALUES(5,N'Nguyễn Tấn',N'12 Lê Độ','0905123460')
/*cau 39**/
--INSERT INTO GV_HH VALUES(1,1,N'10/10/2008')
--INSERT INTO GV_HH VALUES(2,2,N'10/10/2009')
--INSERT INTO GV_HH VALUES(3,1,N'10/10/2010')
--/*cau 40*/
--INSERT INTO HOCVI VALUES(1,'KS')
--INSERT INTO HOCVI VALUES(2,'CN')
--INSERT INTO HOCVI VALUES(3,'ThS')
--INSERT INTO HOCVI VALUES(4,'TS')
--INSERT INTO HOCVI VALUES(5,'TSKH')
--/*cau 41*/
--INSERT INTO CHUYENNGANH VALUES(1,N'Hệ thống thông tin')
--INSERT INTO CHUYENNGANH VALUES(2,N'Mạng và truyền thông')
--INSERT INTO CHUYENNGANH VALUES(3,N'Đồ họa')
--INSERT INTO CHUYENNGANH VALUES(4,N'Công nghệ phần mềm')
--/*cau 42*/
--INSERT INTO GV_HV_CN VALUES(1,1,1,'10/10/2000')
--INSERT INTO GV_HV_CN VALUES(1,3,1,'10/10/2003')
--INSERT INTO GV_HV_CN VALUES(1,4,1,'10/10/2006')
--INSERT INTO GV_HV_CN VALUES(2,4,2,'10/10/2008')
--INSERT INTO GV_HV_CN VALUES(3,4,1,'10/10/2008')
--/*cau 43*/
--INSERT INTO GV_HDDT VALUES(2,'DT0002',8)
--INSERT INTO GV_HDDT VALUES(3,'DT0001',7)
--INSERT INTO GV_HDDT VALUES(3,'DT0005',5)
--INSERT INTO GV_HDDT VALUES(4,'DT0004',8.5)
--INSERT INTO GV_HDDT VALUES(5,'DT0003',9)
--/*cau 44*/
--INSERT INTO GV_PBDT VALUES(1,'DT0005',5)
--INSERT INTO GV_PBDT VALUES(2,'DT0001',7)
--INSERT INTO GV_PBDT VALUES(3,'DT0002',8)
--INSERT INTO GV_PBDT VALUES(4,'DT0003',8.5)
--INSERT INTO GV_PBDT VALUES(5,'DT0004',6)
--/*cau 45*/
--INSERT INTO GV_UVDT VALUES(1,'DT0002',9)
--INSERT INTO GV_UVDT VALUES(1,'DT0003',7)
--INSERT INTO GV_UVDT VALUES(1,'DT0004',8)
--INSERT INTO GV_UVDT VALUES(2,'DT0003',7)
--INSERT INTO GV_UVDT VALUES(2,'DT0004',9)
--INSERT INTO GV_UVDT VALUES(2,'DT0005',3)
--INSERT INTO GV_UVDT VALUES(3,'DT0001',7)
--INSERT INTO GV_UVDT VALUES(3,'DT0003',10)
--INSERT INTO GV_UVDT VALUES(3,'DT0004',5)
--INSERT INTO GV_UVDT VALUES(4,'DT0001',7)
--INSERT INTO GV_UVDT VALUES(4,'DT0002',9)
--INSERT INTO GV_UVDT VALUES(4,'DT0005',5)
--INSERT INTO GV_UVDT VALUES(5,'DT0001',8)
--INSERT INTO GV_UVDT VALUES(5,'DT0002',6)
--INSERT INTO GV_UVDT VALUES(5,'DT0003',3)
--/*Cau 46*/
--insert into HOIDONG values(1,'101','7:00','2013/01/08',N'Thật',1)
--insert into HOIDONG values(2,'102','7:00','2013/01/08',N'Thử',2)
--insert into HOIDONG values(3,'103','8:00','2013/01/08',N'Thử',3)
--/*Cau 47*/
--insert into HOIDONG_GV values(1,1)
--insert into HOIDONG_GV values(1,2)
--insert into HOIDONG_GV values(1,3)
--insert into HOIDONG_GV values(1,5)
--insert into HOIDONG_GV values(2,6)
--insert into HOIDONG_GV values(2,7)
--insert into HOIDONG_GV values(2,8)
--insert into HOIDONG_GV values(2,9)
--insert into HOIDONG_GV values(2,10)
--/*Cau 48*/
--insert into HOIDONG_DT values(1,'DT0001','8:00 01/08/2013','8:45 01/08/2013')
--insert into HOIDONG_DT values(1,'DT0002','9:00 01/08/2013','9:45 01/08/2013')
--insert into HOIDONG_DT values(1,'DT0003','10:00 01/08/2013','10:45 01/08/2013')
--insert into HOIDONG_DT values(1,'DT0004','14:00 01/08/2013','14:45 01/08/2013')
--insert into HOIDONG_DT values(1,'DT0005','15:00 01/08/2013','15:45 01/08/2013')
--/*Cau 49*/
--select*from SINHVIEN
--select*from DETAI
--select*from SV_DETAI
--select*from HOCHAM
--select*from HOCVI
--select*from GIAOVIEN
--select*from GV_HH
--select*from CHUYENNGANH
--select*from GV_HV_CN
--select*from GV_HDDT
--select*from GV_PBDT
--select*from GV_UVDT
--select*from HOIDONG
--select*from HOIDONG_GV
--select*from HOIDONG_DT
--/*Cau 50*/
--alter table HOCHAM
--add constraint check_tenhh check(Tenhh IN(N'Phó giáo sư',N'Giáo sư'))
/*Cau 51*/
--alter table GV_PBDT
--add constraint CHECK_DIEM_PBDT check(DIEM>=0 and DIEM<=10)
/*Cau 53*/
--alter table GV_HDDT
--add constraint CHECK_DIEM_HDDT check(DIEM>=0 and DIEM<=10)
--/*Cau 53*/
--alter table GV_UVDT
--add constraint CHECK_DIEM_UVDT check(DIEM>=0 and DIEM<=10)
--/*Cau 54*/
--if exists(select name from sysobjects where name like'view_cau_1')
--drop view view_cau_1
/*Cau 55*/
--create view view_cau_1([Tên đề tài],[Ten sinh viên],[Tên giáo viên hướng dẫn],[Tên giáo viên phản biện])
--as
--select TenDT,TenSV,t4.TENGV,t7.TENGV
--from DETAI t1,SV_DETAI t2,SINHVIEN t3,GIAOVIEN t4,GV_HDDT t5,GV_PBDT t6,GIAOVIEN t7
--where t1.msdt=t2.msdt
--and t2.MSSV=t3.MSSV and t4.MSGV=t5.MSGV and t7.MSGV=t6.MSGV
--and t5.msdt=t1.msdt and t6.msdt=t1.msdt
/*Cau 56*/
--select *from view_cau_1
/*Cau 57*/
--if exists(select name from sysobjects where name like'view_cau_2')
--drop view view_cau_2
/*Cau 58*/
--create view view_cau_2([Tên đề tài],[Giáo viên hướng dẫn])
--as
--select TenDT,TENGV
--from DETAI t1,GIAOVIEN t2,GV_HDDT t3
--where t3.MSGV=t2.MSGV and t1.MSDT=t3.MSDT
/*Cau 59*/
--use qlDiemDTTN
--select*from view_cau_2
/*Cau 60*/
--if exists(select name from sysobjects where name like'view_cau_3')
--drop view view_cau_3
/*Cau 61*/
--create view view_cau_3([Tên đề tài],[Giáo viên phản biện])
--as
--select TenDT,TENGV
--from DETAI t1,GIAOVIEN t2,GV_PBDT t3
--where t3.MSGV=t2.MSGV and t1.MSDT=t3.MSDT
/*Cau 62*/
--use qlDiemDTTN
--select *from view_cau_3
/*Cau 63*/
--if exists(select name from sysobjects where name like'view_cau_4')
--drop view view_cau_4
/*Cau 64*/
--create view view_cau_4([Tên đề tài],[Điểm trung bình])
--as
--select TenDT,(T3.DIEM+T4.DIEM+SUM(T5.DIEM))/5
--from HOIDONG T1,HOIDONG_DT T2,GV_HDDT T3,GV_PBDT T4,GV_UVDT T5,DETAI T6
--where T1.MSHD=T2.MSHD AND T1.TINHTRANG=N'Thật' and T3.MSDT=T2.MSDT and T2.MSDT=T4.MSDT
--and T2.MSDT=T5.MSDT and T6.MSDT=T2.MSDT
--group by TENDT,T3.DIEM,T4.DIEM
/*Cau 65*/
--create view view_cau_5([Họ tên sinh viên],[Điểm bảo vệ đề tài])
--as
--select TENSV,(T4.DIEM+T5.DIEM+SUM(T6.DIEM))/5
--from HOIDONG T1,HOIDONG_DT T2,DETAI T3,GV_HDDT T4,GV_PBDT T5,GV_UVDT T6,SV_DETAI T7,SINHVIEN T8
--where T1.TINHTRANG=N'Thật' and T1.MSHD=T2.MSHD and T2.MSDT=T3.MSDT
--and T3.MSDT=T4.MSDT and T3.MSDT=T5.MSDT AND T3.MSDT=T6.MSDT
--AND T3.MSDT=T7.MSDT AND T7.MSSV=T8.MSSV
--group by TENSV,T4.DIEM,T5.DIEM
/*Cau 66*/
--create view view_cau_6([Tên đề tài],[tên sinh viên],[Điểm của giáo viên hướng dẫn],[Điểm của giáo viên phản biện],[Điểm của 3 giáo viên ủy viên])
--as
--select TENDT,TENSV,T4.DIEM,T5.DIEM,SUM(T6.DIEM)
--from DETAI T1,SINHVIEN T2,SV_DETAI T3,GV_HDDT T4,GV_PBDT T5,GV_UVDT T6
--where T1.MSDT=T3.MSDT and T2.MSSV=T3.MSSV and T1.MSDT=T4.MSDT
--and T1.MSDT=T5.MSDT and T1.MSDT=T6.MSDT
--group by TENDT,TENSV,T4.DIEM,T5.DIEM
/*cau 67*/
--create view view_cau_7([Thời gian],[Ngày],[Số lượng đề tài bảo vệ],[Tên chủ tịch hội đồng])
--as
--select cast (DATEPART(hour,TGBD)as varchar)+N'Giờ',
--cast (day(NgayHD)as varchar)+'-'+
--cast (month(NgayHD)as varchar)+'-'+
--cast (year(NgayHD)as varchar),
--COUNT(T2.MSDT),TENGV
--from HOIDONG T1,HOIDONG_DT T2,GIAOVIEN T3
--where T1.MSHD=T2.MSHD
--and T3.MSGV=T1.MSGVCTHD
--group by TGBD,NGAYHD,TENGV
/*cau68*/
--create view view_cau_8([Mã số hội đồng],[Mã số giáo viên],[Tên giáo viên],[Số điện thoại])
--as
--select T2.MSHD,T2.MSGV,TENGV,SODT
--from HOIDONG T1,HOIDONG_GV T2,GIAOVIEN T3
--where T1.MSHD=T2.MSHD
--and T3.MSGV=T2.MSGV
/*cau 69*/
----view thứ nhất sẽ cho biết số đề tài mà giáo viên sẽ hướng dẫn
--create view V1([Msgv],[Số đề tài hướng dẫn])
--as
--select t1.MSGV,COUNT(t1.MSGV)
--from GV_HDDT t1,GIAOVIEN t2
--where t1.MSGV=t2.MSGV
--group by t1.MSGV
----view thứ 2 sẽ cho biết số đề tài mà giáo viên sẽ phản biện
--create view V2([msgv],[Số đề tài phản biện])
--as
--select t1.MSGV,COUNT(t1.MSGV)
--from GV_PBDT t1,GIAOVIEN t2 where t1.MSGV=t2.MSGV
--group by t1.MSGV
----view thứ 3 sẽ cho biết số đề tài mà giáo viên uy viên
--create view V3([msgv],[Số đề tài ủy viên])
--as
--select t1.MSGV,COUNT(t1.MSGV)
--from GV_UVDT t1,GIAOVIEN t2 where t1.MSGV=t2.MSGV
--group by t1.MSGV
--view thứ cuối cùng sẽ kết hợp các view V1,V2,V3
--create view view_cau_9([Mã số giáo viên],[Tên giáo viên],
--[Số đề tài hướng dẫn],[Số đề tài phản biện],[Số đề tài ủy viên])
--as
--select t1.MSGV,t1.tengv,
--coalesce(V1.[Số đề tài hướng dẫn],0),
--coalesce(V2.[Số đề tài phản biện],0),
--coalesce(V3.[Số đề tài ủy viên],0)
--from GIAOVIEN t1 left outer join V1 on t1.MSGV=V1.msgv LEFT outer join v2
--on t1.msgv=v2.msgv LEFT outer join v3 on t1.MSGV=V3.msgv
/*cau70*/
--create view view_cau_10([Mã đề tài],[Tên đề tài],[Tên sinh viên],[Điểm GVHD],[Điểm GVPB],[Điểm TB 3 GVUV])
--as
--select t1.MSDT,TENDT,TENSV,t4.DIEM,t5.DIEM,ROUND((sum(t6.diem)/3),1)
--from DETAI t1,SINHVIEN t2,SV_DETAI t3,GV_HDDT t4,GV_PBDT t5,GV_UVDT t6
--where t1.MSDT=t3.MSDT and t2.MSSV=t3.MSSV and t1.MSDT=t4.MSDT
--and t1.MSDT=t5.MSDT and t1.MSDT=t6.MSDT
--group by t1.MSDT,TENDT,TENSV,t4.DIEM,t5.DIEM
/*cau 71*/
--create view view_ketqua_baove
--as
--select [Mã đề tài],[Tên đề tài],[Tên sinh viên],TG_BATDAU as [Thời gian bắt đầu],
--TG_KETTHUC as[Thời gian kết thúc],round(([Điểm GVHD]+[Điểm GVPB]+[Điểm TB 3 GVUV])/3,1)as[ĐTB],
--case when([Điểm GVHD]+[Điểm GVPB]+[Điểm TB 3 GVUV])/3>5
--then N'Đậu' else N'Hỏng' end as[Kết quả]
--from view_cau_10,HOIDONG_DT
--where view_cau_10.[Mã đề tài]=HOIDONG_DT.MSDT
/*cau 72*/
--create view view_ketqua_baove_01([Mã đề tài],[Tên đề tài],[Tên sinh viên],[Ngày bảo vệ],[Thời gian bắt đầu],[Thời gian kết thúc],[ĐTB],[Kết quả])
--as
--select [Mã đề tài],[Tên đề tài],[Tên sinh viên],
--CAST (DAY([Thời gian bắt đầu])as varchar)+'-'+
--CAST (month([Thời gian bắt đầu])as varchar)+'-'+
--CAST (year([Thời gian bắt đầu])as varchar),
--CAST (datepart(hour,[Thời gian bắt đầu])as varchar)+N'Giờ'+
--CAST (datepart(minute,[Thời gian bắt đầu])as varchar)+N'Phút',
--CAST (datepart(hour,[Thời gian kết thúc])as varchar)+N'Giờ'+
--CAST (datepart(minute,[Thời gian kết thúc])as varchar)+N'Phút',[ĐTB],[Kết quả]
--from view_ketqua_baove
/*cau 73*/
--if exists(select name from sysobjects where name like'pro_insert_sinhvien')
--drop procedure pro_insert_sinhvien
/*cau 74*/
--create PROC pro_insert_sinhvien
--(
-- @mssv char(6), @tensv nvarchar(30), @lop char(6),
-- @sodt varchar(11), @diachi nvarchar(50)
--)
--as
--begin
-- if not exists(select mssv from sinhvien where mssv=@mssv)
-- begin
-- insert into sinhvien(mssv,tensv,lop,sodt,diachi)
-- values(@mssv,@tensv,@lop,@sodt,@diachi)
-- print N'Đã chèn thành công: '
-- end
--else
-- print N'Đã có sinh viên với mã số: '+cast(@mssv as char)
-- return 0
--end
/*cau 75*/
--execute pro_insert_sinhvien
--@mssv='080007', @tensv=N'Nguyễn Văn Tuấn', @lop='08TH03',
--@sodt='0905123456', @diachi=N'12 Đống Đa'
/*cau 76*/
--if exists(select name from sysobjects where name like'pro_insert_detai')
--drop procedure pro_insert_detai
/*cau 77*/
--create PROC pro_insert_detai
--(@msdt char(6),@tendt nvarchar(30))
--as
--begin
-- if not exists(select msdt from DETAI where msdt=@msdt)
-- begin
-- insert into DETAI(MSDT,TENDT)
-- values(@msdt,@tendt)
-- print N'Đã chèn thành công: '
-- end
--else
-- print N'Đã có giáo viên với mã số: '+cast(@msdt as char)
-- return 0
--end
/*cau 78*/
--execute pro_insert_detai @msdt='DT0006',@tendt=N'Quản lý bán hàng'
/*cau79*/
--if exists(select name from sysobjects
-- where name like 'pro_insert_chon_detai')
--drop procedure pro_insert_chon_detai
/*cau 80*/
--create PROC pro_insert_sv_chon_dt
--(@mssv char(6),@msdt char(6))
--as
--begin
-- insert into SV_DETAI(MSSV,MSDT) values(@mssv,@msdt)
--end
/*cau 81*/
--create PROC pro_insert_giaovien
--(@msgv smallint,@tengv nvarchar(30),@diachi nvarchar(50),@sodt varchar(11))
--as
--begin
-- if not exists(select msgv from GIAOVIEN where msgv=@msgv)
-- begin
-- insert into GIAOVIEN(MSGV,TENGV,DIACHI,SODT)
-- values(@msgv,@tengv,@diachi,@sodt)
-- print N'Đã chèn thành công: '
-- end
--else
-- print N'Đã có giáo viên với mã số: '+cast(@msgv as char)
-- return 0
--end
/*cau 82*/
--create PROC pro_insert_hocham
--(@mshh smallint,@tenhh nvarchar(30))
--as
--begin
-- if not exists(select mshh from hocham where MSHH=@mshh)
-- begin
-- insert into HOCHAM(MSHH,TENHH)
-- values(@mshh,@tenhh)
-- print N'Đã chèn thành công: '
-- end
--else
-- print N'Đã có học hàm với mã số: '+cast(@mshh as char)
-- return 0
--end
/*cau 83*/
--create PROC pro_insert_gv_hh
--(@mshh smallint,@msgv smallint,@nam smalldatetime)
--as
--begin
-- insert into GV_HH(MSHH,MSGV,NAM) values(@mshh,@msgv,@nam)
--end
/*cau 84*/
--create PROC pro_insert_chuyennganh
--(@mscn smallint,@tencn nvarchar(30))
--as
--begin
-- insert into CHUYENNGANH(MSCN,TENCN) values(@mscn,@tencn)
--end
/*cau 85*/
--create PROC pro_insert_hocvi
--(@mshv smallint,@tenhv nvarchar(10))
--as
--begin
-- insert into HOCVI(MSHV,TENHV) values(@mshv,@tenhv)
--end
/*cau 86*/
--create PROC pro_insert_gv_hv_cn
--(@msgv smallint,@mshv smallint,@mscn smallint,@nam smalldatetime)
--as
--begin
-- insert into GV_HV_CN(MSGV,MSHV,MSCN,NAM) values(@msgv,@mshv,@msgv,@nam)
--end
/*cau 87*/
--create PROC pro_insert_gv_hddt
--(@msgv smallint,@msdt char(6),@diem float)
--as
--begin
-- insert into GV_HDDT(MSGV,MSDT,DIEM) values(@msgv,@msdt,@diem)
--end
/*cau 88*/
--if exists(select name from  sysobjects where name like 'pro_insert_gv_hdpb' )
--drop procedure pro_insert_gv_hdpb
--create PROC pro_insert_gv_pbdt
--(@msgv smallint,@msdt char(6),@diem float)
--as
--begin
-- insert into GV_PBDT(MSGV,MSDT,DIEM) values(@msgv,@msdt,@diem)
--end
/*cau 89*/
--create PROC pro_insert_gv_uvdt
--(@msgv smallint,@msdt char(6),@diem float)
--as
--begin
-- insert into GV_UVDT(MSGV,MSDT,DIEM) values(@msgv,@msdt,@diem)
--end
/*cau 90*/
--create PROC pro_insert_hoidong
--(@mshd smallint,@phong smallint,@msgvct smallint,@ngayhd smalldatetime,@tgbd smalldatetime,@tinhtrang nvarchar(50))
--as
--begin
-- insert into HOIDONG values(@mshd,@phong,@msgvct,@ngayhd,@tgbd,@tinhtrang)
--end
/*cau 91*/
--create PROC pro_insert_hoidong_gv
--(@mshd smallint,@msgv smallint)
--as
--begin
-- insert into HOIDONG_GV values(@msgv,@msgv)
--end
/*cau 92*/
--create PROC pro_insert_hoidong_dt
--(@mshd smallint,@msdt char(6),@tg_batdau smalldatetime,@tg_ketthuc smalldatetime)
--as
--begin
-- insert into HOIDONG_DT values(@mshd,@msdt,@tg_batdau ,@tg_ketthuc)
--end
/*cau 93*/
--create proc pro_update_tendetai
--(@msdt char(6),@tendetaimoi nvarchar(30) )
--as
--begin
--if exists (select msdt from DETAI where MSDT=@msdt)
--begin
-- update DETAI set TENDT=@tedetaimoi where MSDT=@msdt
-- print N'Đã cập nhật thành công'
-- return 1
-- end
-- else
-- print N'Không có đề tài nào có mã số'+@msdt
-- return 0
--end
/*cau 94*/
--create proc pro_update_dt_dc_sinhvien
--(@mssv char(6),@sodt_moi nvarchar(11),@diachi_moi varchar(50)  )
--as
--begin
--if exists (select MSSV from SINHVIEN where MSSV=@mssv)
--begin
-- update SINHVIEN set SODT=@sodt_moi,DIACHI=@diachi_moi where MSSV=@mssv
-- print N'Đã cập nhật thành công'
-- return 1
-- end
-- else
-- print N'Không có sinh viên nào có mã số'+@mssv
-- return 0
--end
/*cau 95*/
--create proc pro_hoandoi_gvhd_va_gvpb
--(@msdt char(6) )
--as
--begin
--if exists (select MSGV from GV_HDDT where MSDT=@msdt)
--begin
--if exists (select MSGV from GV_PBDT where MSDT=@msdt)
--begin
--/*Nếu có các trigger thì ta cần tạm thời vô hiệu hóa chúng*/
-- alter table gv_hddt disable trigger all
-- declare @gvhd smallint,@gvpb smallint
-- set @gvhd=(select msgv from GV_HDDT where MSDT=@msdt)
-- set @gvpb=(select msgv from GV_PBDT where MSDT=@msdt)
-- update GV_HDDT set MSGV=@gvpb where MSGV=@gvhd
-- print N'Đã cập nhật dữ liệu trong table GV_HDDT'
-- update GV_PBDT set MSGV=@gvhd where MSGV=@gvpb
-- print N'Đã cập nhật dữ liệu trong table GV_PBDT'
-- /*Kích hoạt lại các trigger(nếu có)*/
-- alter table gv_hddt enable trigger all
--end
--else
--print N'Không có MSGV tương ứng trong table GV_PBDT'
--return 0
--end
--else
--print N'Không có MSGV tương ứng trong table GV_HDDT'
--return 0
--end
/*cau 96*/
--create proc pro_chuyendetaicho_gv_moi_hd
--(@tengv nvarchar(30),@tensv nvarchar(30))
--as
--declare @sogv int, @sosv int
--select @sosv=COUNT(*)from SINHVIEN where TENSV=@tensv
--select @sogv=COUNT(*)from GIAOVIEN where TENGV=@tengv
--if(@sogv=0)
--begin
--print N'Không có giáo viên có tên:'+@tengv
--return 0
--end
--if(@sosv=0)
--begin
--print N'Không có sinh viên có tên:'+@tensv
--return 0
--end
--if(@sogv>1)
--begin
--print N'Có'+cast(@sogv as varchar )+N'tên'+@tengv+N'Trùng nhau'
--return 1
--end
--if(@sosv>1)
--begin
--print N'Có'+cast(@sosv as varchar )+N'tên'+@tensv+N'Trùng nhau'
--return 1
--end
--/*Nếu  chỉ tên sinh viên duy nhất và tên giáo viên duy nhất thì cho cập nhật dữ liệu*/
--declare @msdt char(6),@msgv smallint
--select @msdt=msdt from SINHVIEN t1,SV_DETAI t2
--where t1.TENSV=@tensv and t1.MSSV=t2.MSSV
--select @msgv=msgv from GIAOVIEN where TENGV=@tengv
--update GV_HDDT set MSGV=@msgv where MSDT=@msdt
--print N'Đã cập nhật dữ liệu trong table GV_HDDT'
/*cau 97*/
--create proc pro_xoa_sinhvien(@tensv nvarchar(30))
--as
--/*Nếu có tên sinh viên cần xóa*/
--if exists (select mssv from SINHVIEN where TENSV=@tensv)
--begin
--/*Nếu có dữ liệu tương ứng trong table SV_DETAI thì không thể xóa được*/
--if exists (select msdt from SINHVIEN t1, SV_DETAI t2 where t1.MSSV=t2.MSSV and t1.TENSV=@tensv)
--begin
--print N'Không thể xóa dữ liệu trong table SINHVIEN vì rằng buộc khóa ngoại với table SV_DETAI'
--return 0
--end
--else
--/*Xóa dữ liệu khỏi table SINHVIEN vì không có rằng buộc khóa ngoại*/
--delete from SINHVIEN where TENSV=@tensv
--print N'Đã xóa sinh viên có tên :'+@tensv
--end
--else
--begin
--print N'Không có sinh viên có tên :'+@tensv
--return 0
--end
/*cau 98*/
--create proc pro_tinhdiemtrungbinh(@msdt char(6),@diemtrungbinh float output)
--as
--if exists (select msdt from DETAI where MSDT=@msdt)
--begin
--declare @diemgvhd float,@diemgvpb float,@diemgvuv float
--declare @so_gvhd int,@so_gvpb int,@so_gvuv int
--select @diemgvhd=SUM(diem),@so_gvhd=COUNT(*)
--from GV_HDDT where MSDT=@msdt
--select @diemgvpb=SUM(diem),@so_gvpb=COUNT(*)
--from GV_PBDT where MSDT=@msdt
--select @diemgvuv=SUM(diem),@so_gvuv=COUNT(*)
--from GV_UVDT where MSDT=@msdt
--set @diemtrungbinh=(@diemgvhd+@diemgvpb+@diemgvuv)/(@so_gvhd+@so_gvpb+@so_gvuv)
--end
--else
--begin
--print N'Không có đề tài nào với mã số :'+@msdt
--return 0
--end
/*cau 99*/
--declare @msdt char(6),@dtb float
--set @msdt='DT0001'
--exec pro_tinhdiemtrungbinh @msdt,@dtb output
--print N'Điểm trung bình của đề tài với mã số :'+@msdt+N'là :'+cast (@dtb as varchar)
/*cau 100*/
--if exists (select name from sysobjects where name like 'trigger_xoaDETAI')
--drop trigger trigger_xoaDETAI
/*cau 101*/
--create TRIGGER Trigger_xoaDETAI on DETAI for delete
--as
--if(@@ROWCOUNT=0)
--begin
--print N'Table DETAI khong co du lieu'
--return
--end
----Xóa dữ liệu trong các table liên quan với DETAI
--delete SV_DETAI from SV_DETAI t1,deleted t2 where t1.MSDT=t2.msdt
--delete gv_hddt from gv_hddt t1,deleted t2 where t1.MSDT=t2.msdt
--delete gv_pbdt from gv_pbdt t1,deleted t2 where t1.MSDT=t2.msdt
--delete gv_uvdt from gv_uvdt t1,deleted t2 where t1.MSDT=t2.msdt
--delete hoidong_dt from hoidong_dt t1,deleted t2 where t1.MSDT=t2.msdt
--print N'Đã xóa dữ liệu trong các table DETAI,SV_DETAI,GV_HDDT,GV_PBDT,GV_UVDT,HOIDONG_DT'
/*cau 102*/
--create proc Pro_xoaDETAI @msdt char(6)
--as
--if exists (select *from DETAI where MSDT=@msdt)
--begin
----Vô hiệu hóa  các rằng buộc liên quan với DETAI
--alter table SV_DETAI nocheck constraint all
--alter table GV_HDDT nocheck constraint all
--alter table GV_PBDT nocheck constraint all
--alter table GV_UVDT nocheck constraint all
--alter table HOIDONG_DT nocheck constraint all
----Trigger sẽ thực thi khi dòng lệnh này thực hiện
--delete from DETAI where MSDT=@msdt
----kích hoạt các rằng buộc
--alter table SV_DETAI check constraint all
--alter table GV_HDDT check constraint all
--alter table GV_PBDT check constraint all
--alter table GV_UVDT check constraint all
--alter table HOIDONG_DT check constraint all
--end
--else
--print N'Không có đề tài nào có mã số:'+@msdt
/*cau 103*/
--execute pro_xoadetai 'DT0006'
/*cau 104*/
--if exists (select name from sysobjects where name like 'trigger_xoaSINHVIEN')
--drop trigger trigger_xoaSINHVIEN
/*cau 105*/
--create TRIGGER Trigger_XOASINHVIEN on SINHVIEN for delete
--as
--if(@@rowcount=0)
--begin
--print N'Table SINHVIEN khong co trong du lieu'
--return--Nếu khong còn dòng nào thi khỏi xóa
--end
--delete sv_detai from sv_detai t1, deleted t2 where t1.mssv=t2.mssv
--print N'Đã xóa dữ liệu trong các table SINHVIEN,SV_DETAI '
/*cau 106*/
--create proc Pro_Xoasinhvien(@mssv char(6))
--as
--if exists (select *from SINHVIEN where MSSV=@mssv)
--begin
----Tạm thời vô hiệu hóa các rằng buộc
--alter table sv_detai nocheck constraint all
----Trigger đã tạo sẽ được thực thi khi dòng lệnh này được thực hiện
--delete from SINHVIEN where MSSV=@mssv
----Kích hoạt việc kiểm tra lại các rằng buộc
--alter table sv_detai check constraint all
--end
--else
--print N'Không có sinh viên nào có mã số: '+ @mssv
/*cau 107*/
--execute Pro_Xoasinhvien '080006'
/*Cau 108*/
--create TRIGGER Trigger_XoaHOIDONG on HOIDONG for delete
--as
--if(@@rowcount=0)
--begin
--print N'Table HOIDONG không có trong dữ liệu'
--return--Nếu khong còn dòng nào thi khỏi xóa
--end
--delete hoidong_dt from hoidong_dt t1, deleted t2 where t1.mshd=t2.mshd
--delete hoidong_gv from hoidong_gv t1, deleted t2 where t1.mshd=t2.mshd
--print N'Đã xóa dữ liệu trong các table HOIDONG,HOIDONG_DT,HOIDONG_GV '
/*Cau 109*/
--create proc Pro_XoaHoiDong(@mshd smallint)
--as
--if exists (select *from HOIDONG where MSHD=@mshd)
--begin
----Tạm thời vô hiệu hóa các rằng buộc
--alter table hoidong_dt nocheck constraint all
--alter table hoidong_gv nocheck constraint all
----Trigger đã tạo sẽ được thực thi khi dòng lệnh này được thực hiện
--delete from HOIDONG where MSHD=@mshd
----Kích hoạt việc kiểm tra lại các rằng buộc
--alter table hoidong_dt check constraint all
--alter table hoidong_gv check constraint all
--end
--else
--print N'Không có hội đồng nào có mã số: '+ cast(@mshd as varchar)
/*cau 110*/
--execute Pro_XoaHoiDong 4
/*Cau 111*/
--create TRIGGER Trigger_UpdateDETAI on detai for update
--as
--if(@@rowcount=0)
--begin
--print N'Table DETAI không có dữ liệu'
--return
--end
--if update(msdt)
--begin
--update t1 set t1.msdt=t3.msdt
--from sv_detai t1,deleted t2,inserted t3
--where t1.msdt=t2.msdt
--update t1 set t1.msdt=t3.msdt
--from gv_hddt t1,deleted t2,inserted t3
--where t1.msdt=t2.msdt
--update t1 set t1.msdt=t3.msdt
--from gv_pbdt t1,deleted t2,inserted t3
--where t1.msdt=t2.msdt
--update t1 set t1.msdt=t3.msdt
--from gv_uvdt t1,deleted t2,inserted t3
--where t1.msdt=t2.msdt
--update t1 set t1.msdt=t3.msdt
--from hoidong_dt t1,deleted t2,inserted t3
--where t1.msdt=t2.msdt
--print N'Đã cập nhật xong dữ liệu'
--end
/*cau 112*/
--create proc Pro_updateDeTai(@msdt_cu char(6),@msdt_moi char(6))
--as
--if exists (select *from DETAI where MSDT=@msdt_cu)
--begin
----Tạm thời vô hiệu hóa các rằng buộc
--alter table sv_detai nocheck constraint all
--alter table gv_hddt nocheck constraint all
--alter table gv_pbdt nocheck constraint all
--alter table gv_uvdt nocheck constraint all
--alter table hoidong_dt nocheck constraint all
----Trigger đã tạo sẽ được thực thi khi dòng lệnh này được thực hiện
--update DETAI
--set MSDT=@msdt_moi--sẽ được truyền vào inserted
--where MSDT=@msdt_cu--sẽ được truyền vào deleted
----Kích hoạt việc kiểm tra lại các rằng buộc
--alter table sv_detai check constraint all
--alter table gv_hddt check constraint all
--alter table gv_pbdt check constraint all
--alter table gv_uvdt check constraint all
--alter table hoidong_dt check constraint all
--end
--else
--print N'Không tồn tại mã số đề tài: '+ @msdt_cu
/*Cau 113*/
--execute Pro_updateDeTai 'DT0005','DT0006'
/*Cau 114*/
--create TRIGGER Trigger_detaiHOIDONG
--on hoidong_dt for insert ,update
--as
--if(select count(t1.mshd)from hoidong_dt t1,inserted t2
--where t1.mshd=t2.mshd)>=10--nếu số đề tài<10 thì chèn dữ liệu
--begin
--print N'Không thể quá 10 đề tài'
--rollback tran
--end
/*Cau 115*/
--Ta cần phải tạo 2 trigger: 1 cho table GV_HDDT và 1 cho table GV_PBDT
--TRigger thứ nhất trên table GV_HDDT
--create TRIGGER Trigger_GVHD_GVPB on gv_hddt for insert ,update
--as
--if exists (select t2.msgv from inserted t1,gv_pbdt t2 where t1.msgv=t2.msgv and t1.msdt=t2.msdt )
--begin
--declare @msgv smallint,@msdt char(6)
--select @msgv=msgv,@msdt=msdt from inserted
--print N'Không thể chèn hay cập nhật vì giáo viên mã số: '+cast (@msgv as varchar )
--print N'Đã phản biện đề tài với mã số đề tài: '+@msdt
--rollback tran
--end
----TRIGGER thứ hai trên table GV_PBDT
--create TRIGGER Trigger_GVPB_GVHD on GV_PBDT for insert ,update
--as
--if exists (select t2.msgv from inserted t1,gv_hddt t2 where t1.msgv=t2.msgv and t1.msdt=t2.msdt )
--begin
--declare @msgv smallint,@msdt char(6)
--select @msgv=msgv,@msdt=msdt from inserted
--print N'Không thể chèn hay cập nhật vì giáo viên mã số: '+cast (@msgv as varchar )
--print N'Đã phản biện đề tài với mã số đề tài: '+@msdt
--rollback tran
--end
/*cau 116*/
--create TRIGGER Trigger_detaisinhvien on sv_detai for insert,update
--as
--if((select count(t1.mssv)from sv_detai t1,inserted t2 where t1.msdt=t2.msdt)<=3)
--begin
--declare @tendetai nvarchar(30),@sosv int
--select @tendetai=t1.tendt from detai t1,sv_detai t2,inserted t3
--where t1.msdt=t2.msdt and t2.msdt=t3.msdt
--select @sosv=count(t1.mssv) from  sv_detai t1,inserted t2
--where t1.msdt=t2.msdt
--print N'Đề tài: '+@tendetai+N'hiện có'+cast(@sosv as varchar)+N'sinh viên'
--end
--else
--begin
--print N'Không thể quá 3 sinh viên làm cùng 1 đề tài'
--rollback tran
--end
/*cau 117*/
--create TRIGGER Trigger_PGS_Tiensi on gv_hh for insert, update
--as
--begin
----Nếu muốn có học hàm PGS
--if exists(select t1.mshh from inserted t1,hocham t2
--where t1.mshh=t2.mshh and t2.tenhh like N'%Phó giáo sư%')
--begin
----Mà chưa có bằng tiến sĩ
--if not exists(select t3.mshv from inserted t1,giaovien t2,gv_hv_cn t3,hocvi t4
--where t1.msgv=t2.msgv and t2.msgv=t3.msgv and t3.mshv=t4.mshv and t4.tenhv='TS')
--begin
--print N'Bạn chưa thể làm PGS vì chưa có học vị Tiến Sỉ '
--rollback tran
--end
--end
--end
/*cau 118*/
--create TRIGGER Trigger_HocVi_HocHam on gv_hh for insert, update
--as
--begin
----Nếu muốn có học hàm PGS
--if not exists(select t1.nam from inserted t1,giaovien t2,gv_hv_cn t3
--where t1.msgv=t2.msgv and t2.tengv=t3.msgv and(t1.nam>=t3.nam))
--begin
--print N'Không được phép chèn hay cập nhật'
--print N'Vì có mâu thuẫn trên năm nhận học vị và học hàm'
--rollback tran
--end
--end
/*Cau 119*/
--Thêm cột DEM và cột XEPLOAI vào table SV_DETAI
--alter table SV_DETAI add DIEM float,XEPLOAI nvarchar(10)
--create proc Pro_cursor_1a
--as
----Vô hiệu hóa các trigger(nếu có)
--alter table SV_DETAI disable trigger all
----Sau đó tạo con trỏ x để sử dụng
--declare x cursor for
--select t1.msdt
--from sv_detai t1,gv_hddt t2,gv_pbdt t3,gv_uvdt t4
--where t1.msdt=t2.msdt and t1.msdt=t3.msdt and t1.msdt=t4.msdt
--group by t1.msdt,t1.diem
--open x --mở con trỏ
--declare @a char(6)--a trỏ đến msdt
--fetch next from x into @a
--while(@@FETCH_STATUS=0)
--begin
----Cập nhật cột điểm trên table SV_DETAI
--declare @d1 float,@d2 float,@d3 float,@dtb float
--select @d1=diem from GV_HDDT where MSDT=@a
--select @d2=diem from GV_PBDT where MSDT=@a
--select @d3=sum(diem) from GV_UVDT where MSDT=@a
----Tính ra điểm trung bình của msdt tương ứng
--set @dtb=(@d1+@d2+@d3)/5
----dùng mệnh đề các mệnh đề if...
--declare @xl nvarchar(20)
--if(@dtb<5) set @xl=N'Không đạt'
--else
--if(@dtb<7)and(@dtb>=5) set @xl=N'Trung bình'
--else
--if(@dtb<9)and(@dtb>=7) set @xl=N'Khá'
--else set @xl=N'Giỏi'
----Cập nhật cột DIEM và XEPLOAI trên table SV)DETAI
--update SV_DETAI
--set DIEM=@dtb,xeploai=@xl where MSDT=@a
----Dịch con trỏ đến dòng tiếp theo
--Fetch next from x into @a
--end
--close x-- đóng con trỏ
--deallocate x-- giải phóng con trỏ
----kích hoạt lại các trigger(nếu có)
--alter table sv_detai enable trigger all
/*cau 120*/
--alter table detai add soluong int
/*cau 121*/
--create PROCEDURE Pro_cursor2
--as
----Vô hiệu hóa các trigger(nếu có)
--alter table DETAI disable trigger all
----Sau đó tạo con trỏ x để sử dụng
--declare x cursor for select msdt from detai
--open x --mở con trỏ
--declare @a char(6)--a trỏ đến msdt
--fetch next from x into @a
--while(@@FETCH_STATUS=0)
--begin
----Cập nhật cột điểm trên table SV_DETAI
--declare @sl int
--select @sl=COUNT(mssv) from SV_DETAI where MSDT=@a
----Cập nhật lại table DETAI
--update DETAI set soluong=@sl where MSDT=@a
----Dịch con trỏ đến dòng tiếp theo
--Fetch next from x into @a
--end
--close x-- đóng con trỏ
--deallocate x-- giải phóng con trỏ
----kích hoạt lại các trigger(nếu có)
--alter table detai enable trigger all
/*cau 122*/
--alter table sinhvien add SOLAN int
/*cau 123*/
--create proc Pro_cursor3
--as
----Vô hiệu hóa các trigger(nếu có)
--alter table sinhvien disable trigger all
----Sau đó tạo con trỏ x để sử dụng
--declare x cursor for select mssv from sinhvien
--open x --mở con trỏ
--declare @a char(6)--a trỏ đến msdt
--fetch next from x into @a
--while(@@FETCH_STATUS=0)
--begin
----Cập nhật cột điểm trên table SV_DETAI
--declare @sl int
--select @sl=COUNT(*)
--from SV_DETAI where MSSV=@a
----Cập nhật lại table SINHVIEN
--update SINHVIEN
--set solan=@sl
--where MSSV=@a
----Dịch con trỏ đến dòng tiếp theo
--Fetch next from x into @a
--end
--close x-- đóng con trỏ
--deallocate x-- giải phóng con trỏ
----kích hoạt lại các trigger(nếu có)
--alter table sinhvien enable trigger all

1 nhận xét:

ĐOÀN NGUYỄN on lúc 10:24 27 tháng 2, 2013 nói...

sss

Đăng nhận xét

Cảm ơn bạn đã nhận xét

Đăng Ký Theo Dõi

 

Copyright © 2011. Đoàn Nguyễn @ - All Rights Reserved .