上篇简单的介绍了视图的概念,那么这篇将告诉大家如何创建、修改、删除视图,也就是视图的基本操作了!
一、在单表上创建视图1
2
3
4
5
6
7
8# 创建表 user
create table user (id int,name varchar(10),age tinyint(3));
# 插入数据
insert into user values(1,'张三',20),(2,'李四',20);
# 创建视图-并计算他们两年之后多少岁
create view view_user as select id,name,age+2 as age from user;
# 第二种写法
create view view_user_1(user_id,user_name,user_age) as select id,name,age from user;
得到结果:
id | name | age |
---|---|---|
1 | 张三 | 22 |
2 | 李四 | 22 |
3 | 王二 | 22 |
user_id | user_name | user_age |
---|---|---|
1 | 张三 | 22 |
2 | 李四 | 22 |
3 | 王二 | 22 |
从这两种写法可以看出,在视图上是可以使用计算的,虽然两个视图中字段名不同,但数据确实相同的。因此在使用视图的时候,用户根本接触不到实际表中的结构和数据,从而保证了数据库的安全。
二、在多表上创建视图
1 | # 创建表 user、school |
通过视图看到的结果:
user_id | user_name | user_school |
---|---|---|
1 | 张三 | 清华 |
2 | 李四 | 北大 |
三、查看视图1
desc 视图名;
通过这个命令可以看出视图的字段定义、字段的数据类型、是否为空、是否为主键/外键、默认值和额外信息。1
select table status like '视图名';
通过这个命令可看出存储引擎、创建时间、Comment。1
show create view '视图名';
通过这个命令可以看出视图的名称、创建视图的语句等信息。
四、修改视图1
create or replace view view_user as select id,user,name,age from user;
1 | alert view view_user as select id,user,name,age from user; |
五、更新视图1
2update view_user set age=100 where id=1;
delete from view_user where id=1;
当视图更新的时候相对应的基础表也会被更新,但如果是多表创建、使用了计算或者是聚合函数都是无法修改/删除成功的,并且会报错。
六、删除视图1
drop view if exists view_user;
总结:
1.两者的区别
(1) 视图是已经编译好的sql语句,是基于sql语句的结果集形成的可视化表,而表不是。
(2) 视图没有实际的物理记录,而表有。
(3) 表是内容,视图是窗口。
(4) 表占用物理空间而视图不占用。
(5) 视图是查看数据表的一种方法,从安全角度上来说视图可以防止用户接触到数据表,使用户不知道表结构。
(6) 表属于全局模式中的表,是实表,视图是局部模式的表,是虚表。
(7) 视图的简历和删除只会影响到视图的本身,不影响对应表的基本数据。
2.两者的关系
(1) 视图是建立在基本表纸上的表,它的结构都来源于基本表。无基本表视图将无法建立,视图是基本表的抽象和在逻辑意义上建立的新关系。