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

首頁 > 數據庫 > MySQL > 正文

Mysql之視圖小結

2024-07-24 12:59:37
字體:
來源:轉載
供稿:網友

使用視圖的大部分情況是為了保障數據安全性,提高查詢效率 。

什么是視圖? 視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。 視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。 這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。 數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些數據存放在原來的表中。 使用視圖查詢數據時,數據庫系統會從原來的表中取出對應的數據。 視圖中的數據依賴于原來表中的數據,一旦表中數據發生改變,顯示在視圖中的數據也會發生改變。

使用視圖的理由是什么? 1.安全性。一般是這樣做的:創建一個視圖,定義好該視圖所操作的數據。之后將用戶權限與視圖綁定。這樣的方式是使用到 了一個特性:grant語句可以針對視圖進行授予權限。 2.查詢性能提高。 3.有靈活性的功能需求后,需要改動表的結構而導致工作量比較大。那么可以使用虛擬表的形式達到少修改的效果。這是在實際開發中比較有用的。例子:假如因為某種需要,a表與b表需要進行合并起來組成一個新的表c。最后a表與b表都不會存在了。而由于原來程序中編寫sql分別是基于a表與b表查詢的,這就意味著需要重新編寫大量的sql(改成向c表去操作數據)。而通過視圖就可以做到不修改。定義兩個視圖名字還是原來的表名a和b。a、b視圖完成從c表中取出內容。 說明:使用這樣的解決方式,基于對視圖的細節了解越詳細越好。因為使用視圖還是與使用表的語法上沒區別。比如視圖名a,那么查詢是”select * from a”。 4.復雜的查詢需求。可以進行問題分解,然后將創建多個視圖獲取數據。將視圖聯合起來就能得到需要的結果了。視圖的工作機制:當調用視圖的時候,才會執行視圖中的sql,進行取數據操作。視圖的內容沒有存儲,而是在視圖被引用的時候才派生出數據。這樣不會占用空間,由于是即時引用,視圖的內容總是與真實表的內容是一致的。視圖這樣設計有什么好處?節省空間。內容是總是一致的話,那么我們不需要維護視圖的內容,維護好真實表的內容,就可以保證視圖的完整性了。

更新視圖可以更新真實表。 原因,我是這樣理解的:視圖并沒有保存內容。只是引用數據。那么,更新視圖,其實就是以引用的方式操作了真實表。 with check option:這個可選子句用于對視圖進行更新操作的時,檢查更新后的值是否還是滿足視圖公式定義的條件。通俗點,就是所更新的結果是否還會在視圖中存在。如果更新后的值不在視圖范圍內,就不允許更新如果創建視圖的時候,沒有加上with check option,更新視圖中的某項數據的話,MySQL并不會進行有效性檢查。刪掉了就刪掉了。在視圖中將看不到了。

創建視圖 create or replace view mysql_test.customers_view as select * from mysql_test.customers where cust_sex=”M” with check option;//創建視圖customers_view,當該視圖存在時,會替換原有視圖

修改視圖定義 修改視圖的定義,可以通常先使用drop view 語句,再使用create view語句的過程來實現。也可以直接使用上面的create or replace view 語句來實現。

刪除視圖 drop view mysql_test.customers_view;//刪除視圖

查看視圖定義 show create mysql_test.customers_view;

更新視圖數據 insert into mysql_test.customers_view values(909,’周明’,’洪水區’); update mysql_test.customers_view set cust_address=’上海市’; 注意,若一個視圖依賴于多個基礎表,則一次視圖數據修改操作只能改變一個基礎表中的數據。在視圖中包含分組或聚合的話,就不允許進行數據更新。

刪除視圖數據 delete from mysql_test.customers_view where cust_name=’周明’; 注意,對于依賴多個基礎表的視圖,不能使用delete語句。

視圖查詢 視圖一經定義后,就可以如同查詢數據庫中的表一樣對視圖進行數據查詢,這也是對視圖使用最多的一種操作。視圖用于查詢檢索,主要體現在這樣一些應用: (1)利用視圖簡化復雜的表連接 (2)使用視圖重新格式化檢索出的數據 (3)使用視圖過濾不需要的數據

對視圖的進一步說明 (1)視圖不能索引,也不能有關聯的觸發器,默認值或規則。 (2)視圖可以和表一起使用。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华池县| 慈利县| 裕民县| 三门县| 大足县| 汶川县| 石林| 香港| 鲁山县| 阳东县| 五河县| 博湖县| 梅州市| 盘锦市| 许昌县| 通渭县| 晴隆县| 赤城县| 桃园县| 庄河市| 浑源县| 景宁| 阿克| 牟定县| 宜都市| 沭阳县| 阳原县| 桂阳县| 普兰店市| 阿拉善左旗| 马关县| 泾阳县| 余江县| 镇原县| 花莲县| 永年县| 合肥市| 沁水县| 綦江县| 无极县| 大方县|