一、主键约束
主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
添加主键约束:
create table `demo`(
`id` int,
primary key (`id`)
);
create table `demo`(
`name` varchar(100) primary key
);
追加主键约束:
alter table `表名` add add primary key (字段名);
删除主键约束:
alter table `表名` drop primary key;
二、唯一约束
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
唯一约束不允许出现重复的值,但是可以为多个null。
同一个表可以有多个唯一约束,多个列组合的约束。
在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
添加唯一约束:
create table `demo`(
`username` varchar(30),
unique key (`username`)
);
create table `demo`(
`username` varchar(30) unique key
);
追加唯一约束:
alter table `表名` add unique (字段名);
删除唯一约束:
alter table `表名` drop index 唯一约束名;
三、外键约束
外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
添加外键约束:
create table 表名(
字段名 int(10) auto_increment primary key,
字段名 int(10),
constraint 外键约束名(a_b) foreign key(外键字段名) references 外键表名(外键关联的字段名)
);
追加外键约束:
alter table 表名 add constraint 外键约束名 foreign key(外键字段名) references 外键表名(外键关联的字段名);
删除外键约束:
alter table 表名 drop foreign key 外键约束名;
四、非空约束
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
添加非空约束:
create table 表名(
字段名 int(10) not null
);
追加非空约束:
alter table 表名 modify 字段名 int(10) not null;
alter table 表名 change 字段名 字段名 int(10) not null;
删除非空约束:
alter table 表名 modify 字段名 int(10);
alter table 表名 change 字段名 字段名 int(10);
五、默认约束
当插入一个新行到表中时,没有给该列明确赋值,如果定义了列的默认值,将自动得到默认值;如果没有,则为(NULL)。
添加默认约束:
create table 表名(
字段名 int(10) default 3
);
追加默认约束:
alter table 表名 modify 字段名 int(10) default 2;
alter table 表名 change 字段名 字段名 int(10) default 2;
删除默认约束:
alter table 表名 modify 字段名 int(10);
alter table 表名 change 字段名 字段名 int(10);
六、自增约束
AUTO_INCREMENT可以约束任何一个字段(该字段一定是数字类型),该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。但是PRIMARY_KEY约束的主键字段,一定是自增字段。
添加添加约束:
create table 表名(
字段名 int(10) auto_increment primary key
);
追加自增约束:
alter table 表名 modify 字段名 int(10) auto_increment;
alter table 表名 change 字段名 字段名 int(10) auto_increment;
删除自增约束:
alter table 表名 modify 字段名 int(10);
alter table 表名 change 字段名 字段名 int(10);