如果在資料庫的應用中,出現很常執行的查詢敘述時, 你可以在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;
沒有留言:
張貼留言