Mysql檢視:
修改檢視需要create view 和 delete 許可權。
表和檢視的命令在同一個名稱空間中,所以同一個資料庫不能有表名和檢視名重複。
可以對其他資料庫中的表建檢視
檢視的定義有以下的限制:
1、from子句中不能有子查詢
2、select不能指向系統或者使用者的變數
3、select不能指向prepared語法引數
4、定義中的表或檢視必須存在
5、不能對臨時表建檢視,也不能建臨時檢視
6、檢視定義中的表名必須已經存在
7、不能在觸發器和檢視之間建關聯
ORDER BY可以用在檢視定義中,但是如果訪問檢視的select中使用的order by,則檢視定義中的ORDER BY被忽略。
語法:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
ALGORITHM擴充套件了標準sql,有三個值,預設值是UNDEFINED,預演算法則決定了mysql如何處理檢視。
對於臨時表方式,會將檢視的結果放置到臨時表中,然後使用臨時表執行sql,這樣的好處是在臨時表建完之後,就會釋放在原表上面的鎖,這樣比MERGE方式更快的釋放在訪問的表上的鎖。
對於UNDEFINED方式,是指有系統自己決定使用臨時表方式還是MERGE方式,MERGER方式更高效,且臨時表方式不能更新檢視的資料。
對於MERGE方式,實際上是把訪問檢視的SQL拼接到檢視本身的sql上面。要求檢視的行和表的行之間是一一對應的,如果不存在
這樣的一一對應的關係,則會切換到臨時表演算法。
包含以下關鍵字的sql,不能使用merge方式:
聚合函式(sum,min,max,count等等)
distinct
group by
having
union或者union all
常量檢視
另外,這些檢視的紀錄也是不能更新和刪除的,不能更新和刪除紀錄的檢視除了以上那些情況外,還包括:
select中包含子查詢
join
from一個不能更新的檢視
from一個表的子查詢
演算法是臨時表的檢視
如果檢視還想要可以插入紀錄,則必須滿足以下條件:
檢視必須包含基表沒有預設值的所有欄位
檢視列必須是簡單的對應表的列,沒有在上面進一步的處理。
多於多表檢視的可更新性:
首先必須是基於MERGE演算法的
表連線必須是內連線
檢視中只有一個單表是可以被更新的。
對於多表可更新檢視,如果插入其中一個單表是可以的,刪除紀錄是不允許的
WITH [CASCADED | LOCAL] CHECK OPTION決定了是否允許更新資料使紀錄不再滿足檢視的條件。
這個選項和oracle是類似的
local是隻要滿足本檢視的條件就ok
cascade則是必須滿足所有針對該表的所有檢視的條件才ok。
如果沒有明確是local還是cascade,則預設是cascade。
刪除檢視:
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE]
顯示檢視內容:
SHOW CREATE VIEW view_name
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/51862/viewspace-180649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MYSQL 檢視MySql
- MySQL資料庫檢視:檢視定義、建立檢視、修改檢視MySql資料庫
- MySQL 建立檢視MySql
- Mysql檢視程式MySql
- Mysql版本檢視MySql
- mysql 檢視索引MySql索引
- MySQL View 檢視MySqlView
- MySQL檢視介紹MySql
- MySQL 檢視簡介MySql
- 管理mysql的檢視MySql
- 10_MySQL檢視MySql
- [MYSQL -22]使用檢視MySql
- mybatis mysql 呼叫檢視MyBatisMySql
- mysql檢視錶大小MySql
- MySQL7:檢視MySql
- 【MySQL】檢視MySQL Server引數方法MySqlServer
- MySQL入門系列:檢視MySql
- MySQL之檢視學習MySql
- 【MySQL】檢視&子查詢MySql
- MySql 什麼是檢視MySql
- MySQL筆記 13 檢視MySql筆記
- MySQL全面瓦解15:檢視MySql
- mysql建立索引和檢視MySql索引
- (8)mysql 中的檢視MySql
- 檢視MySQL鎖定情況MySql
- MySQL View(檢視)詳解MySqlView
- 【Mysql】如何檢視mysql軟體版本資訊MySql
- mysql檢視--mysql 5.1 參考手冊MySql
- MySQL檢視簡介與操作MySql
- 如何檢視mysql目錄在哪MySql
- MySQL檢視建表語句MySql
- 檢視MySQL鎖等待的原因MySql
- MySQL系列:檢視基本操作(3)MySql
- mysql鎖以及鎖資訊檢視MySql
- mysql檢視錶建立的索引MySql索引
- mysql檢視學習總結MySql
- 全面學習MySQL中的檢視(2) 指定檢視建立者MySql
- mysql狀態檢視 QPSTPS快取命中率檢視MySql快取