二十一、MySQL基础系列笔记之视图
什么是视图
视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,且是在使用视图时动态生成的。
相对于普通表而言,视图的优势
- 简单。使用视图不需要关心对应的表结构、关联条件、筛选条件,视频是已经过滤好的复合条件的结果集;
- 安全。使用视图,只能访问被允许查询的结果集,对于的权限管理并不能限制某个行和某个列,但通过视图可以实现;
- 数据独立。视图结构一旦确定,可屏蔽表结构变化对用户的影响,源表增加列对视图无影响;源表修改列名,可通过修改视图来解决。
视图和表的区别
创建视图
准备工作:建表并插入数据
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">CREATE</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">TABLE</span> test02(</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> name <span style="box-sizing: border-box;color: rgb(51, 0, 170)">varchar</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">20</span>),</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> email <span style="box-sizing: border-box;color: rgb(51, 0, 170)">varchar</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">40</span>)</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">INSERT</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">INTO</span> test02 <span style="box-sizing: border-box;color: rgb(119, 0, 136)">VALUES</span> (<span style="box-sizing: border-box;color: rgb(34, 162, 201)">'lisi'</span>,<span style="box-sizing: border-box;color: rgb(34, 162, 201)">'lisi@163.com'</span>),(<span style="box-sizing: border-box;color: rgb(34, 162, 201)">'wangwu'</span>,<span style="box-sizing: border-box;color: rgb(34, 162, 201)">'wangwu@163.com'</span>);</span>
语法
CREATE VIEW 视图名 AS 查询语句;
案例
CREATE VIEW view_test02 AS SELECT * FROM test02;
<span style="box-sizing: border-box;padding-right: 0.1px">mysql> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">select</span> * <span style="box-sizing: border-box;color: rgb(119, 0, 136)">from</span> view_test02;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">+--------+----------------+</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">| name | email |</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">+--------+----------------+</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">| lisi | lisi<span style="box-sizing: border-box;color: rgb(0, 85, 170)">@163.com</span> |</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">| wangwu | wangwu<span style="box-sizing: border-box;color: rgb(0, 85, 170)">@163.com</span> |</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">+--------+----------------+</span>
查看视图
查看视图结构
语法
DESC/DESCRIBE 视图名;
案例
desc view_test02;
查看视图基本信息
语法
SHOW TABLE STATUS LIKE ‘视图名’;
案例
SHOW TABLE STATUS LIKE 'view_test02' \G;
查看视图详细信息
语法
SHOW CREATE VIEW '视图名';
案例
SHOW CREATE VIEW view_test02;
修改视图
准备工作:为test02表增加nick_name列;
ALTER TABLE test02 ADD nick_name VARCHAR(40) DEFAULT 'word';
语法
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)"># 方式一</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">CREATE</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">OR</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">REPLACE</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">VIEW</span> 视图名 <span style="box-sizing: border-box;color: rgb(119, 0, 136)">AS</span> 查询语句;</span>
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)"># 方式二</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">ALTER</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">VIEW</span> 视图名 <span style="box-sizing: border-box;color: rgb(119, 0, 136)">AS</span> 查询语句;</span>
案例
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)"># 方式一</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">CREATE</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">OR</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">REPLACE</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">VIEW</span> view_test02 <span style="box-sizing: border-box;color: rgb(119, 0, 136)">AS</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">SELECT</span> * <span style="box-sizing: border-box;color: rgb(119, 0, 136)">FROM</span> test02;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)"># 方式二</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">ALTER</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">VIEW</span> view_test02 <span style="box-sizing: border-box;color: rgb(119, 0, 136)">AS</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">SELECT</span> name <span style="box-sizing: border-box;color: rgb(119, 0, 136)">FROM</span> test02;</span>
删除视图
语法
DROP VIEW [IF EXISTS] 视图名;
案例
DROP VIEW IF EXISTS view_test02;
增加数据与修改数据的操作与操作表是一致的。
我是小白,期待和优秀的你一起同行!
小白
2020年11月01日
请登录后再评论