一,概念理解 什么是视图
1.1 视图(view)是一个虚拟表,根据sql语句获取动态的数据集,并为其命名,
用户是使用时只需使用视图名称即可获取结果集,并还可以将其当作表来使用用 。 例如:可以取代子查询
1.2 数据库只存放了视图的定义,并没有存放图中的数据,(相当于一个目录,
通过它去含有数据的表中找数据)#这些数据还是存放在原来的表中。
1.3 使用视图查询数据时,数据包库系统会从原来表中取出相对应的数据,因此,视图中的数据是
依赖原来的表中取出的数据。一单原来的表中数据发生改变,显示在视图中的数据也会随之发生改变。
*存储数据逻辑 相当于Java的方法
二,视图的作用
2.1 简化代码,可以把重复使用的查询(例:嵌套查询)封装成视图重复使用,同时可以使复杂的查询,易于理解和使用。
2.2 提高了数据安全,如果一张表中有很多数据,很多信息不希望让所有人看到,可以使用视图给不同的客户来显示不同的部分 如:社会保障基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资等..,可以对不同的用户设定不同的视图,让用户看你想让他看到的部分数据。
三,创建视图
参数说明:
create新建视图
[or replace] 判断此视图是否存在 如果存在替换调,如果不存在新建视图
view view name 表示要创建的视图名称。
as
3.1创建视图的语法:
use mydb; //进入名为mydbd的数据库
create or replace
view 视图名称
as select ename,job from emp //在enp表中查询ename,job两列的数据 将此sql查 询语句放入此视图中
3.2查看表和视图语法:
show tables; //查看所有表和视图的虚拟表
show full tables // *查看区分后 表和视图的虚拟表 便于分辨
小知识 [or replace]也可以用来修改视图
四,视图的实际应用
语法: select * from 视图名称;
修改视图 语法:
alter view 需要修改数据的视图名字
as select语句 //更改后的视图数据
重命名视图 语法:
rename table 视图名 to 新视图名;
删除视图 语法:
drop if exists view 视图名;//if exists判断如果存在删
*删除视图时,只能删除视图的定义,不会删除基表中的数据