SQL语法整理(五)-视图
視圖
含義:從數據庫一個或多個表中導出的虛擬表
作用:
方便用戶操作: 要求所見即所需,無需添加額外的查詢條件,直接查看
增加數據的安全性:通過視圖,用戶只能查看或修改指定的數據
提高表的獨立邏輯性:原有數據表結構的變化,不會影響視圖,如果修改原有列,則只需修改視圖即可。
- 創建視圖
語法:
MYSQL
create
[algorithm = {undefined | merge | temptable}]
view 視圖名[{屬性清單}]
as select 語句
[with [cascaded|local] check option];
algorithm:選擇的算法
with check option:表示更新視圖時要保證在該視圖的權限范圍之內
undfined:表示MySQL 自動選擇所需使用的算法
merge:表示將視圖的語句與視圖的定義合并,使得視圖定義的某一部分取代語句的對應部分
temptable:將視圖的結果存入臨時表
cascaded:表示更新視圖時要滿足所有相關視圖和表的條件
local:表示更新視圖時,要滿足該視圖本身的定義的條件即可
Mssql
create
view 視圖名 as select 語句;
是否有權限創建?(mysql)
通過SQL 查詢:
select select_priv,create_view_priv from mysql.user where user = ‘root’;
創建視圖
在單表上創建視圖:
eg: create view department_view1 as select * from department; create view department_view2(name) as select d_name from department;在多表上創建視圖
create algorithm = merge view employee_view1(name,department,sex,age,address) as select name,dept.d_name,sex,age,address from employee emp inner join department dept on emp.e_no = dept.e_no with local check option;查看視圖(mysql)
desc 查看
eg: desc department_view1;查看視圖 (mssql)
sp_helptext查看
eg: exec sp_helptext department_view1;在sysobjects表中查看(狀態)
eg: select * from sysobjects where name = 'enployee_view1'查看視圖(Oracle)
在user_views 表中查看(定義)
修改視圖
通過create or replace view 修改(mysql)
沒有則創建,有則修改
通過alter 修改
只能修改不能創建
- 更新視圖
注:更新視圖實際上是更新表;并非所有的視圖都能更新;
視圖不能更新情況:
視圖中包含聚合函數
視圖中包含union、union all、distinct、group by和having等關鍵字
eg: create view employee_view5(name,sex,address) as select name,sex,address from employee group by e_np;常量視圖
eg:create view employee_view6 as select 'Boyce' as name;視圖中的select 中包含子查詢
eg: create view employee_view7(name) as select (select name from employee);由不可更新的視圖導出的視圖(mysql)
eg: create view employee_view8 as select * from employee_view7;創建視圖時,algorithm 為temptable 類型(mysql)
eg: create algorithm = temptable view employee_view9 as select * from employee;視圖對應的表上存在沒有默認值的列,而且該列沒有包含在視圖里。[最好視圖僅限于查詢,若要更新則要考慮全面,否則會造成更新失敗]
- 刪除視圖
語法:
drop view [if exists] 視圖列表
判斷用戶是否有權限:
eg: select drop_priv from mysql.user where user = 'root';---------------------如有錯誤歡迎指證-------------------------------
總結
以上是生活随笔為你收集整理的SQL语法整理(五)-视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS3笔记之基础篇(一)边框
- 下一篇: python数据库安装_python数据