抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了如何使用DDL语句管理视图。

环境

Windows 10 企业版 LTSC 21H2
MySQL 5.7.40

1 简介

1.1 定义

视图是从表或者视图中导出的虚拟表,包含一系列带有名称的数据列和若干条数据行。

1.2 特点

视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真实表的查询基础上的。

视图是查看数据表的一种方法,可以查询数据表中某些列构成的数据,只是一些SQL语句的集合。从安全的角度来看,视图的数据安全性更高,使用视图的用户不接触数据表,不知道表结构。

视图的建立和删除只影响视图本身,不影响对应的基本表。

1.3 注意

视图不包含数据,所以每次使用视图时,都必须执行查询操作。

如果用多个连接和过滤条件创建了复杂的视图,可能会发现系统运行性能下降得十分严重。在部署大量视图应用时,应该进行系统测试。

修改视图数据的语句实际上是通过修改表的数据实现的,对于可修改的视图,视图中的行和基本表的行之间必须具有一对一的关系。

2 操作

2.1 创建

语法:

sql
1
create view 视图名 (列1, 列2, ..., 列n) as 查询语句;

列名可以任意取名,但数量必须和查询的列名相等,如果不指明视图的列名,默认使用查询语句的列名。

创建一个简单的视图:

sql
1
2
3
4
mysql> create view score_view as select * from score;
Query OK, 0 rows affected (0.01 sec)

mysql>

创建视图并指定列:

sql
1
2
3
4
mysql> create view score_view (编号, 学生, 科目, 成绩) as select id, student, course, grade from score;
Query OK, 0 rows affected (0.00 sec)

mysql>

2.2 查看

语法:

sql
1
desc 视图名;

示例:

sql
1
2
3
4
5
6
7
8
9
10
11
12
mysql> desc score_view;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| 编号 | int(10) | NO | | 0 | |
| 学生 | varchar(20) | NO | | NULL | |
| 科目 | varchar(20) | NO | | NULL | |
| 成绩 | int(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql>

说明:

  • Field:列名。
  • Type:类型。
  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已编制索引。PRI表示该列是主键的一部分,UNI表示该列是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,如:AUTO_INCREMENT等。

2.3 修改

语法:

sql
1
alter view 视图名 (列1, 列2, ..., 列n) as 查询语句;

示例:

sql
1
2
3
4
mysql> alter view score_view (学生, 课程, 成绩) as select student, course, grade from score;
Query OK, 0 rows affected (0.01 sec)

mysql>

2.4 删除

语法:

sql
1
drop view 视图名;

示例:

sql
1
2
3
4
mysql> drop view score_view;
Query OK, 0 rows affected (0.00 sec)

mysql>

评论