键表约束
文章目录
主键约束
能够***唯一确定***一张表中的一条记录
注:关于联合主键,只要联合主键“和”在一起不重复,且都不为NULL就不会出错。创建方式:
create table user2(
id int,
name varchar(20),
password varchar(20),
***primary key(id,name)***
);
建表后的修改约束,增加,删除,修改
alter table tablename add primary key(id); -- 添加主键
alter table tablename drop primary key; -- 删除主键
alter table tablename modify id int primary key;-- 通过modify修改字段,添加约束
自增约束:条目id自动+1
和主键搭配使用,用以自动管理主键的值
create table user3(
id int primary key auto_increment,
name varchar(20)
);
insert into user3(name) values('张三');
insert into user3(name) values('李四');
+----+------+
| id | name |
+----+------+
| 1 | 张三 |
| 2 | 李四 |
+----+------+
这里直接添加name的值而主键id会因为自增约束自己自增生成1
外键约束:设计主表与附表,附表中关联的字段来自主表
-- 班级
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) reference classes(id)
-- 学生表中的claa_id字段要来自classes表中,否则会报错
-- 主表中的记录被附表引用,那么这条几率不能被删除
);
唯一约束:约束修饰的字段的值不可重复,唯一约束可以为NULL
create table user(
id int,
name varchar(20)
);
alter table user add unique(name); -- 添加name的唯一约束,表示name不可以重复
-- 也可以通过其他方式在创建的时候添加,在末尾使用unique(name), 或者直接
-- name varchar(20) unique, 来添加
-- 在末尾添加unique(id,name)类似联合主键的方式添加,类似的要合在一起一样才算重复
alter table user drop index name; -- 删除
非空约束:修饰的字段不能为空
create table user(
id int,
name varchar(20) not null
);
默认约束:给字段一个默认值
create table user(
id int,
name varchar(20),
age int default 10 -- age没有传值的时候,使用默认值10
);