视图:view
如果某个查询结果出现的非常频繁,也就是,靠这个结果当做进行子查询出现的非常频繁。
类似于下面这两句的思路,我们想把结果保存到表里,供下次查询用。
create table g2 like goods;
insert into g2 select ....
视图的定义:视图是由查询结果形成的一张虚拟表。
视图的创建关键在于select语句上。
(1)视图的创建语法:
create view 视图名 as select语句;
(2)视图的删除语法:
drop view 视图名;
为什么要视图?
1.可以简化查询,
比如我们已经创建了一个名为lmj的视图,那么可以在它的上边直接进行查询:
select * from lmj order by pj desc limit 3;
2.可以进行权限控制
想要不把某些表的列的权限给用户看,可以通过创建视图屏蔽某些列。
create view clonegoods as select goods_id,cat_id,goods_name from goods;
这一句创建的视图只给客户看goods_id,cat_id,goods_name
3.大数据分表时可以用到
比如:表的行数超过200万行时,就会变慢。
可以把一张表的数据拆成4张表来存放。
news表
newsid 1,2,3,4
分成:news1,news2,news3, news4表
把一张表的数据分散到四张表里,分散的方法很多,最常用可以用id取模来计算。
id%4+1 = [1, 2, 3, 4]
比如:$_GET['id'] = 17,17%4+1=2, $tablename = 'news2'
所以 select * from news2 where id = 17; #我们在表2里面查找17就行了。
也可以用视图,把4张表形成一个视图:
create view news as select news1 union select from news2 union ....
(3)视图的修改