国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據庫SQL語言語法總結5---視圖

2019-11-09 13:28:35
字體:
來源:轉載
供稿:網友

一 :創建 (只創建邏輯結構,沒有實際的數據)(視圖就是顯示物理數據,不額外創建其他數據) create view <視圖名> [(<列名1>[,<列名2>]…)] as <子查詢> [with check option] 作用:顯示符合子查詢條件的列1 列2……. [with check option]表示當用戶做更新操作時,是否進行約束條件的檢查(例2將詳細敘述)

下面結合幾個例子幫助各位看客來了解以上語句的用法:

前提條件: 數據庫中現存在3個關系表 Student (Sno ,Sname,Ssex,Sage,Sdept); 解釋:學生(學號,學生姓名,學生性別,學生年齡,學生專業); Course(Cno,Cname,Cpno); 解釋:課程(課程號,課程名,可能的先修課程); SC(Sno,Cno,Grade); 解釋:學生選課情況(學號,課程號,成績)

例1:顯示IS專業的學生的學號,姓名,年齡,并將視圖名改為IS_ Student—————— create view IS_Student as select Sno,Sname,Sage from Student where Sdept = ‘IS’

例2:顯示IS專業的學生的學號,姓名,年齡,并將視圖名改為IS_ Student—————— create view IS_Student as select Sno,Sname,Sage from Student where Sdept=’IS’ with check option

[with check option]的意思是,當用戶插入新的記錄時,視圖檢測是否滿足約束條件(Sdept=’IS’),不加[with check option]則數據庫不檢測專業是否為IS。

例3:顯示IS_ S1視圖,其中包換學號姓名和年級這三個屬性,這個視圖描述的是專業為IS且選修了1號課程的學生—————create view IS_S1(Sno,Sname,Grade) as select Student.Sno,Sname,Grade from Student,SC where Sdept = ‘IS’ and Student.Sno=SC.Sno and SC.cno=’1’ (此例中屬性列名稱必不可少,且Sno因為在Student和SC中都存在,所以必須顯性指出是Student下的)

例4: create view IS_S2 as select * from IS _S1 where Grade >=90 ——在例3的基礎上篩選出分數在90分以上的學生的信息(此例子只為表明select可以從視圖中選擇查詢)

例5: 顯示視圖,顯示每個學生的學號和選修的課程的平均分—————create view S_G(Sno,Gavg) as select Sno,avg(Grade) from SC group by Sno

二:刪除視圖 drop view <視圖名> 例: drop view IS_S1 ——–將這個視圖清除,并且使建立在此視圖基礎上的其他視圖都不再起作用

三:查詢視圖 例1:select * from IS_Student where Sage<20 (IS _Student詳細信息來自于一中的例2) 這個語句在數據庫內部被轉化為 select Sno,Sname,Sage from Student where Sdept=’IS’ and Sage <20

例2: 查詢IS專業且選修了1號課程的學生的學號和姓名————select Sno,Sname from IS_Student,SC where IS _Student.Sno=SC.Sno and SC,Cno=’1’ (from后可以跟視圖和關系表)

例3:查詢平均分>=90的學生的學號和平均分————–select * from S_G where Gavg>=90 (S _G詳細信息來自于一中的例5)

四:更新視圖 例1:update IS_Student set Sname=’劉晨’ where Sno=’95020’; 在數據庫內部等價于 update Student set Sname=’劉晨’ where Sno=’95020’ and Sdept=’IS’; (如create 視圖時沒有加 with check option ,則數據庫內部等價于update Student set Sname=’劉晨’ where Sno=’95020’)

例2: insert into IS_Studnet values(‘95020’,’趙新’,20); 如創建視圖時加with check option,則數據庫內部等價于 insert into Student(Sno,Sname,Sage,Sdept) values(‘95020’,’趙新’,20,’IS’),否則則等價于Student(Sno,Sname,Sage) values(‘95020’,’趙新’,20)專業為空

當然有些視圖不允許更新: 1)視圖由兩個以上的基本表導出 2)視圖的字段來自字段表達式(經過運算)或常數 3)視圖的字段來自集合函數 4)視圖定義含group by子句(存在group by語句 時查詢也會受到影響) 5)視圖定義中含distinct短語 6)視圖定義中有嵌套查詢,并且內層查詢中的from子句設計的表也是導出該視圖的基本表 7)一個不允許更新的視圖上定義的視圖也不允許更新

不允許更新視圖時就不要將數據的更新操作的權利下放給用戶


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰溪市| 庐江县| 长垣县| 双牌县| 龙山县| 呼玛县| 通州区| 江永县| 平罗县| 甘泉县| 竹山县| 介休市| 界首市| 澄迈县| 苍梧县| 霍城县| 临桂县| 武川县| 正宁县| 柳江县| 灵石县| 凉山| 西贡区| 洪洞县| 宜城市| 芒康县| 长治市| 池州市| 玛纳斯县| 收藏| 湘阴县| 顺义区| 延吉市| 黄浦区| 灵武市| 甘泉县| 石屏县| 尖扎县| 兴安盟| 肃北| 南江县|