視圖算是一個mysql中一個稍微比較高級一點的知識點,它本身就是一個虛擬表,這篇文章從案例出發介紹mysql中的視圖。
一、理解視圖
還記得在剛剛學習視圖的時候,總是和表的概念分不清。我們可以這樣來理解。小學的時候,每年都會舉辦一次抽考活動,意思是從每一個班級裡面篩選出幾個優秀的同學去參加考試。這時候每一個班級就可以當作是一張真實的表,很多班級篩選出來的這些同學就可以臨時組成一個班級,這個班級就可以當作一個視圖,也就是說,這個班級其實不是真實存在的,當考試過後,這些學生還是各回各家各找各媽。
mysql從5.1的版本開始有視圖功能的,通常情況下,視圖是為了封裝一些複雜的操作或者是一些重複的操作。比如說在多個地方使用相同的查詢結果,再或者是sql語句比較複雜,封裝成視圖,下一次直接使用即可。
視圖的作用:
(1)提高了重用性,對數據庫重構,卻不影響程序的運行,
(2)提高了安全性,可以對不同的用戶,讓數據更加清晰,特別是查詢操作,減少複雜的SQL語句,
(3)增強可讀性;更加安全,數據庫授權命令不能限定到特定行和特定列,但是通過合理創建視圖,可以把權限限定到行列級別;
二、視圖操作
創建視圖:
create view 視圖名 as select 字段名稱 from 表名……;
查看視圖:
(1)describe 視圖名;
(2)show table status like '視圖名'\\G;
(3)show create view 視圖名;
(4)select * from information_schema.views;
修改視圖:
create view 視圖名 as select 字段名稱 from 表名……. ;
alter view 視圖名 as select 字段名稱 from 表名……;
更新視圖:
(1)update 視圖名 set 字段名=值;
(2)insert into 表名 values(值,值…);
(3)delete from 視圖名 where 字段=值;
刪除視圖:
drop view if exists 視圖名;
下面舉個例子看看吧。
三、舉例演示
在這裡使用的是單表下創建視圖
在這裡新建了一個user表,然後往裡面插入了幾條數據。下面我們新建一個視圖再去使用。
現在我們創建了一個視圖名字叫做user_view,然後選擇了其中幾條字段,使用的時候就可以像正常表一樣去使用了。在多表情況下創建視圖也是一樣的,只是在select語句的時候再多表鏈接查詢而已。
閱讀更多 Java的架構師技術棧 的文章