@[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