本文主要是介绍第十四章约束,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
约束:
Constraint:是一种保证数据完整性的规则。约束设置在单个字段或者多个字段组合上,写入这些字段的行数据必须要符合约束的规则
约束的五种类型:
NOT NULL 非空约束,指定某列的所有行数据不能包含空值
UNIQUE 唯一性约束,指定列或者列的组合的所有行数据必须唯一
PRIMARY KEY 主键约束,表的每行的唯一性标识,指定列或者列的
组合的所有行数据必须唯一
FOREIGN KEY 外键约束,在列及引用列上建立的一种强制依赖关系
CHECK 检查性约束,在列上指定一个必须满足的条件
约束命名规则
• 约束也是数据库对象,必须按照命名规则命名,如果你不命名约束,Oracle服务器将用SYS_Cn格式产生一个名字,这里n是一个唯一的整数。
• 除了NOT NULL约束外,建议给其它约束起名字,命名规则为:表名_列名_约束类型。
《约束操作》
• 定义约束:约束通常在创建表的同时被创建;
• 追加约束:在表被创建后,如果有需求也可以临时添加约束;
• 启用及禁用约束:约束可以被临时禁用和启用。
定义约束:
–约束既可以写在每个对应列的后面,称之为列级别约束,一个列级别约束只能作
用在一个列上;
–也可以写完所有列之后,再写约束,称之为表级别约束,一个表级别约束既可以
作用在一个列上,也可以作用在列的组合上;
–NOT NULL约束只能定义在列级别上,联合主键或联合唯一性约束只能定义在表级
别上(限定在列的组合上的),其它约束既可以定义成表级别,也可以定义成列级别;
–列级别约束和表级别约束达到的作用完全相同,只是书写的位置不同;
–CONSTRAINT:约束的关键字;constraint_name:约束名字;constraint_type:约
束的类型;
• NOT NULL约束 :也叫非空约束,确保被约束列的所有行记录都不能为空值。只能定义在列级别上。
• UNIQUE约束:也叫唯一约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,定义UNIQUE约束的列 (或列组合) 被称为唯一键。
• 每个表可以有多个为UNIQUE约束。
• UNIQUE约束允许输入空值,除非我们在相应的列上定义NOT NULL 约束。
PRIMARY KEY约束:主键约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,并且确保作为主键一部分的列不能包含空值;
• 每个表只能创建一个主键约束。
主键和唯一键的区别:
1,唯一性约束键默认没有not null约束,而主键默认有一个 not null,
2,一个表中最多只能有一个主键,可以有多个唯一键
通常把唯一标识一行的,流水号----主键
身份证--------唯一键
• FOREIGN KEY,也叫外键约束,外键确保了相关联的两个字段的关系:
–外键列的值必须在引用列值的范围内,或者为空;
–外键参照的是列必须是主键或者唯一键;
• 主键表主键值被外键表参照时,主键表记录不允许被删除。
• FOREIGN KEY: 定义在子表的列中
• REFERENCES: 引用列所在的父表
• 注:
–ON DELETE CASCADE:当父表中的行被删除时,子表中相依赖的行同时被删除;(级联)
–ON DELETE SET NULL:当父表的行被删除时,子表中相依赖的行被转换为空值;
–无ON DELETE CASCADE或ON DELETE SET NULL选项,当附表中的行被删除时,如果父表中的行在子表中被引用,则提示不能被删除。
• CHECK约束,也叫检查性约束,确保某个列的所有行数据都必须满足的条件,如:
–sal NUMBER(8,2) CONSTRAINT dept_sal_min CHECK
(salary > 0)
–要求sal字段的所有行数据必须大于0
• 表达式不允许使用:
–伪列,例如:CURRVAL, NEXTVAL, LEVEL及ROWNUM;
–可以调用SYSDATE, UID, USER及USERENV 函数;
–对其它记录其它值的查询。
使用子查询创建表的时候,约束不会被继承过来,只是复制了一些表结构
追加约束 :
• 也可以用ALTER TABLE语句为表:
–追加或删除约束,但不修改它的结构;
–启用或禁用约束;
–用MODIFY子句添加一个NOT NULL约束;
• 追加约束,语法为:
ALTER TABLE table ADD [CONSTRAINT constraint] type (column);
• 追加NOT NULL 约束
ALTER TABLE table
MODIFY (column [CONSTRAINT constraint] NOT NULL);
删除约束:
• 语法
ALTER TABLE table DROP PRIMARY KEY|UNIQUE(column)
|CONSTRAINT constraint [CASCADE];
• 在语法中:
–table 是表的名字
–column 是受约束影响的列的名字
–constraint 是约束的名字
–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选项导致任何与其相依赖的约束也被删除。
约束启用与禁用
• 约束禁用
–如果有大批量数据导入时,我们可以采用禁用约束的方法,
主要的好处,首先效率高,另外有主外键约束的表之间导
入时,不用考虑导入的先后顺序。
–禁用约束语法:
ALTER TABLE table DISABLE CONSTRAINT constraint [CASCADE];
–应用CASCADE选项禁用相依赖的外键约束
–启用约束语法:
ALTER TABLE table ENABLE CONSTRAINT constraint;
这篇关于第十四章约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!