二十一、MySQL基础系列笔记之视图

作者: 温新

分类: 【MySql】

阅读: 1500

时间: 2020-11-01 08:30:13

什么是视图

视图(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日

请登录后再评论