mysql 视图

本文介绍了数据库视图的概念及其创建、使用方法。视图作为一张虚拟表,可通过简化查询、实现权限控制及处理大数据分表等多种方式提升数据库操作效率。
视图的定义
视图是由查询结果形成的一张虚拟表

视图的创建语法
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 view1 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;






评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值