mysql中的约束
主键约束 primary key
1.单个主键
关键字 primary key,
他能够唯一确定一张表中的一条记录,我们通过给某个字段添加约束,就可以使得该字段<不重复>且不为空。
2.联合主键
关键字 primary key(id,name)
一个表中有多个主键叫做联合主键。
联合主键加起来不重复就可以(不会报错)但是联合主键一个都不能为null。
如何创建主键约束
create table user表名称(
id int primary key,
name varchar(20)
)
// 添加一条数据
insert into user values(1,"张三");
// 会出错 该字段<不重复>且不为空
insert into user values(1,"张三");
insert into user values(null,"张三");
自增约束 auto_increment
如果我们创建表的时候忘记创建表单约束的时候
我们可以通过以下两种方法增加主键
1.alter table 表单名 add primary key(id) 修改表结构
2.alter table 表单名 modify id int primary key 修改字段添加约束
删除:
alter table 表单名 drop primary key/(id)
create table user3表名称(
// id如果不输入,可以自动增长
id int primary key auto_increment;
name varchar(20)
)
外键约束(mul指有想相关的键)
涉及到两个表:
主表(父表),副表(子表)
---- 班级表
create table classes(
id int primary key,
name varchar(20)
)
---- 学生表
create table student(
id int primary key,
name varchar(20),
class_id int,
// class_id里面的值比喻来自classes班级表的id字段
foreign key(class_id) references classes(id)
)
结论:
1.主表classes 中没有的数据值,在副表student中是不可以使用的。(会报错)
2.主表classes 中的记录被副表student引用,是不可以被删除的
唯一约束(uni)
约束修饰字段的值不可以重复
添加唯一约束:alter
第一种
create table user4(
id int,
name varchar(20)
)
alter table user4 add unique(name);
第二种(可以多些,多个显示mul)
create table user4(
id int,
name varchar(20),
unique(name)
)
第三种
create table user4(
id int,
name varchar(20) unique
)
第四种 modeify的方法添加:
alter table user4 modeify name varchar(20) unique;
删除唯一约束
alter table user4 drop index name(谁是唯一约束就填写谁);
**
总结: 添加 1. 建表的时候添加(2种)
2. 建表之后添加(2种) alter…add…/alter…modeify…
3. 删除: alter…drop…
**
非空约束 (yes/no)
修饰的字段不能为空 null
create table user5(
id int,
name varchar(20) not null
);
默认约束
当我们插入字段值得时候,在没有传值的情况下,就会使用默认值
create table user5(
id int,
name varchar(20);
// 年龄的默认值为10
age int default 10
);