指的是一个实体影像,就是影子的意思
视图就是通过表数据来影射的虚拟表,能够将表中的数据影射出来,但是实际上自己并不保存(没有)数据。
视图:VIEW
如何得到一个视图?
创建一个视图
语法:create view as select查询
视图简单的分为两种
1. 单表视图:select语句从一张表中得到数据
2. 多表视图:select语句从多张表中得到数据
单表视图
创建视图的时候
系统的变化
1. 会产生一个表
2. 会产生一个表结构文件
查看视图
查看视图名字:show tables
查看视图结构:desc视图名字
查看创建语句:show create table视图名字/show create view视图名字
查看数据:select字段列表from视图名字
注意:通过视图所看到的最终的数据,都不是视图本身保存的数据,而是通过执行视图的select语句及时查询到的数据
修改视图
修改视图就是修改select语句
语法:alter view视图名字as select语句
删除视图
语法:drop view视图名字
删除视图的时候系统所做的事情?
1. 删除了视图本身
2. 删除了视图创建是产生的结构文件
视图的作用
1. 方便:简化SQL语句,不用每次都写很长的SQL查询语句
2. 安全:通过视图,可以隐藏一些敏感信息
3. 可定制化:可以为单独的用户提供不同的字段信息
多表视图中不允许存在同名字段
视图的数据操作
就是对视图的数据进行增删改查
单表视图可以进行增删改查,但是视图的数据操作实际上是对视图的基表的数据操作
基表:a not null,b,c not null,d
视图1:select a,b,c,fromT,插入数据会成功,只有d字段没有插入值,d字段值为null,但是d字段允许null,所以数据操作成功
视图2:select a,b,dfrom T,插入数据会失败,因为没有c字段值,c字段默认会被设成null,但是c字段不能为null,所以数据插入失败
视图能否插入数据全看视图的中的字段,是否包含基表中全部不为null的字段,如果全部包含,那么就可以插入数据;否则不能插入数据。(前提:该实体是单表视图)
多表视图不能进行增删操作,改是可以的。
向单表视图添加数据
添加数据的时候,视图中没有的字段会使用表中字段对应的
向多表视图插入数据
不能插入数据
删除数据
单表视图,可以删除 多表视图,不能删除
多表视图更新数据
所有表或者视图的权限(增删改查操作),都可以通过用户权限来限定,一般情况下,视图的操作权限,都只有查看。
With check option:在通过视图进行更新语句的时候,witch check option进行结果判断
1. 修改后的记录要能够被视图所查询到
Create view 视图名字 asselect语句 where字段 =值 with check option
Check option
创建的 create view from表名 where字段=条件with check option;
加了check option的当前 字段=条件这个字段不能修改