- MySQL数据库应用案例课堂
- 刘玉红 郭广新编著
- 759字
- 2021-03-12 13:36:34
7.4 修改视图
修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图来保持与基本表的一致性。在MySQL中,通过CREATE OR REPLACE VIEW语句和ALTER语句来修改视图。
7.4.1 用CREATE OR REPLACE VIEW语句修改视图
在MySQL中如果要修改视图,可以使用CREATE OR REPLACE VIEW语句,语法格式如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS SELECT_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
可以看到,修改视图的语句和创建视图的语句完全一样。当视图存在时,修改语句对视图进行修改;当视图不存在时,创建视图。下面通过一个实例来说明。
【例7.8】修改视图view_t。
代码如下:
CREATE OR REPLACE VIEW view_t AS SELECT * FROM t;
首先通过DESC查看更改之前的视图,以便与更改之后的视图进行对比,执行的结果如下:
mysql> DESC view_t; +----------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+------------+------+-----+---------+-------+ | quantity | int(11) | YES | | NULL | | | price | int(11) | YES | | NULL | | | quantity*price | bigint(21) | YES | | NULL | | +----------------+------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> CREATE OR REPLACE VIEW view_t AS SELECT * FROM t; Query OK, 0 rows affected (0.05 sec) mysql> DESC view_t; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | quantity | int(11) | YES | | NULL | | | price | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
从执行的结果来看,相比原来的视图view_t,新的视图view_t少了1个字段。
7.4.2 用ALTER语句修改视图
用ALTER语句修改视图的语法格式如下:
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS SELECT_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
这个语法中的关键字和前面介绍的关键字是一样的,这里就不再介绍。
【例7.9】使用ALTER语句修改视图view_t。
代码如下:
ALTER VIEW view_t AS SELECT quantity FROM t;
执行结果如下:
mysql> DESC view_t; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | quantity | int(11) | YES | | NULL | | | price | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ 2 rows in set (0.06 sec) mysql> ALTER VIEW view_t AS SELECT quantity FROM t; Query OK, 0 rows affected (0.05 sec) mysql> DESC view_t; +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | quantity | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
通过ALTER语句同样可以达到修改视图view_t的目的,从上面的执行结果来看,视图view_t中只剩下1个quantity字段,修改成功。