mysql視圖

今天覆習視圖相關的操作。分享轉載這兩個鏈接。很全面。
http://blog.csdn.net/a672489861/article/details/17184265

http://www.jb51.net/article/36363.htm


一: 視圖的簡介,作用,優點
1. 什麼是視圖?
a. 視圖是一種虛擬的表,是從數據庫中一個或者多個表中導出的表
b. 數據庫只存放了視圖的定義,而並沒有存放視圖中的數據,這些數據存放在原來的表中
c. 使用視圖查詢數據時,數據庫系統會從原來的表中取出對應的記錄

  1. 視圖的作用:
    a. 使操作簡便化
    b. 增加數據的安全性
    c. 提高表的邏輯獨立性

  2. 視圖的優點:
    a. 視點集中
    b. 簡化操作
    c. 定製數據
    d. 合併分割數據
    · e. 安全性

二: 創建視圖
CREATE [ ALGORITHM ={ UNDEFIEND | MERGE | TEMPTABLE }]
VIEW 視圖名[ ( 屬性清單) ]
AS SELECT 語句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

ALGORITHM 是可選參數,表示視圖選擇的算法;
“視圖名”參數表示要創建的視圖的名稱;
“屬性清單”是可選參數,其指定了視圖中各種屬性的名詞,默認情況下與SELECT 語句中查詢的屬性相同;
SELECT 語句參數是一個完整的查詢語句,標識從某個表查出某些滿足條件的記錄,將這些記錄導入視圖中;
WITH CHECK OPTION 是可選參數,表似乎更新視圖時要保證在該視圖的權限範圍之內;
ALGORITHM 包括3 個選項UNDEFINED、MERGE 和TEMPTABLE。
UNDEFINED 選項表示MySQL 將自動選擇所要使用的算法;
MERGE 選項表示將使用視圖的語句與視圖定義合併起來,使得視圖定義的某一部分取代語句的對應部分;
TEMPTABLE 選項表示將視圖的結果存入臨時表,然後使用臨時表執行語句;CASCADED是可選參數,表示更新視圖時要滿足所有相關視圖和表的條件,該參數爲默認值;
LOCAL 表示更新視圖時,要滿足該視圖本身的定義條件即可;

例: 創建一個名爲v1的視圖,其中包含了t_book表的全部記錄
Mysql>CREATE VIEW v1
AS
SELECT * FROM t_book;
接下來我們就可以對這個視圖進行操作,查詢視圖中id爲2的記錄
Mysql>SELECT * FROM v1 WHERE id=2;
例: 創建一個名爲v2的視圖,其中只顯示書名和價格信息
Mysql>CREATE VIEW v2
AS
SELECT bookName,price FROM t_book;
Mysql>SELECT * FROM v2;
現在v2視圖中就只包含書名和價格的信息

例: 這樣寫的話,你會發現字段名變成了書名和價格
Mysql>CREATE VIEW v3(書名,價格)
AS
SELECT bookName,price FROM t_book;
Mysql>SELECT * FROM v2;

當然,也可以這麼寫:
Mysql>CREATE VIEW v4
AS
SELECT bookName AS ‘書名’,price AS ‘價格’ FROM t_book;

例: 根據t_book和t_booktype表建立視圖,查詢書名和書的類別
Mysql>CREATE VIEW v5
AS
SELECT bookName,bookTypeName FROM t_book t1,t_booktype t2 WHERE t1.bookTypeId=t2.id;

三:查看視圖
4.1 DESCRIBE 語句查看視圖基本信息
例: 查看v4視圖的基本信息
Mysql>DESC v4;

4.2 SHOW TABLE STATUS LIKE 語句查看視圖基本信息
例: 查看v5視圖的基本信息
Mysql>SHOW TABLE STATUS LIKE ‘v5’;
可以很明顯的看出 視圖是虛表
4.3 SHOW CREATE VIEW 語句查看視圖詳細信息
例: 查看v5視圖的詳細信息
Mysql>SHOW CREATE VIEW v5;

4.3 在views 表中查看視圖詳細信息
Mysql>USE information_schema;
Mysql>SELECT * FROM views;
這樣 我們就能看到所有已經創建的視圖的信息

四: 修改視圖
4.1 CREATE OR REPLACE VIEW 語句修改視圖
CREATE OR REPLACE [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 視圖名[( 屬性清單)]
AS SELECT 語句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
如果視圖存在就REPLACE該視圖,如果不存在 就Create 該視圖

例: Mysql>CREATE OR REPLACE VIEW v3
AS
SELECT * FROM t_book WHERE id =3;

4.2 ALTER 語句修改視圖
ALTER [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 視圖名[( 屬性清單)]
AS SELECT 語句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
只能修改視圖,不能創建視圖
例: Mysql>ALTER VIEW v3
AS
SELECT * FROM t_book;

五: 更新視圖
更新視圖是指通過視圖來插入(INSERT)、更新(UPDATE)和刪除(DELETE)表中的數據。因爲視圖是一個虛擬的表,其中沒有數據。通過視圖更新時,都是轉換基本表來更新。更新視圖時,只能更新權限範圍內的數據。超出了範圍,就不能更新。

5.1 插入(INSERT)
例: Mysql>INSERT INTO v4 VALUES(NULL,’心理學’,45,’三張’,4);

5.2 更新(UPDATE)
例: Mysql>UPDATE v4 SET bookName=’心理學2’ WHERE id =5;
5.3 刪除(DELETE)
Mysql>DELETE FROM v4 WHERE id =5;
通過視圖來插入(INSERT)、更新(UPDATE)和刪除(DELETE)時,都是對原表來進行操作.

六: 刪除視圖
刪除視圖是指刪除數據庫中已存在的視圖。刪除視圖時,只能刪除視圖的定義,不會刪除數據;
DROP VIEW [ IF EXISTS ] 視圖名列表[ RESTRICT | CASCADE ]
例: 如果存在名爲v4的視圖,那麼就刪除.
Mysql>DROP VIEW IF EXISTS v4;


另外轉載個mysql超快速入門。
http://wiki.jikexueyuan.com/project/mysql-21-minutes/

學習後要記得做練習
http://blog.sina.com.cn/s/blog_767d65530101861c.html

再是mysql詳細教程
http://www.runoob.com/mysql/mysql-tutorial.html

發佈了54 篇原創文章 · 獲贊 53 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章