Mysql入门(八)之视图
来源:互联网 发布:与知乎类似 编辑:程序博客网 时间:2024/04/27 21:26
视图
视图:view,是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源)
创建视图
基本语法
create view 视图名字 asselect 语句;--select语句可以是普通查询;可以是连接查询;可以是联合查询;可以是子查询
创建单表视图:基表只有一个
创建多表视图:基表来源至少两个
查看视图
查看视图:查看视图的结构
视图是一张虚拟表:表,表的所有查看方式都适用于视图:show tables[like]/desc 视图名字/show create table 视图名;
视图比表还是有一个关键字的区别:view 查看“表(视图)”的创建语句的时候可以使用view关键字
视图一旦创建:系统会在视图对应的数据文件夹下创建一个对应的结构文件:frm文件
使用视图
使用视图主要是为了查询:将视图当做表一样
视图的执行:其实本质就是执行封装的select语句
修改视图
视图本身不可修改,但是视图的来源是可以修改的
修改视图:修改视图本身的来源语句(select语句)
alter view 视图名字 as 新的select语句;
删除视图
drop view 视图名字;
视图的意义
1.视图可以节省sql语句:将一条复杂的查询语句使用视图进行保存:以后可以直接对视图进行操作
2.数据安全:视图操作是主要针对查询的,如果对视图结构进行处理(删除),不会影响基表数据(相对安全)
3.视图往往是大项目中使用,而且是多系统使用:可以对外提供有用的数据,但是隐藏关键(无用)的数据
4.视图可以对外提供友好型:不同的视图提供不同的数据,对外好像专门设计
5.视图可以更好的(容易)的进行权限控制
视图数据操作
视图的确可以进行数据写操作的,但是有很多限制,将数据直接在·视图上进行操作
新增数据
数据新增就是直接对视图进行数据新增
1.多表视图不能新增数据
2.可以向单表视图插入数据:但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)字段
3.视图是可以向基表插入数据的
删除数据
多表视图不能删除数据
单表视图可以删除
更新数据
理论上不论单表视图还是多表视图都可以更新数据
更新限制:with check option,如果对视图在新增的时候,限定了某个字段有限制:那么在对视图进行数据更新操作时,系统会进行验证;
要保证更新之后,数据依然可以被实体查询出来,否则不让更新
视图算法
视图算法:系统对视图以及外部查询视图的select语句的一张解析
视图算法分为三种
undefined:未定义(默认的),这不是一张实际使用算法,是一种推卸责任的算法:告诉系统,视图没有定义算法,系统自己看着办
temptable:临时表算法:系统应该先执行视图的select语句后执行外部查询语句
merge:合并算法:系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高:常态)
算法指定:在创建视图的时候
create algorithm=指定算法 view 视图名字 as select 语句;
视图算法选择:如果视图的select语句包含一个查询子句(五子句),而且很有可能顺序比外部的查询语句靠后,
一定要使用算法temptable,其他情况可以不用指定(默认即可)
0 0
- Mysql入门(八)之视图
- MySQL入门之视图
- IOS入门学习(八):表视图
- SpringMVC入门之八:使用Apache Tiles视图定义布局
- 《MySQL入门很简单》学习笔记(8)之第8章视图(关键词:数据库/MySQL/创建视图/修改视图/查看视图/删除视图)
- MySQL(八)之DML
- MySQL 入门(八)—— 触发器
- MySQL数据库入门--读书笔记(八)
- MySQL之视图(View)
- MySQL 入门(七)—— 视图
- MySQL 入门(七)—— 视图
- MySQL 视图入门
- MYSQL入门学习之十:视图的基本操作
- MYSQL入门学习之十:视图的基本操作
- 遗传算法入门(连载之八)
- Android入门开发之RelativeLayout(八)
- Shell入门(八)之布尔运算
- Shell入门(八)之布尔运算
- bzoj 4518 征途 斜率优化
- 01背包问题的变式Openjudge 2985:数字组合
- 坚持#第28天~明天去学校!
- 08:病人排队
- 32. Longest Valid Parentheses
- Mysql入门(八)之视图
- [框架模式]MVP应用架构模式
- Linux内核同步方式总结
- Android进阶系列9-Android异步消息处理Handler机制解析
- kindeditor富文本
- MySQL innoDB索引底层原理详解
- linux查进程,杀进程,重启进程
- 一个租房广告引发的代码战争
- Java 构造方法私有化的作用