约束的作用:
创建表:保证数据的完整性 = 实施完整性约束(保证以后数据输入 是正确的,错误的数据、不符合要求的数据不允许输入)
约束方法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字段数据,则会报错