Mysql教程

8.4修改视图

修改视图是指修改数据库中已存在的表的定义。当基本表的某些字段发生改变时,可 以通过修改视图来保持视图和基本表之间一致。MySQL中通过CREATE OR REPLACE VIEW语句和ALTER语句来修改视图。本节将详细讲解修改视图的方式。

8.4.1CREATE OR REPLACE VIEW语句修改视图

在MySQL中,CREATE OR REPLACE VIEW语句可以用来修改视图。该语句的使用非常灵活。在视图已经存在的情况下,对视图进行修改;视图不存在时,可以创建视图。 CREATE OR REPLACE VIEW语句的语法形式如下:

CREATE OR REPLACE [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE }]VIEW视图名[(属性清单)]AS SELECT 语句[WITH [CASCADED|LOCAL] CHECK OPTION ];

这里的所有参数都与创建视图的参数是一样的。

【示例8-9】下面是用CREATE OR REPLACE VIEW语句修改视图department_viewl。代码如下:

CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW department_view1 (department, function, location )AS SELECT d_name, function, address FROM department;

在执行代码之前,先执行DESC语句查看department_view1的结构,以便与修改后进行对比。DESC语句执行结果如下:

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.32 sec)

查询结果可以看到,视图department_viewl有4个属性。这4个属性分別为d_id、 d_name、functior和address。执行CREATE OR REPLACE VIEW语句来修改视图。代码执行如下:

CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW department_view1 (department, function, location )AS SELECT d_name, function, address FROM department;

结果显示,修改成功。执行DESC语句来查看视图的详细信息。代码执行如下:

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)

结果显示,department_view 1中只有3个属性。这3个属性分别为department、function 和loction。视图修改成功。

技巧:CREATE OR REPLACE VIEW语句不仅可以修改已经存在的视图,也可以创建新的视图。下面会介绍使用ALTER语句修改视图的方法,不过ALTER语句只能修改已经存在的视图。通常情况下,最好选择CREATE OR REPLACE VIEW 语句修改视图。

8.4.2 ALTER语句修改视图

在MySQL中,ALTER语句可以修改表的定义,可以创建索引。不仅如此,ALTER 语句还可以用来修改视图。ALTER语句修改视图的语法格式如下:

ALTER [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE }]VIEW 视图名[(属性清单)]AS SELECT 语句}[WITH [ CASCADED | LOCAL ] CHECK OPTION ];

这里的所有参数都跟创建视图的参数是一样的,不再进行赘述。

【示例8-10】下面是用ALTER语句修改视图department_view2。代码如下:

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;

在执行代码之前,先执行DESC语句查看department_view2的结构,以便于修改后进行对比。DESC语句执行结果如下:

mysql> desc department_view2;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| name       | varchar(20) | NO   |     | NULL    |       |
| sex        | varchar(4)  | NO   |     | NULL    |       |
| location   | varchar(50) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

查询结果可以看到,视图department_view2有3个属性。这3个属性分别是“name”、 “function”和“location”。执行ALTER语句来修改视图。代码执行如下:

ALTER VIEW department_view2 (department, name, sex, location ) AS SELECT d_name, worker.name , worker.sex, address FROM department, worker WHERE departmentd_id=worker.d_id  WITH CHECK OPTION;

结果显示,修改成功。执行DEC语句来查看视图的详细信息。代码执行如下:

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.01 sec)

结果显示,department_view2中只有4个属性。这4个属性分别是department、name、 sex和location。视图修改成功。


关注微信获取最新动态