- 视图
1).作用:
查询每个栏目最贵商品
select goods_id,goods_name,shop_price from goods order by cat_id asc , shop_price desc
查询结果当做一种表看
如果某个查询结果出现的非常频繁,也就是,拿这个结果当做进行子查询出现的非常频繁
Create table g2 like goods;
insert into g2 select...
上面两句,是想保存一个查询结果到表里面,供其他查询用
2).定义
视图是由查询结果形成的一张虚拟表
3).视图的创建语法
Create view 视图名 as select 语句;
4).为什么要视图
答:可以简化查询
5).可以进行权限控制
把表的权限封闭,但是开放相应的视图权限,视图只开放部分数据
6).大数据分表时候可以用到
比如,表的行数超过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 = 'news2'
select * from new2 where id = 17
7).合并表
还可以用视图,把1张表行成一张视图
Create view new as select from n1 nuion select form n2 nuion...
8).视图的修改
Alter view as selectxxxxxxx
9).视图与表的关系
视图是表的查询结果,自然表的数据改变了,影响视图的结果。
10).视图改变了呢
0:视图增删改也会影响表
1:但是,视图并是总是能增删改的。
视图的数据与表的数据 一一对应时可以修改
对于视图insert还应该注意,视图必须包含表中没有默认值的列。
11).视图的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 * form g2 group by cat_id;
select goods_id,cat_id,goods_name,shop_frice from goods group by cat_id order by
cat_id asc,shop_price desc;
③:而tempdate是根据创建语句瞬间创建一张临时表,然后查询视图的语句从该临时表查数据
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;
select * form g2 group by cat_id;