约束

作者: 辽A丶孙悟空 | 来源:发表于2019-02-15 13:05 被阅读34次
一、数据库对象
  • 表:表是用来存放用户数据的对象,由行和列组成,列就是字段,行就是表中的记录。
  • 约束:保证数据完整性的约束,设置在单个字段或者多个最短的组合上,写入这些字段的数据必须符合约束的限制。
  • 视图:是一个命名的查询,用于改变基表的数据显示,通过视图能够简化查询,访问方式与表相同。
  • 索引:构建于表的单字段或者字段组合上,用于加速对表中的数据进行查询。
  • 序列:产生顺序的不重复数字串,被作为主键约束值的参照。
  • 同义词:数据库对象的别名。
二、约束及作用
  • 约束:Constraint,是定义在表上的一种强制规则。
  • 当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将会失败。
三、约束类型
  • NOT NULL 非空约束,指定某列的所有行数据不能包含空值
  • UNIQUE 唯一性约束,指定列或者列的组合的所有行数据必须唯一
  • PRIMARY KEY 主键约束,表的每行的唯一性标识,指定列或者列的组合的所有行数据必须唯一
  • FOREIGN KEY 外键约束,在列及引用列上建立的一种强制依赖关系
  • CHECK 检查性约束,在列上指定一个必须满足的条件
四、约束的命名规则
  • 约束也是数据库对象,必须按照,命名规则进行命名,如果你不命名约束,oracle服务器将用SYS_Cn格式产生一个名字,这里n是一个唯一的整数。
  • 除了NOT NULL约束外,建议给其他约束进行命名,
    命名规则为:表名列名约束类型
五、约束操作
  • 定义约束:约束通常在创建表的时候同时被创建
  • 约束既可以写在每个对应列的后面,称之为列级别约束,一个列级别约束只能作用在一个列上;
  • 也可以写完所有列之后,再写约束,称之为表级别约束,一个表级别约束既可以作用在一个列上,也可以作用在列的组合上;
  • NOT NULL约束只能定义在列级别上,联合主键或联合唯一性约束只能定义在表级别上,其它约束既可以定义成表级别,也可以定义成列级别;
  • 列级别约束和表级别约束达到的作用完全相同,只是书写的位置不同;
  • CONSTRAINT:约束的关键字;constraint_name:约束名字;constraint_type:约束的类型;
  • 追加约束:在表被创建后,如果有需求也可以临时添加约束
  • 语法
  • ALTER TABLE table ADD [CONSTRAINT constraint] type (column);
    1.table是表的名字
    2.constraint是约束的名字
    3.type是约束的类型
    4.column是受约束影响的列的名字
  • 追加FOREIGN KEY约束
    ALTER TABLE table ADD [CONSTRAINT constraint] FOREIGN KEY(column)
    REFERENCES table(column));
  • 在emp表中的mgr上添加一个外键约束,指示该列的值必须引用emp表中的empno值
    ALTER TABLE emp
    ADD CONSTRAINT emp_mgr_fk FOREIGN KEY(mgr)
    REFERENCES emp (empno)
  • 追加NOT NULL约束
    ALTER TABLE 表名
    MODIFY (column [CONSTRAINT constraint] NOT NULL)
  • 启用及禁用约束:约束可以被临时禁用和启用

约束禁用

  • 如果有大批量数据导入时,我们可以采用禁用约束的方法,主要的好处,首先效率高,另外有主外键约束的表之间导入时,不用考虑导入的先后顺序。
  • 禁用约束语法:
    ALTER TABLE table DISABLE CONSTRAINT constraint [CASCADE];
  • 应用CASCADE选项禁用相依赖的外键约束
  • 启用约束语法:
    ALTER TABLE table ENABLE CONSTRAINT constraint;
  • 删除约束
  • 语法
    ALTER TABLE table DROP PRIMARY KEY|UNIQUE(column) |CONSTRAINT constraint [CASCADE];
    1.table 是表的名字
    2.column 是受约束影响的列的名字
    3.constraint 是约束的名字
    4.cascade 级联删除
  • 例如:从emp表中删除emp_mgr_fk约束
ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk;
  • 删除dept表上的PRIMARY KEY约束,并且删除相关联的在emp表deptno上的FOREIGN KEY约束
