廣告

2015年2月28日 星期六

[SQL] View

View 

如果在資料庫的應用中,出現很常執行的查詢敘述時, 你可以在MySQL資料庫中建立一種「View」元件,
View元件用來保存一段你指定的查詢敘述:
建立好需要的View元件以後,除了有一些限制外,
它使用起來就像是一個表格 也有很多人稱「View」元件是一種「虛擬表格」,
因為它不是一個真正儲存紀錄資料的表格,
可是它又跟表格的用法類似。
所以如果有需要的話,你也可以使用View元件回傳的紀錄資料,
執行統計、分組與其它需要的處理: 

 下列是MySQL關於View元件的規定與限制: 

在同一個資料庫中,View的名稱不可以重複,也不可以跟表格名稱一樣 View不可以跟Triggers建立聯結 儲存在View中的查詢敘述也有下列的規定: 查詢敘述中只能使用到已存在的表格或View 「FROM」子句中不可以使用子查詢 不可以使用「TEMPORARY」表格 不可以使用自行定義的變數、Procedure與Prepared statement參數 註:「TEMPORARY」表格在「表格與索引、建立表格、建立暫存表格」中討論。「Triggers」、定義變數、「Procedure」與「Prepared statement」在後面都會有章節詳細的討論。
參考來源



新增view
mysql> create view testtable2View as select* from testtable2 order by car;
Query OK, 0 rows affected (0.00 sec)

mysql> select* from testtable2View ;
+----+-------+------+-------+-----+-------+
| id | name  | job  | price | car | title |
+----+-------+------+-------+-----+-------+
|  1 | lewis | sw   | 2     |   2 | NULL  |
|  4 | jim   | sw   | 7     |   6 | NULL  |
|  2 | lewis | sw   | 3     | 111 | NULL  |
|  3 | leo   | sw   | 4     | 123 | NULL  |
+----+-------+------+-------+-----+-------+
4 rows in set (0.00 sec)


修改view
mysql> alter view testtable2View as select* from testtable2 order by price;
Query OK, 0 rows affected (0.00 sec)

mysql> select* from testtable2View ;
+----+-------+------+-------+-----+-------+
| id | name  | job  | price | car | title |
+----+-------+------+-------+-----+-------+
|  1 | lewis | sw   | 2     |   2 | NULL  |
|  2 | lewis | sw   | 3     | 111 | NULL  |
|  3 | leo   | sw   | 4     | 123 | NULL  |
|  4 | jim   | sw   | 7     |   6 | NULL  |
+----+-------+------+-------+-----+-------+
4 rows in set (0.00 sec)


刪除view
mysql> drop view if exists testtable2View;
Query OK, 0 rows affected (0.00 sec)
mysql> select* from testtable2View ;
ERROR 1146 (42S02): Table 'testdb.testtable2View' doesn't exist


檢查view的狀態
check table testtable2View;
注意:不是: check view testtable2View;

select* from information_schema.views;

沒有留言:

張貼留言