- 约束是条件是在建表时使用的,用于限制表中的数据,为了保证表中数据的准确性和可靠性
- 共有6大约束条件:not null || default || primary key || unique || check || foreign key
- not null :非空,保证该字段的值不为空
- default:默认,保证该字段有默认值
- primary key:主键,用于保证该字段的值有唯一性,并且非空,比如学号等
- unique:唯一,用于保证该字段的值具有唯一性但是可以为空
- check:检查约束【mysql不支持但不报错】
- foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表中添加外键约束,用于引用主表中某列的值
- 添加约束的时机:
创建表时;表已经存在,但是没有数据时
- 约束的添加分类:
列级约束:语法上六种约束都支持,但是外键约束没有效果
表级约束:除了非空和默认,其他的都支持
创建表时添加约束
一、添加列级约束
create database school;
create table major(
id int primary key,
majorName varchar(20)
);
create table stuinfo(
id int primary key,
stuName varchar(20) not null,
gender char(1) check(gender = '男' or gender='女'),
seat int unique,
age int default 18,
majorId int references major(id)
);
二、添加表级约束
在各个字段的最下面
[constraint 约束名] 约束类型(字段名)
drop table if exists stuinfo;
create table stuinfo(
id int,
stuname varchar(20),
gender char(1),
seat int ,
majorid int,
constraint pk primary key(id),
constraint uq unique(seat),
constraint ck check(gender = '男' or gender='女'),
constraint fk foreign key(majorid) references major(id)
);
修改表时添加约束
alter table stuinfo modify column tsunami archer(20) not null;
alter table stuinfo modify column age int default 18;
# 添加列级约束
alter table stuinfo modify column stuid int primary key;
#添加标级约束
alter table stuinfo add primary key(id);
# 添加列级约束
alter table stuinfo modify column seat int unique;
#添加标级约束
alter table stuinfo add unique(seat);
alter table stuinfo add foreign key(majorid) references major(id);