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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql---视图

發布時間:2025/3/8 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql---视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

視圖是一張虛擬的表,并沒有實際存儲數據,存儲的是一種“函數關系”。

語法:

create view 視圖名 as select語句。

為什么說視圖存儲的是一種函數關系?

當引用視圖時,它會依據這樣的關系到創建視圖的各個表中去尋找相關字段。并依照這樣的關系進行運算得到結果。所以視圖不須要存儲數據,僅僅須要存儲這樣的“函數關系”。

如表1是記錄長方形長的表

長(cm)
10

如表2是記錄長方形寬的表

寬(cm)
20

如今創建一個視圖用來求長方形面積

面積
長*寬
當須要引用視圖的時候,視圖會依照函數關系“面積=長*寬”到表1和表2中取數據運算得到所需結果。實際上視圖并沒有存儲每一個長方形的面積。

以上表設計不嚴謹僅僅是為了說明問題。


表改變會改變視圖嗎?

由于是函數關系f(x,y)。當x或者y有一個變化時。f(x,y)的值一定會變化。x和y相當于創建視圖的表,f(x,y)相當于視圖。

創建一張學生成績表


各個字段分別代表“學生ID”。“數學成績”,“語文成績”。“英語成績”。


如今創建一個求各個學生平均成績的視圖


對表做一下修改,看看視圖會不會跟著一起變化


再看看視圖的內容


視圖的確變化了。所以表的變化一定會影響視圖。


視圖改變會改變表嗎?

這不一定。假設視圖和表是以一個相應的,即f(x,y)能夠反得到x,y(類似反函數關系)。

這樣的情況下。視圖改變會影響原有表。

對于求平均成績的視圖,無法由平均成績得到各科的成績,所以他們不是一一相應關系,這樣的情況Mysql不同意改變視圖



視圖有三種實現方式

merge:引用視圖時。將引用時的條件與創建視圖時的條件合并。構成新的查詢語句去各個表中查詢。

以之前的平均分視圖為例。紅色劃線為創建視圖的查詢語句


如今要求平均分前三高的學生,能夠直接引用視圖來查詢


假設algorithm設置為merge

實際的操作是將這兩次的查詢條件合并相當于


temptable:引用視圖時。先依照創建視圖的條件查詢各個表,將結果生成暫時表,再對暫時表進行查詢。

undefined:數據庫默認undefined由數據庫依據情況決定用merge還是temptable。


視圖的作用

(1)方便操作:假設要經經常使用到某個暫時表時,比方上面的平均分視圖。假設未定義視圖,每次都須要求平均分暫時表。再去對暫時表進行查詢。有視圖就非常方便。直接查詢視圖就能夠了。

(2)安全考慮:假設兩個公司合作,須要開放兩方的一些用戶信息,可是又不想發布一些涉及隱私或機密的信息(如用戶password)。能夠生成不包括password字段的視圖給對方。對方直接使用視圖就可以滿足要求。

總結

以上是生活随笔為你收集整理的mysql---视图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。