ALTER TABLE dept DROP PRIMARY KEY CASCADE;
//注意:DROP子句的CASCADE选项导致任何与其相依赖的约束也被删除。
六、NOT NULL约束
  • 这里需要注意的就是,非空约束只能够定义在列级别上
七、UNIQUE约束
  • 这里需要注意的就是,每个表中可以有多个唯一约束
  • 唯一约束即可定义在列级别上,也可以定义在表级别上
  • 唯一约束允许输入空值,除非我们在相应的列上定义非空约束
八、PRIMARY KEY约束
  • 作为主键约束的列不能有空值
  • 每个表中只能创建一个主键约束
  • 主键约束即可以定义在列级别上,也可以定义在表级别上
九、FOREIGN KEY约束
  • 外键约束既可以定义在列级别上,也可以定义在表级别上
  • 外键约束与对应的表的主键约束之间是一种依赖关系,当对应的表的主键约束被删除时,这个外键约束也随之删除。
十、CHECK约束
  • 检查性约束的条件表达式不允许使用:
  • 伪列,例如:CURRVAL,NEXTVAL,LEVEL及ROWNUM
  • 可以调用SYSDATE,UID,USER及USEREVN函数
  • 对其他记录其他值的查询
  • 检查性约束可以定义在列级别上,也可以定义在表级别上
十一、相关数据字典
  • 和约束相关的数据字典有:
  • USER_CONSTRAINTS:查看表上所有的约束。
  • USER_CONS_COLUMNS:查看与约束相关的列名,该字典对于那些由系统指定名字的约束特别有用。
  • 在约束类型中,C代表CHECK,P代表PRIMARY KEY,R代表
  • FOREIGN KEY, U代表UNIQUE,NOT NULL约束实际上是一个
    CHECK约束。
SELECT constraint_name, constraint_type 
FROM user_constraints;  

相关文章

  • mysql约束

    1, mysql 不支持外键约束 ,条件约束约束分为列级约束,primary 主键约束check 条件约束for...

  • 2018-11-20 mysql 表约束

    知识点一: 表约束 非空约束,唯一约束,自增长,默认约束,主键约束,外键约束 1 not null 非空约束 例子...

  • mysql 约束

    mysql 中常见的约束: 默认约束 非空约束 主键约束 唯一约束 外键约束 自增长约束 顾命思议,主要讲几个容易...

  • MySQL约束简介

    约束能保证数据的完整性和一致性。约束类型:主键约束、唯一约束、非空约束、默认约束、外键约束 主键约束(PRIMAR...

  • mysql基础(二)

    约束 约束保证数据的完整性和一致性,约束分为表级约束和列级约束。表级约束和列级约束有五种约束: NOT NULL ...

  • 初学oracle

    约束: 非空约束:not null 唯一约束:unique 检查约束:check 主键约束:primary ke...

  • MySQL 基础 4 多表设计之外键约束

    1.1 约束 1.1.1 约束的作用   约束是用来保证数据的完整性。 1.1.2 单表约束 主键约束 唯一约束 ...

  • 17/12/13约束

    17/12/13约束 约束命名规则 表明_列名 _约束类型 unique约束(唯一约束) constraint(建...

  • 数据库约束

    约束类型 非空约束 not null 唯一性约束 unique 主键约束 primary key 外键约束 for...

  • XML约束——DTD约束

    约束 XML技术中,可以编写一个文档来约束一个XML的书写规范,约束文档定义了在XML中允许出现的元素名称、属性及...

网友评论

    本文标题:约束

    本文链接:https://www.haomeiwen.com/subject/ldppeqtx.html