首页 > 其他分享 >数据完整性和约束条件

数据完整性和约束条件

时间:2023-07-12 15:02:16浏览次数:28  
标签:数据完整性 约束条件 定义 约束 key null check


数据完整性和约束条件

表的数据有一定取值范围和联系,多表之间的数据有时也有一定的参照关系,在创建表和修改表时可以通过定义约束条件来保证数据的完整和一致性,在对数据进行插入,删除和修改时要对这些规则进行验证,从而起到约束作用。

  • 完整性 包括数据完整性和参照完整性,数据完整性定义表数据的约束,参照完整性定义数据之间的约束条件。数据完整性由主键(primary key),非空(not null),唯一(unique)和检查(check)约束条件定义,参照完整性由外键(foreign key )约束条件定义。

    1. 主键约束语法:[constraint 约束名] primary key (列1,列2,....) ----表级用法

    2. 非空(not null): 非空的约束,指定某列不能为空,他只能在列级定义,默认情况下oracle允许列的内容为空值

    3. 唯一(unique):唯一的约束条件要求表的一列或多列的组合内容必须唯一,可在列级或者表级定义。但如果多列唯一必须 在表级定义

    4. 检查(check): 检查约束是用来定义表的一列或多列的一个约束条件,使表的每一列的内容必须满足该条件(列为空的除外),在check条件中,可以调用sysdate,user等系统函数,一个列上可以定义多个check约束条件,一个check约束可以包含一列或多列。如果check约束的包含多列,则必须使用表级定义。

      --检查约束的语法
      [constraint 约束名] check(约束条件)  --列级,约束条件只包含本列
      [constraint 约束名] check(约束条件)  --表级,约束条件包含多列
    5. 外键(foreign key ):指定表的一列或多列的组合作为外键,外键参照指定的主键或唯一键。外键的值可以为null,如果不为null,则必须指定主键或唯一键之一。外键通常用来约束两个表间的数据关系,这两个表含有主键或唯一键的称为主表,定义外键的那张表称为子表,如果外键只包含一列,则可以在列级定义;如果包含多列,则必须在表级定义。

      • ---第一种语法,如果子记录在,则不允许删除主记录

      语法
      [constraint 约束名] foreign key(列1,列2,....) references 表名(列1,列2,...)
      • ---第二种语法,如果子记录存在,删除主表记录时,级联删除子表记录

      [constraint 约束名] foreign key (列1,列2...) references 表名(列1,列2...)
      on delete cascade;
      • ---第三种语法,如果子记录存在,则删除主记录时,将子记录置空

      [constraint 约束名] foreign key (列1,列2...) references 表名(列1,列2...) 
      on delete set null

      以上的五种语法种,constraint 关键字用来第一约束名,如果省略,则系统自动生成以SYS_开头的唯一约束名。约束名的作用就是当发生违法约束条件操作时,系统会显示违反的约束条件名称,这样用户就可以找到错误原因。


    主键   非空   唯一 检查
    ---列级定义约束
    create table emp1
    ( id varchar2(20) primary key not nul unique,
    name varchar2(20) not null,
    idcard varchar2(20) uniqiue,
    eml   varchar2(50) check( eml like '%a%'),
    sex varchar2(4) check (sex='男' or se='女'),
    denptid varchar2(20) constrain fk_deptid references deptno2(id) on delete set null
    )
    ---表级定义约束
    create table deptno2(
    id varchar2(20) not null,
    name varchar2(20) constraint nn_null not null, ---为非空约束定义别名 nn_null
    constranit pk_id primary key (id)
    )

     

查看约束条件

数据字典USER_CONSTRAINTS中包含了当前模式下用户的约束条件信息,其中,CONSTRAINT_TYPE显示约束类型为:

  • P 主键约束

  • C check约束

  • R foregin key 约束

  • U unique 唯一约束

其他相关信息可以用desc查询USER_CONSTRAINTS表结构

标签:数据完整性,约束条件,定义,约束,key,null,check
From: https://www.cnblogs.com/xjianbing/p/17547492.html

相关文章

  • mysql 数据完整性
    一、实体完整性(表中的一行或一条数据。行级约束)1、主键约束(数据唯一且不能为NULL)添加方式createtablestu(idintprimarykey,namevarchar(20));   唯一约束自动增长列二、域完整性三、引用完整性......
  • 第三十八天 字符编码与配置文件,数据类型,约束条件
    一、数据库的分类关系型数据库 有固定的表结构、表与表之间可以建立数据库层面的关系 MySQLPostgreSQLMariaDBSQLserversqlitedb2非关系型数据库 没有固定的表结构、表与表之间没有数据库层面的关系 redismongodbmemcache二、环境变量的搭建1.环境变量2.系统服......
  • nsga2-带约束条件的多目标优化
    logiccodeclcclearcloseall%%定义自变量范围nvar=5;nobj=2;npop=20;maxit=50;pc=0.8;nc=round(pc*npop/2)*2;mu=0.05;%自变量约束条件varmin=[1030.66];varmax=[132.8211.641];%自变量变化步长step=[10.10.50.051];len=(varmax-varmin).*step;......
  • mysql索引--普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束
    --方法1:createindex--对employee表的员工部门号列创建普通索引depart_ind--createindexdepart_indonemployees(员工部门号);--对employee表的姓名和地址列创建复合索引ad_ind;--createindexad_indonemployees(姓名,地址);--对departments表的部门名称列......
  • 带约束条件的运筹规划问题求解(模拟退火算法实现)
    0.写在前面超级简单的模拟退火算法实现ε٩(๑>₃<)۶з搭配最简单的线性规划模型进行讲解!但是如果需要的话可以直接修改编程非线性问题哦(´つヮ⊂︎)1.模型描述及处理1.1线性规划模型\[max\,f(x)=10x_1+9x_2\]\(s.t.\)\[6x_1+5x_2\leq{60}\tag{1}\]\[10x_1+20x_2\leq{......
  • 分布式电源优化配置 二阶锥 考虑配电网二阶锥模型,运行主体包括光伏、微燃机以及负荷,创
    分布式电源优化配置二阶锥编程方法:采用matlab+yalmip编程,cplex或gurobi作为求解器。主要内容:考虑配电网二阶锥模型,运行主体包括光伏、微燃机以及负荷,创新性考虑敏感负荷及加权电压支撑能力指标,约束条件考虑潮流约束、电压电流约束、分布式电源容量约束、微燃机出力约束和光伏功......
  • MySQL约束条件介绍
    无符号、零填充unsigned #因为正负值符号会占用一个比特位,使用此约束条件可以去掉数字类型里面的正负值符号,之后相同数字类型会支持的正数范围会更大 idintunsigne......
  • MySQL数据库-数据完整性-笔记
    数据完整性一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证......
  • 表约束条件 非空 默认值 唯一 主键 自增 外键的三种关系
    ·目录无符号unsigned零填充zerofill非空notnull添加表数据的方法字段默认可以为空给字段设置非空默认值default默认值配合非空使用唯一值unique单列唯一联合唯一......
  • 字段之约束条件
    字段之约束条件MySQL字段之约束条件无符号、零填充1.unsignedcreatetablet6(idtinyintunsigned);#取消正负号insertintot6values(-129),(128),(1000);2.z......