好程序員Java教程:SQL語言之視圖,前言:程序員
本章咱們將學習MySQL中的視圖,視圖是數據庫中的重要組件,本文將從視圖是什麼,視圖的做用,建立和使用視圖以及修改視圖這些方面講解視圖。數據庫
視圖View是一種虛擬的表,自己不保存數據,內部封裝了一條SELECT語句,數據來源於查詢的一張或多張實際數據的表。安全
視圖的結構和真實的表相同,也是有行和列組成,在視圖上也能夠進行增刪改查的操做。函數
視圖主要用於查詢,使用視圖的優勢是:學習
1) 簡單spa
視圖能夠將複雜的查詢語句進行封裝,用戶使用時不須要關心表的結構、鏈接關係、篩選條件、分組和排序等等,只須要對視圖進行簡單的查詢。blog
2) 安全排序
建立視圖時,能夠篩選掉一些不但願用戶看到的行和列,也能夠給視圖設置訪問權限,讓不一樣級別的用戶看到不一樣的視圖,從而提升數據庫的數據安全性。教程
建立視圖io
create view視圖名
as
select語句;
刪除視圖
drop view視圖名;
修改視圖
replace view 視圖名
as
select語句;
使用視圖
selec * from 視圖名 [where 條件];
代碼案例:
注意:在建立視圖時,查詢語句中的別名會做爲視圖的列名
視圖主要用於查詢,可是也能夠執行insert、update和delete語句,結果會映射到視圖關聯的實際表中。
執行上面代碼的結果是,實際的tb_student表被更新了。
執行上面代碼的結果是,更新失敗,出現錯誤:
爲何有的視圖能夠更新,而有的會失敗呢?
下面狀況的視圖不能夠執行insert、update和delete操做:
1)多表鏈接
2)包含distinct
3)包含聚合函數
4)包含group by
5)包含order by
6)包含union、union all
7)包含子查詢等
因此對視圖執行DML操做的限制條件仍是不少的,大多數狀況下咱們仍是對視圖進行查詢,若是須要DML操做仍是建議對實際表進行操做。
視圖是一種虛擬的表,數據來源於從實際表中查詢的結果,它能夠簡化查詢操做,以及提升數據庫的安全性,本章學習了視圖的建立和使用語法,視圖能夠修改可是有比較多的限制條件,通常仍是用於查詢。