表的约束:表中一定有约束,通过约束让插入表中的数据是符号预期的
约束的本质是通过技术手段,倒逼程序员插入正确的数据
Null约束
这里的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修饰
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
);
默认从1开始插入
唯一键
与主键功能类似,插入时值可以为NULL
主键用来标记某个属性在整张表中的唯一性
唯一键用来保证同一列的值之间不会重复,也是一种唯一性
create table t4(
id int unique,
name varchar(20) not null
);
主键和唯一键两者都有唯一性
一个列设置成主键,但是其他列也需要有唯一性
例如:每个人身份证号是主键,但是每个人的电话号码也需要唯一性保证
外键
用于主表和从表的关系
外键一般都在从表中,用于和依附主表中的某一列(该列是被主键和唯一键修饰的)
create table student(
id int primary key,
name varchar(20),
tel char(11) unique,
class_id int,
foreign key(列名) references 主表名(主表中的某一列)
);