視圖是一個存在於數據庫中的虛擬表。視圖本身沒有數據,只是通過執行相應的select語句完成獲得相應的數據。可以理解為select語句的別名。
(1).視圖的作用
1.如果某個查詢結果出現的非常頻繁,即將這個查詢結果作為子查詢使用,視圖能夠簡化用戶的操作(簡單性)
2.對數據提供安全保護(安全性)
3.對重構的數據庫提供一定的邏輯性(邏輯數據獨立性)
(2).創建視圖
創建實驗環境:
mysql> create database test_db; Query OK, 1 row affected (0.01 sec) mysql> use test_db; Database changed mysql> create table user_tb(id int,name varchar(20)); Query OK, 0 rows affected (0.03 sec) mysql> insert into user_tb values('1','zhangsan'),('2','lisi'); Query OK, 2 rows affected (0.11 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from user_tb; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | | 2 | lisi | +------+----------+ 2 rows in set (0.00 sec)
create view [視圖名] as [select查詢語句];
mysql> create view st as select * from user_tb where id=1; Query OK, 0 rows affected (0.10 sec) mysql> select name from st; +----------+ | name | +----------+ | zhangsan | +----------+ 1 row in set (0.00 sec)
視圖可以根據需求2次加工。
(3).修改視圖
alter view [視圖名] as [select語句];
mysql> alter view st as select * from user_tb where id=2; Query OK, 0 rows affected (0.01 sec) mysql> select name from st; +------+ | name | +------+ | lisi | +------+ 1 row in set (0.00 sec)
(4).刪除視圖
drop view [視圖名];
mysql> drop view st; Query OK, 0 rows affected (0.01 sec) mysql> select * from st; ERROR 1146 (42S02): Table 'test_db.st' doesn't exist