日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

c mysql 视图_MySQL入门教程(七)之视图

發(fā)布時(shí)間:2024/7/23 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c mysql 视图_MySQL入门教程(七)之视图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

相關(guān)閱讀:

視圖是從一個(gè)或多個(gè)表中導(dǎo)出來(lái)的虛擬表。視圖就像一個(gè)窗口,通過(guò)這個(gè)窗口可以看到系統(tǒng)專門提供的數(shù)據(jù)。

1、視圖簡(jiǎn)介

1.1 視圖的含義

視圖是從一個(gè)或多個(gè)表中導(dǎo)出來(lái)的虛擬表,還可以從已經(jīng)存在的視圖的基礎(chǔ)上定義。

數(shù)據(jù)庫(kù)中只存放視圖的定義,而不存放視圖中的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來(lái)的表中。一旦表中的數(shù)據(jù)發(fā)生變化,顯示在視圖中的數(shù)據(jù)也會(huì)相應(yīng)變化。

MySQL的視圖并不支持輸入?yún)?shù)的功能,即交互性上較差,但對(duì)于變化不是很大的操作,使用視圖可以很大程度上簡(jiǎn)化用戶的操作。

1.2 視圖的作用

視圖起著類似于篩選的作用,具體可歸納為

(1)所見即所需,使操作簡(jiǎn)單化

(2)通過(guò)視圖,用戶只能查詢和修改指定的數(shù)據(jù),從而限制了用戶的權(quán)限,增加了數(shù)據(jù)的安全性

(3)視圖可以屏蔽原有表結(jié)構(gòu)變化帶來(lái)的影響,從而提高了表的邏輯獨(dú)立性。

2、創(chuàng)建視圖

MySQL中,創(chuàng)建視圖是通過(guò)Creat View語(yǔ)句實(shí)現(xiàn)的,具體為

其中,Algorithm為視圖選擇的算法;屬性清單指定了視圖中各個(gè)屬性的名詞,默認(rèn)情況下與Select語(yǔ)句中查詢的屬性相同;Select語(yǔ)句是一個(gè)完整的查詢語(yǔ)句,表示從某個(gè)表中查出某些滿足條件的記錄并將這些記錄導(dǎo)入到視圖中;With Check Option表示更新視圖時(shí)要保證在該視圖的權(quán)限范圍之內(nèi),CASCADED表示更新視圖時(shí)要滿足所有相關(guān)視圖和表的條件,為默認(rèn)值,Local表示更新視圖時(shí)要滿足該視圖本身的定義即可;注意在使用創(chuàng)建視圖時(shí)最好加上With Check Option,并選取默認(rèn)的CASCADED參數(shù)。從而保證從視圖派生出來(lái)的新視圖在更新后可以考慮其父視圖的約束條件,即更嚴(yán)謹(jǐn)。

(1)關(guān)于Algorithm中的三個(gè)選項(xiàng),Undefined選項(xiàng)表示MySQL將自動(dòng)選擇所要使用的算法,Merge選項(xiàng)表示將使用視圖的語(yǔ)句與視圖定義合并起來(lái),使得視圖定義的某一部分代替語(yǔ)句的對(duì)應(yīng)部分,Temptable選項(xiàng)表示將視圖的結(jié)果存入臨時(shí)表,然后使用臨時(shí)表執(zhí)行語(yǔ)句。

(2)需要注意的是,在創(chuàng)建視圖之前,需要檢查是否具有Create view的權(quán)限和查詢涉及的列的Select權(quán)限,這些權(quán)限保存在MySQL數(shù)據(jù)庫(kù)下面的user表中,可以適用select語(yǔ)句查詢,具體為

select select_priv, create_view_priv from mysql.user where user='用戶名'

其中,用戶名參數(shù)表示要查詢哪個(gè)用戶是否擁有Drop權(quán)限,在我的系統(tǒng)中,只有root用戶。

下面是一個(gè)從department表和worker表上創(chuàng)建一個(gè)名為worker_view1的視圖的案例

3、查看視圖

