MySQL建表约束
-
主键约束(primary key)
能够唯一确定一张表中的一条记录,通过给耨个字段添加约束石特改字段不重复且不为空
create table user(
id int primary key,
name varchar(20));
注:id 不能为空且不重复
create table user2 (id int,
name varchar(200),
password varchar(20),
primary key(id,name));
多个字段组成的主键只要联合主键加起来不重复就可以,且不能为空
-
自增约束(auto_increment)
create table user3(
id int primary key auto_incrment,
name varchar(20));
#插入只有name没有ID
insert into user3 (name) values('zhangsan');
没有插入ID但是自动加入
- 注:建表是未添加自增和主键约束如何添加
create table user4(id int,
name varchar(20));
- 通过 alter table user4 add paimary key(id);添加
- 如何删除:alter table user4 drop primary key
- 修改主键约束:alter table user4 modify id primary key;
-
外键约束
涉及两个表,父表子表
#先创建一个class表
create table classes(
id int primary key,
name varchar(20)
);
#再创建一个student表
create table students(
id int primary key,
name varchar(20),
class_id int, #关联class表的ID
foreign key(class_id) references classes(id) #指明必须来自class——id
inster into classes values(1,'一班');
inster into classes values(2,'二班');
inster into classes values(3,'三班');
inster into classes values(4,'四班');
insert into students values(1001,‘张三’);
insert into students values(1002,‘张三’);
insert into students values(1003,‘张三’);
insert into students values(1004,‘张三’);
主表classes中没有的数据在副表students中是不可以使用的,主表中的记录被应用,是不可以被删除的
-
唯一约束(unique)
约束修饰字段的值不可以重复
create table user5(
id int ,
name varchar(20));
alter table user5 add unique(name);
或
create table user5(
id int ,
name varchar(20),unique(name));#可添加多个字段
或
create table user5(
id int ,
name varchar(20) unique);
- 如何删除约束:alter table user5 drop index name;
- 通过modify添加:alter table user5 modify name varchar(20) unique;
-
非空约束(not null)
修饰的字段不能为null
create table user6 (
id int,
name varchar(20)not null);
-
默认约束(default)
当我们插入字段值时,如果没有出入值,就会使用默认值
create table user7(
id int ,
name varchar(20),
age int default 10);
insert into user7 (id ,name) values(1,'zhangsan');
没有传值时为默认值,传值后为传入的值