1. 濡傛灉瑕佸湪鏁版嵁搴撹〃涓鍒涘緩涓涓瑙嗗浘錛屽簲褰撴庝箞鍋氾紵
浣跨敤create view璇鍙ュ氨鍙浠ュ壋寤鴻嗗浘浜嗭紝鍏蜂綋璇鍙ュ備笅錛
create view viewname as select * from Tab_EdsProd錛圱ab_EdsProd鏄琛ㄧ殑鍚嶅瓧錛墂here 錛堝悗闈㈠彲浠ユ帴涓綰塊檺鍒剁殑鏉′歡錛夈
鍒犻櫎瑙嗗浘錛歞rop view viewname銆
鎵╁睍璧勬枡錛
瑙嗗浘鐨勪綔鐢錛
1銆佷嬌鐢ㄨ嗗浘錛屽彲浠ュ畾鍒剁敤鎴鋒暟鎹錛岃仛鐒︾壒瀹氱殑鏁版嵁銆
2銆佷嬌鐢ㄨ嗗浘錛屽彲浠ョ畝鍖栨暟鎹鎿嶄綔銆
3銆佷嬌鐢ㄨ嗗浘錛屽熀琛ㄤ腑鐨勬暟鎹灝辨湁浜嗕竴瀹氱殑瀹夊叏鎬с傚洜涓鴻嗗浘鏄鉶氭嫙鐨勶紝鐗╃悊涓婃槸涓嶅瓨鍦ㄧ殑錛屽彧鏄瀛樺偍浜嗘暟鎹鐨勯泦鍚堬紝鎴戜滑鍙浠ュ皢鍩鴻〃涓閲嶈佺殑瀛楁典俊鎮錛屽彲浠ヤ笉閫氳繃瑙嗗浘緇欑敤鎴楓
瑙嗗浘鏄鍔ㄦ佺殑鏁版嵁鐨勯泦鍚堬紝鏁版嵁鏄闅忕潃鍩鴻〃鐨勬洿鏂拌屾洿鏂般傚悓鏃訛紝鐢ㄦ埛瀵硅嗗浘錛屼笉鍙浠ラ殢鎰忕殑鏇存敼鍜屽垹闄わ紝鍙浠ヤ繚璇佹暟鎹鐨勫畨鍏ㄦс
4銆佷嬌鐢ㄨ嗗浘鍙浠ュ悎騫跺垎紱葷殑鏁版嵁錛屽壋寤哄垎鍖鴻嗗浘銆
鍙傝冭祫鏂錛鐧懼害鐧劇-sql璇鍙ュぇ鍏
2. 資料庫如何創建視圖
視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。
對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其它資料庫的一個或多個表,或者其它視圖。通過視圖進行查詢沒有任何限制,通過它們進行數據修改時的限制也很少。
視圖是存儲在資料庫中的查詢的SQL 語句,它主要出於兩種原因:安全原因, 視圖可以隱藏一些數據,如:社會保險基金錶,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等,另一原因是可使復雜的查詢易於理解和使用。這個視圖就像一個「窗口」,從中只能看到你想看的數據列。這意味著你可以在這個視圖上使用SELECT *,而你看到的將是你在視圖定義里給出的那些數據列:
既然視圖的定義是基於基本表的,哪為什麼還要定義視圖呢?這是因為合理地使用視圖能夠帶來許多好處:
1、 視圖能簡化用戶操作
視圖機制使用戶可以將注意力集中在所關心地數據上。如果這些數據不是直接來自基本表,則可以通過定義視圖,使資料庫看起來結構簡單、清晰,並且可以簡化用戶的的數據查詢操作。例如,那些定義了若干張表連接的視圖,就將表與表之間的連接操作對用戶隱藏起來了。換句話說,用戶所作的只是對一個虛表的簡單查詢,而這個虛表是怎樣得來的,用戶無需了解。
2、 視圖使用戶能以多種角度看待同一數據
視圖機制能使不同的用戶以不同的方式看待同一數據,當許多不同種類的用戶共享同一個資料庫時,這種靈活性是非常必要的。
3、 視圖對重構資料庫提供了一定程度的邏輯獨立性
數據的物理獨立性是指用戶的應用程序不依賴於資料庫的物理結構。數據的邏輯獨立性是指當資料庫重構造時,如增加新的關系或對原有的關系增加新的欄位,用戶的應用程序不會受影響。層次資料庫和網狀資料庫一般能較好地支持數據的物理獨立性,而對於邏輯獨立性則不能完全的支持。
在關許資料庫中,資料庫的重構造往往是不可避免的。重構資料庫最常見的是將一個基本表「垂直」地分成多個基本表。例如:將學生關系Student(Sno,Sname,Ssex,Sage,Sdept),
分為SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)兩個關系。這時原表Student為SX表和SY表自然連接的結果。如果建立一個視圖Student:
[sql]view plain
CREATEVIEWStudent(Sno,Sname,Ssex,Sage,Sdept)ASSELECTSX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROMSX,SYWHERESX.Sno=SY.Sno;
這樣盡管資料庫的邏輯結構改變了(變為SX和SY兩個表了),但應用程序不必修改,因為新建立的視圖定義為用戶原來的關系,使用戶的外模式保持不變,用戶的應用程序通過視圖仍然能夠查找數據。
當然,視圖只能在一定程度上提供數據的邏輯獨立,比如由於視圖的更新是有條件的,因此應用程序中修改數據的語句可能仍會因為基本表構造的改變而改變。
4、視圖能夠對機密數據提供安全保護
有了視圖機制,就可以在設計資料庫應用系統時,對不同的用戶定義不同的視圖,使機密數據不出現在不應該看到這些數據的用戶視圖上。這樣視圖機制就自動提供了對機密數據的安全保護功能。例如,Student表涉及全校15個院系學生數據,可以在其上定義15個視圖,每個視圖只包含一個院系的學生數據,並只允許每個院系的主任查詢和修改本原系學生視圖。
5、適當的利用視圖可以更清晰地表達查詢
例如經常需要執行這樣的查詢「對每個學生找出他獲得最高成績的課程號」。可以先定義一個視圖,求出每個同學獲得的最高成績:
[sql]view plain
CREATEVIEWVMGRADE
AS
SELECTSno,MAX(Grade)Mgrade
FROMSC
GROUPBYSno
然後用如下的查詢語句完成查詢:
[sql]view plain
SELECTSC.Sno,CnoFROMSC,VMGRADEWHERESC.Sno=VMGRADE.SnoANDSC.Grade=VMGRADE.Mgrade;
二、數據准備
1、員工表
[sql]view plain
CREATETABLEt_employee(
IDINTPRIMARYKEYAUTO_INCREMENT,
NAMECHAR(30)NOTNULL,
SEXCHAR(2)NOTNULL,
AGEINTNOTNULL,
DEPARTMENTCHAR(10)NOTNULL,
SALARYINTNOTNULL,
HOMECHAR(30),
MARRYCHAR(2)NOTNULLDEFAULT'否',
HOBBYCHAR(30)
);
插入數據:
[sql]view plain
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'小紅','女',20,'人事部','4000','廣東','否','網球');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'明日','女',21,'人事部','9000','北京','否','網球');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'天天','男',22,'研發部','8000','上海','否','音樂');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'大大','女',23,'研發部','9000','重慶','否','無');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'王下','女',24,'研發部','9000','四川','是','足球');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'無名','男',25,'銷售部','6000','福建','否','游戲');
INSERTINTOlearning.t_employee(ID,NAME,SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY)VALUES(NULL,'不知道','女',26,'銷售部','5000','山西','否','籃球');
插入的結果:
結果顯示插入失敗
對於with check option用法,總結如下:
通過有with check option選項的視圖操作基表(只是面對單表,對連接多表的視圖正在尋找答案),有以下結論: 插入後的數據,通過視圖能夠查詢出來就符合WITH CHECK OPTION 否則就不符合;
首先視圖只操作它可以查詢出來的數據,對於它查詢不出的數據,即使基表有,也不可以通過視圖來操作。
1.對於update,有with check option,要保證update後,數據要被視圖查詢出來
2.對於delete,有無with check option都一樣
4.對於insert,有with check option,要保證insert後,數據要被視圖查詢出來
對於沒有where 子句的視圖,使用with check option是多餘的
7、刪除視圖
[sql]view plain
DROPVIEWIFEXISTS視圖名
等
3. Access資料庫「設計」視圖窗口由哪幾部分組成
大體就這三部分:設計視圖、菜單、工具箱(有時候可能需要在視圖里勾選)。
設計視圖:用來對你的窗體控制項或者頁面等元素進行排版。
菜單:默認菜單可以隨時返回其它對象中,例如創建查詢等等。也可以通過快捷菜單創建內置類型的窗體(例如數據表窗體等)。
工具箱:主要用於選擇控制項以便在設計視圖中生成。
4. 資料庫設計時「用戶視圖」和「E-R圖」區別
E-R圖是進行資料庫的概念結構設計的時候所使用的一種工具,而視圖是我們查看資料庫中數據的一種方式而已,是一種虛表,並不保存數據,實際上就是保存在系統中的查詢語句。視圖包括系統視圖、用戶視圖。而用戶視圖是用戶根據自己的需要創建的。
5. (50) 資料庫概念設計的過程中,視圖設計一般有三種設計次序,以下各項中不對的是______。 A. 自頂向下 B.
(50)[答案復]D
[考點]資料庫設制計基礎
[評析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然後逐步細化
2、自底向上。先局部概念結構,再集成為全局結構
3、由里向外。先核心結構,再向外擴張
4、混合策略。1與2相結合,先自頂向下設計一個概念結構的框架,再自底向上為框架設計局部概念結構