【MySQL 视图的操作三】

一、删除视图

通过 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 。


如有错误敬请高人指点,书写的易读性可否,希望大家多提意见。

上一篇【视图的操作二】

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值