zoukankan      html  css  js  c++  java
  • 视图(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;
  • 相关阅读:
    ubuntu 20.04 安装mysql
    vim 编辑器常用命令备份
    各个Iot Cloud对MQTT协议的支持
    Linux下sleep函数与usleep函数加Windows下的Sleep函数
    localtime、localtime_s、localtime_r的使用
    Windows平台下利用openssl配置产生SSL认证文件
    转载
    转载- 常见arduino型号(版本)比较
    转载
    转载
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256142.html
Copyright © 2011-2022 走看看