zoukankan      html  css  js  c++  java
  • MySQL系列(三) MySQL的约束

    •  约束 

      数据完整性 constraint

      • 实体完整性保证表中有一个主键,还可以编写触发器保证数据完整性
      • 域完整性保证数据每列的值满足特定条件,可以通过一下途径来保证: 选择适合的数据类型,外键,编写触发器,还可以用default 约束作为强制域完整性的一个方面
      • 参照完整性保证两张表之间的关系

      约束的创建和查找:

      • 创建有两种方式:
        • 表建立时就定义约束条件
        • 利用 alter table 来进行约束的更新
      • 唯一索引的默认约束名与列名相同。

      约束和索引的区别:

      • 约束是一个逻辑上的概念,用来保证数据的完整性
      • 索引是一个数据结构,既有逻辑上的概念,在数据库中还代表物理存储的方式

      对错误数据的约束:

      • 数据库没有对数据的正确性进行限制。比如对null 的插入,系统会将其转化为合法的值。

      enum 和 set 约束:

      • 只限于对离散数值的约束。如果要对域进行约束,还需要通过触发器来实现

      触发器与约束:

      • 只有具备super权限的 MySQL 数据库用户才可以执行这条命令
      • 最多可以对一个表建立6个触发器

      外键约束:

      • 外键用来保证参照完整性。一般来说,被引用的表为父表,引用的表成为子表
      • 可定义的子表操作有:
        • cascade, 表示当父表发生delete 和 update 操作时,对相应的子表中的数据也进行操作
        • set null,表示当父表发生delete 和 update,相应的子表数据被更新为null值,且子表的值必须允许null
        • no action,表示当父表发生 delete 和update,抛出错误,不允许此操作
        • restrict, 表示没有定义 on delete 和 on update 时,默认的外键设置
      • 这些操作都是即时检查,有些数据库支持延时检查。
      • 对于参照完整性约束,外键能起到很好的作用。但是对于数据库的导入操作时,外键往往导致在外键约束的检查上花费大量时间,因为是即时检查,所以对每一行都要进行外键检查

      视图 view:

      • 是一个可以当表使用的虚表,没有实际的物理存储。
      • 视图的作用: 主要用来当作一个抽象装置,特别是对有些应用程序,不需要获取基表,只需要按照视图定义来完成数据或更新数据。视图可以在一个程度上起到一个安全层的作用。

      物化视图:

      • oracle 支持物化视图,其是根据几表实际存在的实表,即物化视图的数据存储在非易失性的存储设备上。
      • 物化视图用于预先计算并保存多表的连接 join, 和聚集 group by等耗时较多的操作,这样就可以避免这些耗时的操作,从而快速得到结果。
  • 相关阅读:
    程序员必备工具之Cmder
    Markdown简明教程
    几种黑灰名词解释
    windows下 mysql启动错误1067进程意外终止
    Mac OS 安装redis
    java里的这些
    maven 两条命令建立 web项目
    判断StringBuilder是否为空
    map与list的交集、补集操作
    关于创业
  • 原文地址:https://www.cnblogs.com/wang-kai-1994/p/10810383.html
Copyright © 2011-2022 走看看