目录
一、删除视图
通过 DROP VIEW 可以一次删除一个或者多个视图。
语法形式
DROP VIEW 视图名称 【,视图名称2】……
例1:删除一个视图
删除数据库 view 中 view_selectproduct 视图
1、 选择(进入)数据库
mysql>#查看数据库名录#
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| company |
| information_schema |
| mysql |
| performance_schema |
| sys |
| view |
+--------------------+
6 rows in set (0.00 sec)
mysql>#进入数据库 view #
mysql> USE view;
Database changed
2、 删除名为 selectproduct 的视图
mysql>查看数据库 view 中视图与表的名录
mysql> SHOW TABLES;
+--------------------+
| Tables_in_view |
+--------------------+
| select_price |
| t_group |
| t_product |
| t_student |
| view_selectproduct |
| view_test1 |
| view_test2 |
| view_test3 |
| view_test4 |
| view_test6 |
| view_test7 |
+--------------------+
11 rows in set (0.00 sec)
mysql>#删除 view_selectproduct 视图 #
mysql> DROP VIEW view_selectproduct;
Query OK, 0 rows affected (0.02 sec)
3、 验证
mysql># 查看 view_selectproduct 是否存在 #
mysql> SELECT *
-> FROM view_selectproduct;
ERROR 1146 (42S02): Table 'view.view_selectproduct' doesn't exist
从结果中可以看出视图数据库 view 中 view_selectproduct 视图已经不存在了。
例2:删除多个视图
本例中将同时删除两个视图 view_test6 与 view_test7
1、 删除视图 view_test6 与视图 view_test7
mysql> #删除 view_test6, view_test7#
mysql> DROP VIEW view_test6, view_test7;
Query OK, 0 rows affected (0.01 sec)
2、 查看视图 view_test6 与视图 view_test7是否存在
mysql> #查看 view_test6 是否存在#
mysql> SELECT *
-> FROM view_test6;
ERROR 1146 (42S02): Table 'view.view_test6' doesn't exist
mysql> #查看 view_test7 是否存在#
mysql> SELECT *
-> FROM view_test7;
ERROR 1146 (42S02): Table 'view.view_test7' doesn't exist
从结果中可以看出 view_test6 与视图 view_test7 已经不存在了
二、修改视图
对于已经建好的视图,当使用一段时间后,就会需要进行一些结构上的修改,可以用 ALTER 语句和 CREATE OR REPLACE VIEW 语句来修改视图。
CREATE OR REPLACE VIEW 语句修改视图
语法形式
CREATE OR REPLACE view 视图名
AS 查询语句
该语句不论需要修改的视图存在与否,执行后都会生成指定名称的视图。从字面上就可理解:建立或者替换。如果存在同名视图则替换,如果不存在就新建一个。
例1:建立新视图
在本篇文章的第一部分,我们已经删除了 view_selcetproduct 视图,现在我们将用这个语句新建一个同名视图。
mysql># 建立或替换 view_selectproduct 视图 #
mysql> CREATE OR REPLACE VIEW view_selectproduct
-> AS
-> SELECT name, price
-> FROM t_product;
Query OK, 0 rows affected (0.01 sec)
验证:
mysql># 查看视图 #
mysql> SELECT *
-> FROM view_selectproduct;
+--------+-------+
| name | price |
+--------+-------+
| apple | 6.5 |
| banana | 4.5 |
| orange | 1.5 |
| pear | 2.5 |
+--------+-------+
4 rows in set (0.00 sec)
从结果中看,视图建立成功。可以看到视图 view_selectproduct 中包含两个字段 name 和 price 。
例2:修改视图
现在,我们再用同样的语句将其修改。使其包含一个 name 字段。
mysql># 建立或替换 view_selectproduct 视图 #
mysql> CREATE OR REPLACE VIEW view_selectproduct
-> AS
-> SELECT name
-> FROM t_product;
Query OK, 0 rows affected (0.01 sec)
可以看到,虽然有同名视图存在,但是执行这个语句后没有报错。
验证:
mysql># 查看视图 #
mysql> SELECT *
-> FROM view_selectproduct;
+--------+
| name |
+--------+
| apple |
| banana |
| orange |
| pear |
+--------+
4 rows in set (0.00 sec)
从结果中可以看到,view_selectproduct 视图已经被修改为只包含一个 name 字段的视图。
ALTER 语句修改视图
与修改表一样,ALTER 语句也可以修改视图。
语法形式
ALTER VIEW 视图名
AS 查询语句
例:
我们将用 ALTER 语句来修改 view_selectproduct 视图,使其再次包含两个字段 name 和 price 。
mysql># 修改视图 #
mysql> ALTER VIEW view_selectproduct
-> AS
-> SELECT name, price
-> FROM t_product;
Query OK, 0 rows affected (0.01 sec)
验证
mysql># 查看视图 #
mysql> SELECT *
-> FROM view_selectproduct;
+--------+-------+
| name | price |
+--------+-------+
| apple | 6.5 |
| banana | 4.5 |
| orange | 1.5 |
| pear | 2.5 |
+--------+-------+
4 rows in set (0.00 sec)
可以看到,修改后的视图包含了 name 和 price 字段。
三、利用视图操作基本表
在 MySQL 中,视图可以用来检索基本表的信息,这是视图最基本的应用,除此之外还可以通过视图修改基本表中的数据。
检索(查询)数据
前面我们曾经接触过查询表数据的语句:
SELECT *
FROM 表名称
而通过视图查询数据与通过表查询完全相同,只需将表名称换成视图名称:
SELECT *
FROM 视图名称
通过视图查询数据比表更安全、实用。
例: 查询视图对象 view_selectproduct
mysql> # 查询视图 #
mysql> SELECT *
-> FROM view_selectproduct;
+--------+-------+
| name | price |
+--------+-------+
| apple | 6.5 |
| banana | 4.5 |
| orange | 1.5 |
| pear | 2.5 |
+--------+-------+
4 rows in set (0.00 sec)
利用视图操作基本表数据
对视图 数据 进行更新操作,实际上是对其基本表 数据 进行更新操作。在具体更新视图 数据 时,需要注意一下两点:
- 对视图数据进行添加、删除直接影响基本表
- 视图来自于多个基本表时,不允许添加和删除数据
接下来,我们要新建一个视图 view_product ,该视图与表 t_product 字段完全一致
查看表 t_product 中的数据
mysql> # 查看表数据 #
mysql> SELECT *
-> FROM t_product;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 1 | apple | 6.5 |
| 2 | banana | 4.5 |
| 3 | orange | 1.5 |
| 4 | pear | 2.5 |
+------+--------+-------+
4 rows in set (0.00 sec)
新建名为 view_product 视图,包含字段与基本表一致
mysql> # 新建视图 #
mysql> CREATE VIEW view_product
-> AS
-> SELECT *
-> FROM t_product;
Query OK, 0 rows affected (0.01 sec)
查看视图 view_product 中的数据
mysql> SELECT *
-> FROM view_product;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 1 | apple | 6.5 |
| 2 | banana | 4.5 |
| 3 | orange | 1.5 |
| 4 | pear | 2.5 |
+------+--------+-------+
4 rows in set (0.00 sec)
可以看出,其数据与基本表 t_product 完全一致,接下来我们将通过 view_product 视图 操作 t_product 表中的数据。
1、添加数据操作
mysql> # 通过视图插入一条记录 #
mysql> INSERT INTO view_product (id,name,price)
-> VALUES(5,'pear1',3.6);
Query OK, 1 row affected (0.01 sec)
查看基本表来验证
mysql> # 查看表中数据 #
mysql> SELECT *
-> FROM t_product;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 1 | apple | 6.5 |
| 2 | banana | 4.5 |
| 3 | orange | 1.5 |
| 4 | pear | 2.5 |
| 5 | pear1 | 3.6 |
+------+--------+-------+
5 rows in set (0.00 sec)
可以看出,表 t_product 新添加了一条记录(第5条)
2、删除数据操作
删除名为 apple 的数据
mysql> # 删除数据 #
mysql> DELETE FROM view_product
-> WHERE name='apple';
Query OK, 1 row affected (0.01 sec)
查看基本表验证
mysql> # 查看表中数据 #
mysql> SELECT *
-> FROM t_product;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 2 | banana | 4.5 |
| 3 | orange | 1.5 |
| 4 | pear | 2.5 |
| 5 | pear1 | 3.6 |
+------+--------+-------+
4 rows in set (0.00 sec)
可以看出,基本表中第1条 name 为 apple 的数据已经被删除了。
3、更新数据操作
更改 view_product 中名称为 pear1 价格为4.9
mysql> # 更新数据 #
mysql> UPDATE view_product
-> SET price=4.9
-> WHERE name='pear1';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
验证标准表中的数据
mysql> # 查看表中数据 #
mysql> SELECT *
-> FROM t_product;
+------+--------+-------+
| id | name | price |
+------+--------+-------+
| 2 | banana | 4.5 |
| 3 | orange | 1.5 |
| 4 | pear | 2.5 |
| 5 | pear1 | 4.9 |
+------+--------+-------+
4 rows in set (0.00 sec)
可以看出表中名为 pear1 的价格已经被更改为 4.9 。
如有错误敬请高人指点,书写的易读性可否,希望大家多提意见。
上一篇【视图的操作二】