一. 视图介绍
1.1 视图的含义
视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。
通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
1.2 视图的特点
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
1.3 视图的作用
方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限定到行列级别;
二. 创建视图
视图中包含了SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据表。
2.1 如何创建视图
创建视图就是采用 create view 视图名 as select语句就好。
2.2 在单表上创建视图
1 mysql> create table user(id int,name varchar(30));2 Query OK, 0 rows affected (0.05sec)3
4 mysql> insert into user(id,name) values(1,'zhangsan'),(2,'lisi'),(3,'wangwu');5 Query OK, 3 rows affected (0.02sec)6 Records: 3 Duplicates: 0 Warnings: 0
7
8 mysql> select *fromuser;9 +------+----------+
10 | id | name |
11 +------+----------+
12 | 1 | zhangsan |
13 | 2 | lisi |
14 | 3 | wangwu |
15 +------+----------+
16 3 rows in set (0.00sec)17
18 mysql> create view view_user as select name fromuser;19 Query OK, 0 rows affected (0.02sec)20
21 mysql> select *fromview_user;22 +----------+
23 | name |
24 +----------+
25 | zhangsan |
26 | lisi |
27 | wangwu |
28 +----------+
29 3 rows in set (0.00sec)30
31 mysql> create view view_user2(view_name) as select name fromuser;32 Query OK, 0 rows affected (0.02sec)33
34 mysql> select *fromview_user2;35 +-----------+
36 | view_name |
37 +-----------+
38 | zhangsan |
39 | lisi |
40 | wangwu |
41 +-----------+
42 3 rows in set (0.00sec)43
44 mysql>
View Code
说明:在创建视图view_user和view_user2的时候,可以指定视图中应该包含的字段名字。如果不指定,就默认时表格中的字段名字。反正属性是一样的,比如都是varchar(30)
2.3 在多个表上创建视图
比如:有一个student表