SQL server 視圖的創建與更新

 

----1  建立計算機系學生的視圖 CS_Student。
CREATE VIEW CS_Student(SNO,SNAME,SAGE,SDEPT)
As
	SELECT SNO,SNAME,SAGE,SDEPT
	FROM STUDENT
	WHERE SDEPT='CS'

SELECT* --對視圖進行查詢
FROM CS_Student
    
----2、 建立信息系學生的視圖IS_Student,並要求進行修改和插入操作時仍需保證該視圖只有信息系的學生 。
 CREATE VIEW  IS_Student (SNO,SNAME,SAGE,SDEPT)
 AS
	SELECT SNO,SNAME,SAGE,SDEPT
	FROM STUDENT
	WHERE SDEPT='IS'
WITH CHECK OPTION --對視圖進行UPDATE,INSERT和DELETE操作時要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達式)
         	        
----3、 向視圖IS_Student 中插入兩條記錄('2000003','王麗',19,'IS'),('2000004','王小麗',19,'CS')。(能執行嗎?爲什麼)      
INSERT
INTO IS_Student(SNO,SNAME,SAGE,SDEPT)
VALUES  ('2000003','王麗',19,'IS'),
        ('2000004','王小麗',19,'CS') ---不可以執行,因爲在創建視圖的時候指定了只能插入IS,不能含有其他的不屬於IS的記錄
        --把 CS改爲IS就可以插入了
          
----4、將視圖CS_Student 中學號爲‘2000002’的學生系別改爲信息系IS.
UPDATE CS_Student
SET SDEPT='IS'
WHERE SNO IN(
	SELECT SNO
	FROM CS_Student
	WHERE SNO='2000002')	--視圖的更新
		 
----5、將視圖IS_Student 中學號爲‘2000001’的學生系別改計算機系CS.(能執行嗎?)	
UPDATE	IS_Student
SET SDEPT='CS'
WHERE SNO IN(
	SELECT SNO
	FROM IS_Student
	WHERE SNO='2000001')--不能執行。由於with check option的限制對視圖進行更新後要保證視圖IS_Student中只含有信息系IS的學生
	
----6、 建立信息系選修了1號課程的學生的視圖IS_S1(包括學號、姓名、成績)。 
CREATE  VIEW  IS_S1(SNO,SNAME,GRADE)
AS
	SELECT STUDENT.SNO,SNAME,GRADE
	FROM STUDENT,SC
	WHERE STUDENT.SNO=SC.SNO AND SDEPT='IS' AND CNO='1'

----7、 定義一個反映學生出生年份的視圖BT_S。

CREATE VIEW BT_S(SNO,SNAME,BIRTHDAY)
AS
	SELECT SNO,SNAME,2020-SAGE
	FROM STUDENT
    
----8,  將學生的學號及平均成績定義爲一個視圖S_G.

CREATE VIEW S_G(SNO,AVG_G)
AS
	SELECT  SNO,AVG(GRADE)
	FROM SC
	GROUP BY SNO  
 
----9, 刪除信息系學生視圖IS_Student中學號爲”2000001”的記錄 。
DELETE
FROM IS_Student
WHERE SNO='2000001' --記錄的刪除

----10,  刪除視圖IS_S1	

DROP VIEW IS_S1 --視圖表的刪除

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章