MySQL:约束&主键&唯一键

表的约束:表中一定有约束,通过约束让插入表中的数据是符号预期的
约束的本质是通过技术手段,倒逼程序员插入正确的数据

Null约束

MySQL:约束&主键&唯一键_第1张图片
这里的Null表示在插入的时候,该属性能否为空,如果是NO,则插入时候必须有数据

create table t1(
id int not null
);

  • 该语句显示出来就是NO

default约束

create table t1(
id int not null
age tinyint default 18,
);
insert into t1 (id) values (‘张三’);

id不能插null,age可以插null,如果插入时候省略age,默认age是18
not null default,default不为空就行

列描述

create table t1(
id int not null comment ‘用户id号’
age tinyint default 18,
);
这就是一个单纯的注释

zerofill

上图中,int括号中的数字是11,并且有zerofill修饰时,存储某个数的长度不够11位就用0填充
int最大取值范围是21亿多,共10位,另一位是符号位

主键

一张表有一列信息标定数据的唯一性
主键只有一个,要么没有
一个主键可以被添加到一列,或者多列上
primary key修饰
MySQL:约束&主键&唯一键_第2张图片
alter table 表名 add primary key (字段)
alter table 表名 drop primary key

create table t2(
id int,
name varchar(20) not null,
primary key(id, name)
);

  • id和name合起来是一个主键
    也就是插入的时候,id和name不能同时一样

自增长

create table t2(
id int primary key auto_increment,
name varchar(20) not null
);
MySQL:约束&主键&唯一键_第3张图片

默认从1开始插入

唯一键

与主键功能类似,插入时值可以为NULL
主键用来标记某个属性在整张表中的唯一性
唯一键用来保证同一列的值之间不会重复,也是一种唯一性

create table t4(
id int unique,
name varchar(20) not null
);
MySQL:约束&主键&唯一键_第4张图片

主键和唯一键两者都有唯一性

一个列设置成主键,但是其他列也需要有唯一性
例如:每个人身份证号是主键,但是每个人的电话号码也需要唯一性保证

外键

用于主表和从表的关系
外键一般都在从表中,用于和依附主表中的某一列(该列是被主键和唯一键修饰的)

create table student(
id int primary key,
name varchar(20),
tel char(11) unique,
class_id int,
foreign key(列名) references 主表名(主表中的某一列)
);

你可能感兴趣的:(mysql,mysql,数据库,sql)