视图的定义
视图是由查询结果形成的一张虚拟表
视图的创建语法
create view 视图名 as select 语句
为什么要用视图?
可以简化查询
2可以进行权限控制
把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据
3大数据分表时可以用到
比如,表的行数查过200万时
可以把一张表的数据才成4张表来存放
news,newsid,1,2,3,4
news1,news2,news3,news4表
把一张表的数据分散到4张表里
最常用可以用id取膜来计算
id%4+1 = [1,2,3,4]
比如 $_GET['id'] = 17,
17%4+1 = 2,$tableName = 'news'.'2'
select * from news2 where id 17;
还可以用视图,把4张表形成一张视图
create view 表1 as select from n1 union select from n2 union...
视图的删除
drop view 表名
create view 栏目价 as select 栏目id,avg(shop_price) from goods group by 栏目id;
select view lmj as select cat_id,avg(shop_price) as pj from good group by cat_id;
求的平均数,写到试图里,下次调用直接找试图,比较方便
视图的修改
alter view as select 。。。
视图与表的关系
视图是表的查询结果,自然表的数据改变了,影响视图的结果
视图改变了呢?
1.试图增删改也会影响表
2.但是试图不是总能增删改的(例如视图是所有数的平均数,则无法修改)
试图的数据与表的数据 一一对应时 可以修改
对于试图insert 还需要注意
试图必须包含所有表中没有默认值的列
视图的algorithm
algorithm = merge/temptable/undefined
Merge:当引用视图使,引用视图的语句与定义视图的语句合并
Temptable:当引用视图时,根据视图的创建语句建立一个临时表
Undefined:未定义,自动让系统帮你选
Merge,意味着视图只是一个规则,语句规则,当查询视图时
把查询视图的语句(比如where那些)与创建时的语句where字句等合并,分析形成一条select 语句
例:创建视图的语句
create view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;
查询试图的语句
select * from g2 group by cat_id;
select goods_id,cat_id,goods_name,shop_price from goods group b cat_id order by cat_id asc,shop_price desc;
而temptable 是根据创建语句瞬间创建一张临时表(推荐)
然后查询视图的语句从该临时表查数据
create algorithm = temptable view 表名 select 语句;
最终执行的语句为
create algorithm = temptable view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;
mysql 视图
最新推荐文章于 2024-12-04 22:19:05 发布
本文介绍了数据库视图的概念及其创建、使用方法。视图作为一张虚拟表,可通过简化查询、实现权限控制及处理大数据分表等多种方式提升数据库操作效率。
2483

被折叠的 条评论
为什么被折叠?



