• 视图(MySQL)


    视图是一种虚拟存在的表,数据是使用视图是动态生成的。

    MySQL和其他数据库的视图有啥区别?

    1. MySQL中from后面不能包含子查询

    和普通表对比:

    • 简单:使用视图的用户不用关心背后表的结构、关联条件和筛选条件,只关心视图结果集;
    • 安全:只能访问视图结果集数据,一般对表的权限管理中不能针对某行某列做权限控制,通过视图筛选出具体行和列,就可以简单实现具体的行和列访问权限控制;
    • 数据独立:视图结构一旦确定就可以屏蔽表结构变化对用户的影响。表增加列队视图没有影响,表修改列名只需修改视图对应列名即可(如果要保持列名不变,加个别名即可)。

    以下类型视图不能更新:

    • 包含聚合函数(sum、min、max、count等)、distinct、group by、having、union或者union all
    • 常量视图,如:creat or replace view pi as select 3.1415926 as pi
    • select中包含子查询
    • jion
    • from 一个不能更新的视图
    • where后面子查询引用了from子句中的表
      注:也就是说视图中的行能和表中的行一一对应时才能执行更新操作。当然,更新(插入)也不是随意的,更新(插入)之后数据必须还在视图中

    视图操作

    视图创建:
    create or replace view payment_view as 
    select payment_id,amount from payment
    where amount<10 with check option;
    视图查看:
    show tables; - 没有单独的视图查询语句
    视图数据更新:
    update payment_view set amount=10 where payment_id=4;

    注;执行报错:[Err] 1369 - CHECK OPTION failed ‘offer100.payment_view’,因为amount=10不满足视图查询条件

    视图数据插入:
    insert into payment_view(payment_id,amount) values (9,6.6)

    注:如果将6.6换成11就会执行失败

    视图数据删除:
    delete from payment_view2  where payment_id=1111;
    视图删除
    drop view payment_view;
  • 相关阅读:
    PHP js使用ajax异步处理方式请求PHP,解决数组中文乱码
    PHP Apache服务配置
    opencv高斯背景建模
    Opencv,腐蚀,膨胀,轮廓检测,轮廓外接多边形
    opencv删除二值图中较小的噪点色块
    opencv图像操作
    opencv统计二值图黑白像素个数
    JAVA常用工具类
    Netty4 学习笔记之四: Netty HTTP服务的实现
    分享一些JAVA相关资源
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256142.html
Copyright © 2020-2023  润新知