MySQL - 建表约束
- 主键约束
能够唯一确定一张表中的一条记录
create table user( -> id int primary key, -> name varchar(20));
-
- 联合主键:
允许一列有重复,只要不是所有主键列都重复即可,且任何一个字段不能为空
create table user2( -> id int, -> name varchar(20), -> password varchar(20), -> primary key(id,name));
-
-
如果建表时未创建主键约束
-
修改表结构,添加主键
alter table user4 add primary key(id);
如何删除
alter table user4 drop primary key;
修改字段的方式添加主键
alter table user4 modify id int primary key;
- 自增约束
create table user3( -> id int primary key auto_increment, -> name varchar(20));
- 唯一键约束
被修饰的字段的值不能重复
unique(id,name)
允许一列有重复,只要不是所有唯一键列都重复即可
create table user6(id int,name varchar(20) unique); create table user7(id int,name varchar(20),unique(name)); create table user8(id int,name varchar(20),unique(id,name));
删除唯一键
alter table user7 drop index name;
添加唯一键
alter table user5 add unique(name); alter table user7 modify name varchar(20) unique;
- 非空约束
create table user9( -> id int, -> name varchar(20) not null);
- 默认约束
create table user10( -> id int, -> name varchar(20), -> age int default 10);
- 外键约束
涉及到两个表:主表和副表
create table classes( -> id int primary key, -> name varchar(20)); create table students( -> id int primary key, -> name varchar(20), -> class_id int, -> foreign key(class_id) references classes(id));
主表中没有的数据值,在副表中是不可以使用的
insert into students values(1005,'赵六',5); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test0311`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`))
主表中的记录被副表引用时,是不可以被删除的
delete from classes where id=4; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test0311`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`))

浙公网安备 33010602011771号