@[toc]sql
CREATE VIEW F_Student AS SELECT * FROM Student WHERE Sex='女'
SELECT COUNT(*) FROM F_Student WHERE Sage<18
CREATE VIEW CS_Student AS SELECT Sno,Sname,Sex,Sage,Sdept FROM Student WHERE Sdept= '计算机系' WITH CHECK OPTION
INSERT INTO CS_Student VALUES('19250101','王芳','女',20,'计算机系') 有限制:所插入的数据在Sdept列上必须是“计算机系” 5.经过视图CS_Student删除姓名为“徐庆”的学生记录,可否成功?为何?(10分) DELETE FROM CS_Student WHERE Sname='徐庆' go --执行结果显示0行受影响,则说明未删除成功 SELECT * FROM Student WHERE Sname='徐庆' go --执行查询依然可看到该生信息 缘由:徐庆并不是“计算机系”学生,所以没法透过视图“CS_Student”来实现删除功能。
CREATE VIEW DB_SC(Sno,Sname,Sdept,Cname,Score) AS SELECT Student.Sno,Sname,Sdept,Course.Cname,Score FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Cname='数据库原理'
CREATE VIEW DB_SC_60 AS SELECT * FROM DB_SC WHERE Score>=60 8.将每门课程及其平均分创建视图,视图名自定义(5分) CREATE VIEW Cour_AVG(Cno,Cavg) AS SELECT Cno, AVG(Score) FROM SC GROUP BY Cno go Select * from Cour_AVG GO
ALTER VIEW F_Student AS SELECT * FROM Student WHERE Sex='男'
DROP VIEW F_Student
存储过程数据库
CREATE PROCEDURE PROC_STU AS SELECT * FROM Student GO EXEC PROC_STU go
CREATE PROCEDURE PROC_SELECT_SEX_COUNT AS SELECT Sex,COUNT(Sno) FROM Student GROUP BY Sex GO EXEC PROC_SELECT_SEX_COUNT GO
CREATE PROCEDURE PROC_SELECT_COUNT_BYDEPT @Dept varchar(50) AS SELECT COUNT(Sno) FROM Student WHERE Sdept=@Dept GROUP BY Sdept go EXEC PROC_SELECT_COUNT_BYDEPT '计算机系' go
CREATE PROCEDURE PROC_COURSE_PRE @cname varchar(50),@precname varchar(50) OUTPUT AS SELECT @precname=Cname FROM Course WHERE Cno IN(SELECT Cpno FROM Course WHERE Cname=@cname) GO DECLARE @name varchar(50),@pre varchar(50) SET @name='数据库原理' EXEC PROC_COURSE_PRE @name,@pre OUTPUT PRINT @pre go