mysql> show create view worker_view1 \G
*************************** 1. row ***************************
View: worker_view1
Create View: CREATE ALGORITHM=MERGE DEFINER=`skip-grants user`@`skip-grants host` SQL SECURITY DEFINER VIEW `worker_view1` AS select `worker`.`name` AS `name`,`department`.`d_name` AS `department`,`worker`.`sex` AS `sex`,(2009 - `worker`.`birthday`) AS `age`,`department`.`address` AS `address` from (`worker` join `department`) where (`worker`.`d_id` = `department`.`d_id`) WITH LOCAL CHECK OPTION
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)
在view表中查看视图详细信息
mysql> select * from information_schema.views where table_name='worker_view1' \G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: example
TABLE_NAME: worker_view1
VIEW_DEFINITION: select `example`.`worker`.`name` AS `name`,`example`.`department`.`d_name` AS `department`,`example`.`worker`.`sex` AS `sex`,(2009 - `example`.`worker`.`birthday`) AS `age`,`example`.`department`.`address` AS `address` from `example`.`worker` join `example`.`department` where (`example`.`worker`.`d_id` = `example`.`department`.`d_id`)
CHECK_OPTION: LOCAL
IS_UPDATABLE: YES
DEFINER: skip-grants user@skip-grants host
SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
1 row in set (0.00 sec)
修改视图
create or replace view 修改视图
mysql> desc department_view1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| d_id | int(4) | NO | | NULL | |
| d_name | varchar(20) | NO | | NULL | |
| function | varchar(50) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> create or replace algorithm=temptable view department_view1 (department,function,location) AS select d_name,function,address from department;
Query OK, 0 rows affected (0.00 sec)
mysql> desc department_view1;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| department | varchar(20) | NO | | NULL | |
| function | varchar(50) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
alter 语句修改视图
mysql> desc department_view2;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| name | varchar(20) | NO | | NULL | |
| function | varchar(50) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> alter view department_view2 (department,name,sex,location) AS select d_name,worker.name,worker.sex,address from department,worker where department.d_id=worker.d_id with check option;
Query OK, 0 rows affected (0.00 sec)
mysql> desc department_view2;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| department | varchar(20) | NO | | NULL | |
| name | varchar(20) | NO | | NULL | |
| sex | varchar(4) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
更新视图
mysql> insert into department (d_id,d_name,function,address) values (10001,'人事部','管理公司人事变动','2号楼3层');
Query OK, 1 row affected (0.00 sec)
mysql> insert into department (d_id,d_name,function,address) values (10002,'生成部','主管生产','5号楼1层');
Query OK, 1 row affected (0.00 sec)
mysql> select * from department;
+-------+-----------+--------------------------+-------------+
| d_id | d_name | function | address |
+-------+-----------+--------------------------+-------------+
| 10001 | 人事部 | 管理公司人事变动 | 2号楼3层 |
| 10002 | 生成部 | 主管生产 | 5号楼1层 |
+-------+-----------+--------------------------+-------------+
2 rows in set (0.00 sec)
mysql> create view department_view3(name,function,address) as select d_name,function,address from department where d_id=10001;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from department_view3;
+-----------+--------------------------+-------------+
| name | function | address |
+-----------+--------------------------+-------------+
| 人事部 | 管理公司人事变动 | 2号楼3层 |
+-----------+--------------------------+-------------+
1 row in set (0.00 sec)
mysql> update department_view3 set name='科研部',function='新产品科研',address='3号楼5层';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from department_view3;
+-----------+-----------------+-------------+
| name | function | address |
+-----------+-----------------+-------------+
| 科研部 | 新产品科研 | 3号楼5层 |
+-----------+-----------------+-------------+
1 row in set (0.01 sec)
mysql> select * from department;
+-------+-----------+-----------------+-------------+
| d_id | d_name | function | address |
+-------+-----------+-----------------+-------------+
| 10001 | 科研部 | 新产品科研 | 3号楼5层 |
| 10002 | 生成部 | 主管生产 | 5号楼1层 |
+-------+-----------+-----------------+-------------+
2 rows in set (0.00 sec)
删除视图
mysql> drop view if exists department_view3;
Query OK, 0 rows affected (0.00 sec)
mysql> drop view department_view1;
Query OK, 0 rows affected (0.00 sec)