视图

  1. 视图
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;

        -->最终执行的两句话:取数据并放在临时表,然后去查临时表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值