太原理工大学软件学院数据库实验四(2021.4.26)
CREATE TABLE Student
( Sno CHAR(8) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK( Ssex in ('男','女')),
Sage SMALLINT,
Sdept CHAR(20),
Sclass CHAR(4) NOT NULL,
Stotal smallint DEFAULT 0
);
CREATE TABLE Course
( Cno CHAR(4) CONSTRAINT FK_Course PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4) ,
Ccredit SMALLINT
);
CREATE TABLE SC
( Sno CHAR(8) FOREIGN KEY (Sno) REFERENCES Student(Sno),
Cno CHAR(4),
Grade SMALLINT CONSTRAINT SC_CHECK CHECK(Grade >0 AND Grade<100),
PRIMARY KEY (Sno,Cno),
CONSTRAINT FK_SC FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
select *from SC
INSERT INTO Student VALUES('20100001','李勇','男',20,'CS','1001',0)
INSERT INTO Student VALUES('20100002','刘晨','女',19,'CS','1001',0)
INSERT INTO Student VALUES('20100021','王敏','女',18,'MA','1001',0)
INSERT INTO Student VALUES('20100031','张立','男',19,'IS','1001',0)
INSERT INTO Student VALUES('20100003','刘洋','女',null,null,'1001',0)
INSERT INTO Student VALUES('20100010','赵斌','男',19,'IS','1001',0)
INSERT INTO Student VALUES('20100022','张明明','男',19,'CS','1001',0)
select * from Student
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('1','数据库系统原理', '56',4)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('2','高等数学', null,2)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('3','信息管理系统', '1',4)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('4','操作系统原理', '6',3)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('5','数据结构', '7',4)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('6','数据处理', null,2)
INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VALUES('7','C语言', null,4)
select * from Course
INSERT INTO SC VALUES('20100001','1',92)
INSERT INTO SC VALUES('20100001','2',85)
INSERT INTO SC VALUES('20100001','3',88)
INSERT INTO SC VALUES('20100002','1',90)
INSERT INTO SC VALUES('20100002','2',80)
INSERT INTO SC VALUES('20100003','1',null)
INSERT INTO SC VALUES('20100010','3',null)
select * from SC
ALTER TABLE Course ADD UNIQUE(Cname)
ALTER TABLE Course ADD FOREIGN KEY (Cpno) REFERENCES Course(Cno)
ALTER TABLE SC DROP CONSTRAINT SC_CHECK
ALTER TABLE SC ADD CONSTRAINT SC_CHECK CHECK(Grade >=0 AND Grade<=100)
INSERT INTO Student VALUES('20100101','李斌','男',20,'CS','1001',0)
INSERT INTO Student VALUES('20100001','李斌','男',20,'CS','1001',0)
UPDATE Student SET Sno='20100021' WHERE Sname = '张立'
INSERT INTO SC VALUES('20100001','1',78)
INSERT INTO SC VALUES('20100001',null,78)
INSERT INTO Course VALUES('8','JAVA',7, 3)
INSERT INTO Course VALUES('9','数据结构',7, 3)
INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('20100102','张盛','男','1008')
SELECT * FROM Student WHere Sno='20100102'
INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('20100103','张盛','男',NULL)
INSERT INTO Student(Sno,Sname,Ssex) VALUES('20100104','张盛','男')
INSERT INTO SC VALUES('20100001','4',95)
INSERT INTO SC VALUES('20100001','4',102)
INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('20100103','张盛','男','1008')
INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('20100104','张盛','','1008')
INSERT INTO SC VALUES('20100301','1',95)
INSERT INTO SC VALUES('20100001','10',95)
UPDATE SC SET Cno = '10' Where Cno='1'
UPDATE Course SET Cno = '10' Where Cno='3'
DELETE Student WHERE Sno='20100021'
DELETE Student WHERE Sno='20100001'
UPDATE Course SET Cno = '10' WHERE Cname = '数据库系统原理'
CREATE TRIGGER tr_INSERT ON SC
FOR INSERT
AS
DECLARE @sno char(8)
DECLARE @cridit int
DECLARE @cno char(4)
SELECT @sno=Sno,@cno=Cno FROM inserted
SELECT @cridit = Ccredit
FROM SC join Course ON (SC.Cno = Course.Cno)
WHERE SC.Cno = @cno
UPDATE Student SET Stotal = Stotal + @cridit
WHERE Sno = @sno
GO
CREATE TABLE LOG_TABLE
(
username char(10),
date datetime,
Sno char(8) ,
Cno char(4)
)
CREATE TRIGGER tr_UPDATE ON SC
FOR INSERT,UPDATE
AS
DECLARE @sno char(8)
DECLARE @cno char(4)
DECLARE @new smallint
SELECT @sno=Sno,@cno=Cno FROM inserted
INSERT INTO LOG_TABLE VALUES(CURRENT_USER,getdate(),@Sno,@Cno);
GO
INSERT INTO SC VALUES('20100001','6',95)
select * from student
select * from LOG_TABLE