为什么需要约束:
数据完整性是指数据的精确性和可靠性。它是防止数据库中存在不符合语义规定的数据和防止错误信息的输入输出造成无效操作或错误信息而提出的。
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:
1.实体完整性:特定表的唯一实体,规定表的每一行的记录在表中是唯一的。
2.域完整性:限制向表中输入的数值的范围。
3.引用完整性:保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。涉及到两个及两个以上的表中数据的一致性维护。
4.自定义完整性:针对某一具体关系型数据库的约束条件。
初识约束:
约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。
约束的分类:
1. 主键约束(PRIMARY KEY)
2. 唯一性约束(UNIQUE)
3. 非空约束(NOT NULL)
4. 检查约束(CHECK)
5. 外键约束(FOREIGN KEY)
各个约束的概念:
主键约束(PRIMARY KEY):
主键列的数据唯一,并且不允许为空。
定义主键:create table 表名(列名 数据类型 primary key)
如图所示:
2. 唯一性约束(UNIQUE):
要求该列的值唯一,允许为空,但是只能出现一个空值。
定义唯一约束:字段名 数据类型 unique
如图所示:
3. 非空约束(NOT NULL):
字段的值不能为空。 非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不用输入。
定义非空约束: 字段名 数据类型 not null
如图所示:
4. 检查约束(CHECK):
检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。检查的规则必须是一个结果为true或false 的表达式。
定义检查约束:student_sex varchar2(1) check(student_sex in('男','女')),
5. 外键约束(FOREIGN KEY):
在多张表的数据之间建立关系,确保多个表之间数据的一致性、完整性。一个表中可以用任意多个外键。
定义外键约束:constraint 前表名 前主键 foreignkey(前表主键) references 前表名(前主键);
如图所示: