约束的作用: 创建表:保证数据的完整性 = 实施完整性约束(保证以后数据输入 是正确的,错误的数据、不符合要求的数据不允许输入)
约束方法1:唯一约束、主键约束、标识列 约束方法2:限制数据类型、检查约束、外键约束、默认值、非空约束
约束类型: 1.主键(Primary Key)约束 2.外键(Foreign Key)约束 3.唯一性(Unique)约束 4.默认值(Default)约束 5.非空(Not NULL)约束
一、主键:Primary key 如:
create table c7 (id int Primary key);
特征: 1.不允许重复 2.不能为空 3.一张表只能有一个主键 4.允许有联合主键(多个字段,共同主键) 如:
create table c8(id int name varchar(20),primary key(id,name));
二、外键:foreign key 多表之间数据一致性的约束(数据关联,保证数据的一致性) 1.先确定数据来源主表、从表 2.由从表的非主键向主表的主键字段发起建立外键(但数据类型、长度必须相同) 如:
foreign key(no) references xxb1 (no);
外键的作用: 1.从表不允许写入主表不存在的数据 2.主表不允许删除从表还存在的数据 3.无法防止主表中为空的数据,所以在建立从表时设置发起外键的那个字段不为空 如:
create table stuInfo(
scode int primary key,--学生的学号
Sname char(10),--学生的姓名
Saddress varchar(50),--学生的住址
Sgrade int,--学生所在班级
Semail varchar(50),--学生的邮箱地址
Sbrith date
)DEFAULT CHARSET='utf8";
create table score(
studentID int,
coureseID int,
score int,
scoreID int primary key,
foreign key(studentID) references stulnfo(Scode) --添加外键
)DEFAULT charset='utf8';
如: 先新建:create table 主表(主键字段 数据类型,…); 再新建:create table 从表(非主键字段 数据类型,…,foreign key(外键字段) refrencer 主表(外键字段));
alter table 从表名 add constraint fk_从表_主表_外键字段 foreign key(外键字段) refrencer 主表(外键字段)
建表:先主表,再从表 写数据:先主表,再从表 删数据:先从表,再主表
三、唯一性:unique 如:
create table c9 (email int unique,name char(20));
说明:如创建表,要保证邮箱地址唯一,如果email字段重复插入,则会报错,但是该字段可以为null 特征: 1.允许字段为空 2.一张表允许多个唯一性约束 3.以行为单位,确定每一行的唯一性
四、默认值:default 如:
create table c10(name varchar(20) default "欧");
当插入时没有插入值时,会自动插入默认值 也可以使用自增长的方式来给字段填充值(如:id等等) 如:
create table c11(id int not null auto_increment primary key,name char(20));
1.auto_increment是数据列的一种属性,只适用于整数类型数据列 2.auto_increment数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分) 3.auto_increment数据列必须具备NOT NULL属性 4.当进行全表删除时,auto_increment会从1重新开始编号
五、非空约束:not null 如:
create table c12(id int,name char(20) not null);
说明:用not null约束的字段不能为null值,必须给定具体的数据,如果没有插入name字段数据,则会报错