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:未定义,自动,让系统帮你选。
大家要自己动手做个例子才能更快理解它们的区别。
相关推荐
标题中的“零基础大数据...以上是对MySQL视图的基本概念和操作的详细说明,这些知识对于理解和使用MySQL数据库进行数据管理和查询至关重要,特别是在互联网应用中,视图能够帮助开发人员构建安全、高效的数据访问接口。
### 在Navicat中创建MySQL动态视图的方法 在数据库管理工具Navicat中,创建MySQL动态视图是一项非常实用的功能。动态视图允许用户通过一个简洁的接口来查询、更新多个表中的数据,这对于复杂的数据管理和分析尤其...
### MySQL视图定义详解 #### 视图的概念 在MySQL中,**视图**是一种特殊的虚拟表,其结果集由从本机表中选择的数据组成。视图并不存储实际的数据,而是存储一条SELECT语句,当用户访问视图时,数据库引擎会执行该...
**MySQL之视图详解** **什么是视图** 在MySQL中,视图(View)自5.0.1版本起被引入,它是一种虚拟存在的表。视图并不像实际的表那样存储数据,而是由用户定义的SQL查询结果组成。当你查询视图时,数据库会根据视图...
在MySQL数据库中,视图(View)是一种虚拟表,它是由SQL查询语句定义的,显示来自一个或多个表的数据。视图并不实际存储数据,而是提供了一个数据的逻辑视图,可以简化复杂的查询,保护数据隐私,以及提供了一种抽象...
真正值得一看的mysql知识。MySQL中实现物化视图(中文版)翻译于外文。
mysql客户端视图软件,方便开发结合项目一目了然。
MySQL视图是数据库管理系统中的一个重要概念,它允许用户创建虚拟的表,这些表的数据来源于一个或多个实际的表,但不存储数据本身。视图在数据库设计中扮演着简化查询、提供安全隔离、抽象复杂数据结构等角色。在这...
MySQL视图工具,如Navicat for MySQL,是数据库管理员和开发人员常用的一款图形化界面工具,它提供了方便的方式来管理MySQL数据库,包括创建、编辑和操作视图。Navicat for MySQL不仅支持基本的数据库管理和数据操作...
MySQL中的视图是数据库对象的一种,它并不存储实际的数据,而是根据用户定义的SQL查询来虚拟展示数据。视图提供了一种数据抽象机制,允许用户以不同的角度或简化的方式查看同一张表或多个表中的数据。视图的使用对于...
在MySQL数据库中,视图是一种极其重要的工具,它允许用户以一种抽象和简化的方式来操作数据库。视图可以被理解为数据库中的虚拟表,虽然它不实际存储任何数据,但可以根据预定义的SQL SELECT语句来动态获取所需的...
标题“通过MySQL通过视图访问ORACLE中的表”意味着我们将探讨如何利用MySQL的视图功能,来间接访问和操作Oracle数据库中的数据。视图是一种虚拟表,它不实际存储数据,而是根据用户定义的SQL查询动态生成结果集。这...
### MySQL视图详解 #### 一、视图概述 视图是MySQL中一种重要的功能,它为用户提供了灵活的数据访问方式。简而言之,视图是一个虚拟表,其内容由一条SELECT语句定义。尽管视图看起来像是一个独立的表,但实际上它...
MySQL 数据库视图创建与管理 在 MySQL 中,视图(View)是一种虚拟表,它是基于一个或多个表的数据计算生成的结果集。视图可以简化复杂的查询、隐藏复杂的查询逻辑、提高数据安全性和简化数据管理。下面是创建 ...
在MySQL数据库管理中,视图是一种非常重要的概念,它允许用户根据特定的需求组合多个表的数据,形成一个虚拟的表格,而无需直接操作底层的原始表。NAVICAT是一款流行的数据库管理和开发工具,支持多种数据库系统,...
在介绍如何使用Power Designer工具生成MySQL数据库表关系视图之前,我们需要了解Power Designer和MySQL的ODBC驱动的背景知识。 Power Designer是一款由Sybase公司开发的强大的数据库设计工具,它支持数据建模,从...
MySQL视图是数据库管理系统中的一种数据抽象,它提供了一种方式来封装特定的SQL查询结果,使得这些结果看起来像一个独立的表。虽然视图在数据库中并不以实际的数据文件形式存在,但它允许用户以一种简化或定制的方式...
MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zipMySql示例5:创建并查询视图.zip
本资源为 MySQL 实验训练第四课,主要涵盖视图和索引的构建与使用。实验目的是基于已有的汽车用品网上商城数据库 Shopping,理解视图和索引的概念和作用,练习视图的基本操作,包括视图的建立、视图的查询、视图的...