/*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
Subscribe to:
Post Comments
(
Atom
)
Thêm khóa ngoại
ReplyDeleteAlter table sua
Add constraint fk_hang_sua foreign key (MaHangSua) references hang_sua(MaHangSua)