数据库中表的常见七大约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业
务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

1、空属性not null:not null 此列属性不允许为空,必须做数据插入

create table t1(
    per_name varchar(20),
    per_age int not null
);

这里写图片描述
插入值:

insert into t1(per_age) values(20);

//让pet_age为NULL时尝试插入一下,看是否会报错
insert into t1(per_name) values("易烊千玺");

查询:

select * from t1;

这里写图片描述
注:数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算

2、默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选 择性的使用默认值。

默认值default:a:如果某一种属性经常出现,可以在一开始就指定数据
b:默认值配合not null使用
c:set和enum不允许设置默认值

例子:

create table t2(
        name varchar(20),
        age int not null default 0,
        sex varchar(1) default '男'
);

这里写图片描述

insert into t2(name,age) values("名字",20);
insert into t2(name,sex) value(" 名字","女");

这里写图片描述
增加一列属性

alter table t2 add time_test TIMESTAMP;()

3、列描述 comment:comment描述仅作为列的作用,没有实际含义
查看到当前数据库的描述信息:show create table t3;

* comment不等同于注释
create table t3(
    name varchar(20) comment '此列描述学生姓名',
    age int default 0 comment '描述学生年龄',
    sex char(1) default '男' comment '性别信息'
);

这里写图片描述

查看到当前数据库的描述信息:show create table t3;
这里写图片描述

添加注释

create table t4(
    comment_name char(1) comment '测试comment是否能看到',
    annotation_name char(1) --测试注释释放能看到
);

4、自动填充0 (zerofill)

a:如果某一数值列规定了zerofill,则自动把此列变为无符号整形 b:
规定了zerofill的数据列,如果数据列的长度没达到规定长度,则在数据前面自动填充0
eg:insert into t6 value (10,123); —–>00123。(如果超过或者达到长度,则不填充)

create table t5(
    a int default 0,
    b int(5) default 55 zerofill
);

这里写图片描述

// 添加
insert into t5 value (10,123);

// 创建t6
create table t6(
    a int default 0,
    b int(5)  zerofill
);

这里写图片描述

// 添加信息给t6
insert into t6 value (10,123);

5、主键约束(primary key):主键用于唯一约束字段数据,使用主键约束的字段,不能为空,不能重复,主键所在的列为整数类型,一张表有且只能有一个主键

(1)单主键:

create table t7(
    id int primary key comment 'id列表示学生学号不允许为空,也不允许重复',
    name varchar(20) not null
);

这里写图片描述

测试:主键不能重复
insert into t7 values(1,"易烊千玺"),(2,"我自己");

这里写图片描述
(2)复合主键:

create table t8(
    name varchar(20) comment '学生姓名',
    sushe varchar(20) comment '描述学生宿舍',
    age int comment '学生年龄',
    primary key(name,sushe) comment 'id和宿舍作为复合主键'
);

这里写图片描述

测试:组合起来的主键不能重复
insert into t8 values("1","101","10"),("2","101","15");
insert into t8 values("2","101","11");

这里写图片描述
(3)创建表以后追加主键:

alter table 表名 add primary key(字段1……);
注意:追加主键必须确保(作为主键的字段)字段1不能为空,不能重复;

(4)删除主键

alter table 表名 drop primary key;

eg:
alter table t7 drop primary key;(删除主键之后就可以允许重复)

这里写图片描述
这里写图片描述
6、自增长(auto_increment)

a、任何一个字段要做自增长,其本身必须是索引(key必须有值)
c、一张表有且只能有一个自增长
主键和自增长搭配使用
id + auto_increment:逻辑主键 eg:订单表、商品信息表

create table t9(
    id int primary key auto_increment comment '描述商品编号',
    name varchar(20) comment '描述商品名称'
);

这里写图片描述

测试:
insert into t9(name) values("IphoneX"),("Iphone8");

这里写图片描述

1和2 就是自增长的,再添加一条信息就会在2的基础上继续加

insert into t9(name) values(8,”小米Mix2”); 【再添加一条后,就从8开始自增】

* 说明:

指定自增数值后,以后的自增以此为基础
删除指定列以后还是以最大值为基础自增

7、唯一键(unique)

唯一键允许为空,但是不能重复,一张表中可以有多个字段设置唯一
唯一键解决表中多个字段需要唯一性约束的问题
null不做比较,可以允许多个null

create table t10(
    id char(10) unique comment '描述学号唯一',
    name varchar(10)
);

这里写图片描述

insert into t10 values(1,"哈哈"),(2,"呵呵");

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/apt1203jn/article/details/80314605