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;
  • 相关阅读:
    Android 隐式意图激活另外一个Actitity
    Android 显示意图激活另外一个Actitity
    Android 创建一个新的Activity
    调用meitu秀秀.so文件实现美图功能
    Android C代码回调java方法
    Android 在C代码中调用logcat
    Android java传递int类型数组给C
    Android java传递string类型数据给C
    使用pywin32处理excel文件
    利用 pywin32 操作 excel
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256142.html
Copyright © 2011-2022 走看看