查看視圖必須要有show view的權(quán)限,同樣保存在user表中。

查看視圖的方法包括describe語(yǔ)句、show table status語(yǔ)句、show create view語(yǔ)句和查詢information_schema數(shù)據(jù)庫(kù)下的views表等。

3.1 describe語(yǔ)句查看簡(jiǎn)單信息

查看視圖的describe語(yǔ)句和查看表的語(yǔ)句是一樣的,因?yàn)橐晥D是一種特殊的表,基本形式為

describe 視圖名;

3.2 show table status語(yǔ)句查看基本信息

基本形式為

Show Table Status Like ‘視圖名';

3.3 show create view語(yǔ)句查看詳細(xì)信息

基本形式為

Show create view 視圖名;

3.4 在views表中查看詳細(xì)信息

MySQL中,所有視圖的定義都存在information_schema數(shù)據(jù)庫(kù)下的views表中,查詢此表即可查看到數(shù)據(jù)庫(kù)中所有視圖的詳細(xì)信息。

基本形式為

select * from information_schema.views;

其中*表示查詢所有的列的信息。

顯然用此語(yǔ)句查看到的是所有的視圖,不方便查閱,一般查詢?cè)敿?xì)信息時(shí)用3.3法即可。

4、修改視圖

當(dāng)基本表的某些字段發(fā)生改變時(shí),有必要修改視圖的定義來(lái)保持視圖和基本表之間的一致性。

4.1 Create or replace view語(yǔ)句

此語(yǔ)句很好用,在存在視圖情況下可對(duì)視圖進(jìn)行修改,在沒有視圖情況下,可以創(chuàng)建視圖,具體語(yǔ)法為

實(shí)際上,感覺此語(yǔ)句就是重新定義了個(gè)視圖并覆蓋了原始圖。vcD4NCjxoMyBpZD0="42-alter語(yǔ)句">4.2 Alter語(yǔ)句

回顧前面,alter語(yǔ)句不僅可以創(chuàng)建索引,修改表的定義,在此處,還可以修改視圖的定義。

基本形式為

5、更新視圖

更新視圖是指通過(guò)視圖來(lái)插入、更新和刪除表中的數(shù)據(jù)。

更新視圖時(shí),只能更新權(quán)限范圍內(nèi)的數(shù)據(jù)。

實(shí)際上對(duì)視圖的更新最后都是實(shí)現(xiàn)在基本表上的。

注意以下情況不能更新視圖:

(1)視圖中包含sum(),count(),max()和min()等函數(shù)

(2)視圖中包含union,union all,distinct,group by和having等關(guān)鍵字

(3)常量視圖,即視圖中的某個(gè)字段時(shí)常量類型

(4)視圖中的select中包含子查詢

(5)由不可更新的視圖導(dǎo)出的視圖

(6)創(chuàng)建視圖時(shí),algorithm選擇了temptable類型,即系統(tǒng)默認(rèn)臨時(shí)表是不可更新的

(7)視圖對(duì)應(yīng)的表上存在沒有默認(rèn)值的列,且該列沒有包含在視圖中。因?yàn)?#xff0c;在更新視圖時(shí),這個(gè)沒有默認(rèn)值的記錄將沒有值插入,也沒有NULL值插入,系統(tǒng)不允許這種情況出現(xiàn)

由于視圖的更新存在很多限制,一般,最好把視圖作為查詢數(shù)據(jù)的虛擬表,而不要通過(guò)視圖來(lái)更新數(shù)據(jù),很容易造成更新失敗。

6、刪除視圖

刪除視圖只會(huì)刪除視圖的定義,并不會(huì)刪除數(shù)據(jù)。DROP View語(yǔ)句可用來(lái)刪除視圖,但用戶必須擁有drop的權(quán)限,具體操作為

drop view [if exists] 視圖名列表 [restrict|cascade]

其中,if exists用來(lái)判斷視圖存在,存在才執(zhí)行;在視圖名列表中不同視圖名稱之間通過(guò)逗號(hào)隔開。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的c mysql 视图_MySQL入门教程(七)之视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。