1.什么是视图?
视图是由查询结果形成的一张虚拟表。
2.什么时候要用到视图?
如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询
3.视图的创建语法:
create view 视图名 as select 语句;
4.使用视图有什么好处呢?
①简化查询语句
比如:有一张商品表,我们经常要查每个栏目下商品的平均价格
select cat_id,avg(shop_price) from goods gropy by cat_id;
这时候我们就可以创建一张视图:
create view avgPrice as select cat_id,avg(shop_price) from goods gropy by cat_id;
创建完,以后我们要查每个栏目的平均价格时,只要这么写
select * from avgPrice;就可以了。
②可以进行权限控制
把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据列
比如我们的goods商品表,我们不想让别人看到我们的销售价格,这时候我们就可以把查看商品表的权限封闭,创建一张视图
create view showGoods as select goods_id,goods_name from goods;
不出现销售价格列就可以了。
③大数据分表时可以用到
比如表的行数据超过200万行时,速度就会变慢
可以把一张表的数据拆成4张表来存放
News表
newsid 1,2,3,4...
news1,news2,news3,news4表
把一张表的数据分散到4张表里,分散的方法有很多,
最常用的是id取模来计算
id%4+1=[1,2,3,4]
...
还可以用视图,把四张表形成一张视图
create view news as select * from news1 union select * from news2 union ...
5.视图的修改
alter view 视图名 as select 语句;
6.视图与表的关系
视图是表的查询结果,自然表的数据变了,会影响视图的结果
7.那么视图改变了会影响到表吗?
①视图的增删改也会影响表;
②但视图并不总是能增删改的;
视图的数据与表的数据一一对应时可以修改;
对于视图的insert还应注意:视图必须包含表中没有默认值的列。
8.视图的algorithm(运算规则)
algorithm = merge/temptable/undefined
merge:当引用视图时,引用视图的语句与定义视图的语句合并
意味着视图只是一个规则,语句规则,当查询视图时,把查询视图的语句
比如:where...那些与创建时的语句where子句等合并,分析,形成一条select语句。
举个列子:
我们先创建一张视图查询所有商品价格大于3000的商品
create view g2 as select goods_id,goods_name,shop_price from goods where shop_price > 3000;
然后我们再查询视图的时候,再加上一个where条件<5000
select * from g2 where shop_price < 5000
这时候它就会把两条语句合并分析最终形成这样一条select语句
select goods_id,goods_name,shop_price from goods where shop_price > 3000 and shop_price < 5000;
temptable:是根据创建语句瞬间创建一张临时表,然后查询视图的语句从该临时表查数据
merge 和 temptalbe 有一个显著的区别:
merge最终去查的还是goods表,而temptable去查的是虚拟表。
举个例子:我们要得到每个栏目下最贵的商品
首先我们创建一张视图查出每个栏目的商品按价格降序排序
create view lmj as select cat_id,goods_id,goods_name,shop_price from goods order by cat_id,shop_price desc;
这时候我们在查询这张视图的时候再对cat_id进行分组是不是就能得到我们想要的结果呢?
select * from lmj group by cat_id;
答案是不能的,因为它把我们的创建视图的语句和查询视图的语句合并成
select cat_id,goods_id,goods_name,shop_price from goods group by cat_id order by cat_id,shop_price desc;
而如果我们在创建视图的时候指定了它的运算规则为:temptable
create algorithm=temptable view lmj as select cat_id,goods_id,goods_name,shop_price from goods order by cat_id,shop_price desc;
然后我们再查询视图:select * frm lmj group by cat_id;就能得到我们想要的结果了。
它 会先把select cat_id,goods_id,goods_name,shop_price from goods order by cat_id,shop_price desc;这句sql语句取到的结果放到一张临时表,然后我们再从这张临时表查自然能得到我们想要的结果了,而不是合并了再去查。
undefined:未定义,自动,让系统帮你选。
大家要自己动手做个例子才能更快理解它们的区别。
相关推荐
零基础大数据01-05-09-MySQL之视图(1).docx
MySQL之视图什么是视图创建视图修改视图删除视图查看视图视图的使用视图和表的对比 什么是视图 视图:MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在...
真正值得一看的mysql知识。MySQL中实现物化视图(中文版)翻译于外文。
在Navicat中创建MySQL动态视图的方法,附图解。
mysql客户端视图软件,方便开发结合项目一目了然。
mysql-视图详解.doc
经过视频学习和总结出来的
如何建立视图,如何可视化建立视图 介绍的很简单
Mysql视图工具(Navicat for MySQL)
MySql视图顺序整理工具,只要把Navicat 中的视图sql 单独保存用这个程序就自动整理好!!快速安装部署。
mysql视图简介.pdf,本人自己精心的整理搜集,请大家看下,内容虽然来自其他网站或者网友,但是资源来的很不容易,谢谢大家的下载传看。
什么是视图?视图就是一个存在于数据库中的虚拟表。视图本身没有数据,只是通过执行相应的select语句完成获得相应的数据。我们在怎样的场景使用它?为什么使用视图?如果某个查询结果出现的非常频繁,也就是,要经常...
使用NAVICAT工具创建和管理视图 数据视图 课程目标 掌握 —— 通过NAVICAT创建视图的方法; 掌握 —— 通过NAVICAT修改视图的方法; 掌握 —— 通过NAVICAT删除视图的方法。 使用NAVICAT工具创建和管理视图 小结 ...
MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zipMySql示例5:创建并查询视图.zip
创建mysql数据库视图.pdf
MYSQL数据库的索引、视图、触发器、游标和存储过程
mysql用命令连接数据库请见此图,非常好用,可以很好的实现mysql登录
由于需要重置mysql超级管理员root帐号的...幸好最终发现了这个重置mysql密码的视图操作工具,不能独享,特分享出来!亲测好用!! 注:如果mysql安装目录有空格,请记得在要求输入mysql安装路径的时候加上双引号“”!
MySQL数据库应用 实验训练4:视图和索引的构建与使用 实验目的: 基于实验1创建的汽车用品网上商城数据库Shopping,理解视图和索引的概念和作用,练习视图的基本操作,包括视图的建立,视图的查询,视图的更新,...
通过MSQL通过视图访问ORACLE中的表和视图。