数据库-约束

来源:互联网 发布:手机淘宝在线客服 编辑:程序博客网 时间:2024/05/16 11:20

思维导图:
思维导图
一、简介约束
数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。

完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。
总的来说就是是数据保持完整性。
二、分类
约束主要分为六类:主键(Primary Key) 、外键(Foreign Key)、检查约束(Check)、唯一性约束(Unique)、非空约束(Not Null)、默认约束(Default)
1.主键约束
1)主键是最重要的约束类型
2)表中定义主键的列只能包含唯一的值
3)一个表中只能有一个主键 且不允许用NULL来定义主键的值
可以指定多个列的组合作为主键,这多个列中每一个列都不能出现NULL值,此时一个列中可以出现重复值,但所有列的组合值必须是唯一的。
4)Text和Image数据类型不能被指定为主键。
2.外键约束
1)外键约束是用于强制参照完整性,用来保证相关联的表中的主键或外键的数据保持一致。
2)当一个表中的一列或多列的组合与其他表中定义的主键或唯一性约束相同时,可以将这些列或列的组合定义为外键,并设定它与哪个表中的哪些列相关联。
3)其中包含外键的表,称为从表,包含外键所引用的主键或唯一键的表称为主表。
4)一个表中最多可以有31个外键约束。
5)特点:
①主键表中更新字段值,外键表中对应的外关键字字段也相应更新。
②当在外键表中插入关联字段值时,若插入的值中主键表中不存在,则中外键表中无法插入数据。
3.唯一性约束
1)唯一性约束用来限制不受主键约束的列上的数据的唯一性,即表中任意两行在 指定列上都不允许有相同的值。
2)一个表上可以放置多个唯一性约束,唯一性约束可以为NULL值。
3) 唯一性约束和主键约束的区别:
①唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。
②在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引 。
4.检查约束
1) 检查约束即是对表中的数据设置检查条件,来保证数据的完整性 。
2)一个表中可以定义多个检查约束。
5.默认约束
1)默认约束指用户在进行插入操作时,没有显示为列提供的数据,那么系统将默认值赋给该列。
2)默认值约束所提供的默认值可以为常量、函数、系统函数、空值等。
3)对于表中,每一列只能定义一个默认约束,对于具有IDENTITY属性和timestamp数据类型的字段,不能使用默认约束。
4)定义的默认值不允许高过对应字段的允许长度。
6.非空约束
1)空值约束即是否允许该字段的值为NULL,表示“不知道”、“不清楚”或“没有数据”的意思。
2)主键不允许为空值。
三、SQL实现
1)student(id,sno,name,age,sex,address) 学生表
2)studentScore(id,sid,MathScore,EnglishScore)分数表
3)SQL语句:

– 学生表
CREATE TABLE student(
id int not null primary key,
name varchar(6),
age int not null check(age >0 and age<100 ),
sex char(2),
address varchar(20) default’北京’
);

– 学生成绩表
CREATE TABLE studentScore(
id int not null primary key,
sid int,
MathScore int,
EnglishScore int,
constraint FK_sid foreign key(sid) references student(id)
);

primary key 声明这是一个主键(唯一,非空)
unique 声明这个列不能有重复的值,唯一性
check(age >0 and age<100 ) 约束年龄在0到100岁之间
default’北京’ 默认约束,如果添加数据时,没有指定该字段的值,则默认为北京
constraint FK_sid foreign key(sid) references student(id)
学生成绩表中的sid参照学生表中的id。学生成绩表中的sid必须参考学生表中的id。

原创粉丝点击