MySQL学习(十二)

Wesley13
• 阅读 626

视图 view 在查询中,我们经常把查询结果当成临时表来看, view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影。 表的变化会影响到视图 既然视图只是表的某种查询的投影,所以主要步骤在于查询上,查询的结果命名为视图就可以了。 创建视图的语法 CREATE VIEW 视图 AS SELECT 语句;

mysql> create view stats
    -> as
    -> select cat_id,avg(shop_price) as pj
    -> from goods
    -> group by cat_id
    -> order by pj;
Query OK, 0 rows affected (0.49 sec)

视图有什么作用? 1 视图可以简化我们的查询,比如,复杂的统计时,先用视图生成一个中间结果,再查询视图 2 更精细的权限控制。 3 数据多,分表时可以用到。

视图是表的一个影子,探讨表与视图,数据变化时相互影响的关系。 表的数据变化,要影响到视图的变化 视图变化了,表如何变? 视图某种情况下,也是可以修改的,视图的数据和表的数据一一对应,就像函数的映射。表可以推出视图的数据,视图可以推出表的数据。 视图没有数据文件和索引文件,视图只是一种关系。 注意 order by limit得到的结果,与表不是一一对应的。一一对应是指,根据select关系,从表中取出的行,只能计算出视图中确定的一行。反之,视图中任意抽一行,能够反推出表中的确定的一行。

对于一些简单视图,他在发挥作用的过程中,并没有建立表,而只是把条件存起来,下次查询,把条件一合并,直接去查表。 思考:相比于建临时表,那个快? 建表:查询->形成临时表->查询寻临时表 叠加:合并条件->查询表

到底要不要建临时表,还是合并语句,有algorithm决定 algorithm = merge 合并查询语句 temptable 临时表 undefined 未定义

mysql> create view v1
    -> as
    -> select * from goods where shop_price > 300;
Query OK, 0 rows affected (0.75 sec)


mysql> create algorithm = merge view v2
    -> as
    -> select * from goods where shop_price > 300;

虽然结果上相同,但是v2不是临时表。

如果拿不准是否建表,可以用undefined,让系统自己做判断。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
Oracle——分页查询
查询员工表中,工资排名在1020之间的员工信息。select  from(    selectrownumrn,employee_id,salary      from(        selectemployee_id,salary,last_name        fromem
Wesley13 Wesley13
3年前
mysql(视图 事务 索引 外键)
视图视图本质就是对查询的封装创建视图(定义视图 起名以v\_开头)createviewv\_studentsasselectclasses.nameas c\_name,students.\fromstudentsinnerjoinclassesonstudents.cls\_idclasses.id;查
Wesley13 Wesley13
3年前
oracle查询表数据并重新插入到本表
oracle查询表数据并重新插入到本表CreateTime2018年5月17日10:30:10Author:Marydon1.情景描述查询表中数据SELECTFROMat_aut
Wesley13 Wesley13
3年前
MySQL学习笔记20
二十、使用视图1、视图视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。例如:SELECTcust\_name,cust\_contact     FROMcustomers,orders,orderitems     WHEREcustomers.cust\_idorder
Wesley13 Wesley13
3年前
ThinkPHP 根据关联数据查询 hasWhere 的使用实例
很多时候,模型关联后需要根据关联的模型做查询。场景:广告表(ad),广告类型表(ad\_type),现在需要筛选出广告类型表中id字段为1且广告表中status为1的列表先看关联的设置部分 publicfunctionadType(){return$thisbelongsTo('A
Wesley13 Wesley13
3年前
MySQL视图,函数,触发器,存储过程
1\.视图  视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视
Wesley13 Wesley13
3年前
MySQL之视图、触发器、事务、存储过程、函数
一. 视图  视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的数据,但是下次我要是想用这个虚拟表呢,没办法,只能重新查一次,每次都要重新查。其本质是【根据SQL语句获取动态的数据集,并为其命名】
Wesley13 Wesley13
3年前
MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
知识点七:MySQL视图的创建(14)视图的定义:什么是视图:视图数由查询结果形成的一张虚拟的表。什么时候要用到视图?如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询。使用视图的好处:1.简化查询语句:案例:比如求每个人的平均工资。!(http
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究