mysql 视图

mysql 视图,说白了就是一张临时表,不过此表可以同步生成此视图的表格的数据;
什么意思呢?举个栗子,
创建一个视图: 根据表A,和表B生成的,生成了一个视图(临时表C),表C中有个字段 为A表的name,当表A中的name修改后,视图表C,会自动同步修改
使用场景:

我认为使用的场景就是比较复杂的查询耗时的查询,那么可以通过视图将查询的中间结果作为视图,加快查询速度.
也可以是复杂查询的分步查询中的一步
视图,有点类似于读写分离,A/B就是主表,C就是从表,C不应该被修改,但是可以及时同步A/B表的数据(类似哈)
而且视图相对简单,容易理解

下面是实际例子截图:

image.png
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW 
v_device(device_id,mark,NAME,area_point_id,area_point_name) AS 
SELECT a.device_id,a.mark,a.device_name,d.area_point_id,d.area_point_name FROM ass_device a 
LEFT JOIN `ass_device_area_point` d ON d.device_code = a.device_code
WHERE a.mark =1
-- with check option 不知道为啥,用了报错

将两个表联合查询结果集作为视图v_device 就是;

查询视图,跟正常的表查询一样

select * from v_device

下面详细说下 创建视图的详细解释
1.CREATE OR REPLACE 创建或者修改视图
2.ALGORITHM=TEMPTABLE 可以没有这段,
ALGORITHM:可选。表示视图选择的算法。
UNDEFINED:表示MySQL将自动选择所要使用的算法。
MERGE:表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
TEMPTABLE:表示将视图的结果存入临时表,然后使用临时表执行语句。

  1. VIEW 关键字视图的意思
  2. v_device 视图名称
  3. (device_id,mark,NAME,area_point_id,area_point_name) 视图中的字段
  4. AS 关键字,作为创建视图的数据来源
  5. SELECT a.device_id,a.mark,a.device_name,d.area_point_id,d.area_point_name FROM ass_device a
    LEFT JOIN ass_device_area_point d ON d.device_code = a.device_code
    WHERE a.mark =1
    视图的数据来源
  6. WITH CHECK OPTION:可选。表示修改视图时要保证在该视图的权限范围之内。
    ========================================================
    至此已经结束,我又在程序中试了下,可以用,附上截图

    image.png

    不过视图创建一般不在程序中执行,因为视图一旦创建就不需要重复执行了,创建好,数据就会不断地同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞旅行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值