Mysql视图
2015-12-11 12:05
441 查看
视图,VIEW
视图是一张表,但是是虚拟表
是通过一条查询语句得到一个虚拟表
因此,认为视图就是select语句的结果
创建视图语法:
例:
创建视图后,就可以在视图内,完成查询工作了:
可见,使用视图的功能之一,就是简化查询的业务逻辑!
注意:视图内是不保存真实数据的!视图内,只有一条形成视图的select语句而已
因此,每次从视图查询时,都需要利用视图,再在真实的表内将数据查询到
类似一个 from 型子查询:
功能之二:隐藏真实的表结构!从而取得更大的兼容性
总结作用:
1:简化逻辑
2:隐藏真实表结构(兼容性,限制用户处理)
视图算法,执行方式
场景:取得每个班级最高的学生信息
使用from型子查询,可以,但是使用同样逻辑的视图不行:
视图:
视图一共有三种执行方式:
merge , 合并
temptable , 临时表
undefined , 未定义,就是默认的,mysql自己决定算法(从merge and temptable 自己选择)
典型的都是选择merge的!因此上面的视图查询:
如何解决?可以选择决定视图的算法,在创建视图时指定:
algorithm = temptalbe 即可
视图是一张表,但是是虚拟表
是通过一条查询语句得到一个虚拟表
因此,认为视图就是select语句的结果
创建视图语法:
create view 视图名字 AS 查询语句;
例:
create view stu_info as select * from select_student as s left join select_class using(class_id);
select * from stu_info;
创建视图后,就可以在视图内,完成查询工作了:
可见,使用视图的功能之一,就是简化查询的业务逻辑!
注意:视图内是不保存真实数据的!视图内,只有一条形成视图的select语句而已
因此,每次从视图查询时,都需要利用视图,再在真实的表内将数据查询到
类似一个 from 型子查询:
select * from (select * from select_student as s left join select_class using(class_id)) as stu_info;
功能之二:隐藏真实的表结构!从而取得更大的兼容性
总结作用:
1:简化逻辑
2:隐藏真实表结构(兼容性,限制用户处理)
视图算法,执行方式
场景:取得每个班级最高的学生信息
使用from型子查询,可以,但是使用同样逻辑的视图不行:
视图:
视图一共有三种执行方式:
merge , 合并
temptable , 临时表
undefined , 未定义,就是默认的,mysql自己决定算法(从merge and temptable 自己选择)
典型的都是选择merge的!因此上面的视图查询:
如何解决?可以选择决定视图的算法,在创建视图时指定:
algorithm = temptalbe 即可
相关文章推荐
- 简单谈谈MySQL的loose index scan
- 记录-MySQL中的事件调度Event Scheduler
- MySQL-5.6.13免安装版配置方法
- MySQL中有关TIMESTAMP和DATETIME的总结
- Mysql卸载安装
- 性能调优:mysql之left join
- 10015---MySQL--innodb_flush_log_at_trx_commit参数
- Mysql连接出错问题
- 上Mysql com.mysql.jdbc.StatementImpl$CancelTask内存泄漏问题和解决方法
- Mysql日志
- mysql中导入txt文件
- Navicat for mysql建立连接
- 不停止MySQL服务增加从库的两种方式
- mysql memory引擎表
- mysql 绿色免安装win版本
- SQL Server数据迁移至MySQL
- maven+springMVC+myBatis+mysql+junit+slf4j+logback示例代码总结
- MySQL数据库中的索引有哪些,有什么用
- Zabbix-proxy搭建
- mysql存储过程语法及实例