约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖的数据,保证数据不被删除。
常用五类约束:
not null:非空约束,指定某列不为空
create table tablename(
id int not null,
name varchar(20) not null
);
unique: 唯一约束,指定某列和几列组合的数据不能重复
create table tablename(
id int not null,
name varchar(20),
password varchar(20),
constraint name_pwd unique(name,password)
);
或添加约束
alter table temp add unique(name password);
primary key:主键约束,指定某列的数据不能重复、唯一
create table tablename(
id int primary key,
name varchar(20)
);
组合模式:
create table tablename(
id int not null,
name varchar(20),
pwd varchar(15),
constraint name_pwd primary key(name,pwd)
);
foreign key:外键约束,指定该列记录属于主表中的一条记录,参照另一条数据
create table student(
id int auto_increment primary key,
name varchar(25),
classes_id int,
foreign key(classes_id) references classes(id)
);
增加外键约束:
alter table student add foreign key(classes_name, classes_number) references classes(name, number);
check:检查,指定一个表达式,用于检验指定数据
create table temp(
id int auto_increment,
name varchar(20),
age int,
primary key(id),
check(age > 20)
);
上面check约束要求age必须大于20,但没有任何作用。但是创建table的时候没有任何错误或警告。