1.空属性
两个值:null(默认的)和not null(不为空)
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。
select null;
select 1+null;
示例:
创建一个班级表,包含班级名和班级所在的教室。
站在正常的业务逻辑中:
如果班级没有名字,你不知道你在哪个班级
如果教室名字可以为空,就不知道在哪上课
所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”。
create table myclass(
class_name varchar(20) not null,
class_room varchar(10) not null);
desc myclass;
insert into myclass(class_name) values('class1');
可以看到,只插入class_name是失败的,因为class_room设定为非空,如果不插入class_room又不设置默认值的话就会插入失败。
2.默认值
默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
示例:
create table tt10 (
name varchar(20) not null,
age tinyint unsigned default 0,
sex char(2) default '男'
);
desc tt10;
默认值的生效:数据在插入的时候不给该字段赋值,就使用默认值
insert into tt10(name) values('zhangsan');
select * from tt10;
注意:只有设置了default的列,才可以在插入值的时候,对列进行省略
3.列描述
列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。 类似注释
示例:
create table tt12 (
name varchar(20) not null comment '姓名',
age tinyint unsigned default 0 comment '年龄',
sex char(2) default '男' comment '性别'
);
注意:not null和defalut一般不需要同时出现,因为default本身有默认值,不会为空
通过desc查看不到注释信息:
desc tt12