环境说明
MySQL8.0.16
MySQL 从 5.0 开始就提供了视图功能,下面对视图功能进行介绍。
视图
视图的英文名称是 view
,它是一种虚拟存在的表。视图对于用户来说是透明的,它并不在数据库中实际存在,视图是使用数据库行和列动态组成的表。
视图相对于普通的表来说,优势包含下面这几项
- 使用视图可以简化操作:使用视图不用关注表结构的定义,把经常使用的数据集合定义成视图,这样能够简化操作。
- 安全性:用户对视图不可以随意的更改和删除,可以保证数据的安全性。
- 数据独立性:一旦视图的结构 确定了, 可以屏蔽表结构变化对用户的影响, 数据库表增加列对视图没有影响;具有一定的独立性
对视图的操作
视图的操作包括创建或者修改视图、删除视图以及查看视图定义。
先创建一张表product
表,有三个字段,id,name,price,下面是建表语句
然后插入几条数据mysql> create table product(id int(11),name varchar(20),price float(10,2));
Query OK, 0 rows affected (0.03 sec)
插入完成后的表结构如下mysql> insert into product values(1, "apple","3.5"),(2,"banana","4.2"),(3,"melon","1.2");
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
创建视图
查看一下 v1 视图的结构mysql> create view v1 as select * from product;
Query OK, 0 rows affected (0.01 sec)
可以看到 把 product 中的数据放在了视图中,也相当于是创建了一个 product 的副本,只不过这个副本跟表无关。
视图使用
也能看到所有的视图。mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| blob_test |
| emp |
| float_test |
| product |
| user |
| v1 |
+----------------+
6 rows in set (0.00 sec)
删除视图
drop view v1;
能够直接进行删除。查看视图,查看表结构
可以使用Describe ViewName;mysql> desc v1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| price | float(10,2) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
更新视图
```sql mysql> update v1 set name = “grape” where id = 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from v1; +———+————+———-+ | id | name | price | +———+————+———-+ | 1 | grape | 3.50 | | 2 | banana | 4.20 | | 3 | melon | 1.20 | +———+————+———-+ 3 rows in set (0.00 sec)
mysql> select * from product; +———+————+———-+ | id | name | price | +———+————+———-+ | 1 | grape | 3.50 | | 2 | banana | 4.20 | | 3 | melon | 1.20 | +———+————+———-+ 3 rows in set (0.00 sec) ```