真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业
务逻辑角度保证数据的正确性。比如有一个字段是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,"呵呵");