2020年5月4日
23:05
分类 | 介绍 |
Not null | 非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。 |
default | 默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据 |
unique | 唯一值,唯一值,允许为空,但只得一个。确保这一字段中的数据为唯一值。 |
Primary key | 主键,用于保证该字段的唯一性且不能为空, |
foreign | 外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,贝lj每一个外键值必须等于另一个表中主键的某个值。 |
check | (MySQL中不支持)用于检查数据是否符合范围, |
? ?
语法上,六种约束类型都支持在列中写,但是外键约束不起作用。
除了非空和默认都可以写。
Create table table_constraint(
id int primary key auto_increment,#主键自增
name varchar(20) unique,#唯一姓名
sex varchar(2) default ‘ 男‘,#默认性别
QQ int(11) not null#不能为空
);
? ?
案例:
create table table_constraint(
id int,
name varchar(20),
gender char(1),
age int,
majorid int,
constraint pk primary key(id),
constraint uq unique(name),
constraint ck check(gender = ‘男‘ or gender=‘女‘),
constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
);
Create table if not exists table_constraint(
id int primary key auto_increment,#主键自增
name varchar(20) unique,#唯一姓名
sex varchar(2) default ‘ 男‘,#默认性别
QQ int(11) not null#不能为空
constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
);
约束 | 是否可以为null | 保证唯一性 | 一个表中可以有多少个 | 是否可以组合 |
主键 | 不可以 | 可以 | 至多一个 | 可以,但不推荐 |
唯一 | 可以,但是只能有一个为null | 可以 | 可以包含多个 | 可以,但不推荐 |
? ?
alter table table_constraint modify column name varchar(20) not null;
alter table table_constraint modify column gender char(1) default ‘男‘;
alter table table_constraint modify column id int primary key;
alter table table_constraint add primary key(id);
alter table table_constraint modify column id int unique;
alter table table_constraint add unique(name);
? ?
alter table table_constraint modify column id int primary key;
alter table table_constraint add foreign key (majorid) references major(id);
? ?
alter table table_constraint modify column name varchar(20) null;
alter table table_constraint modify column gender char(1);
alter table table_constraint drop primary key;
alter table table_constraint drop foreign key majorid;
alter table table_constraint drop index name;
??
原文:https://www.cnblogs.com/yuknight/p/12833776.html