NULL not null 空约束
mysql中的null不是数据,也不是类型,只是标志属性。
用户说明 某哥字段是否是null(null表示什么都不存)
NULL采用关键NULL表示!(不是字符串)
是:NULL,而不是:‘NULL’
属性:
null 表示可以为空

not null 表示这个字段不能是空

再添加数据的时候如果没有指定的值,可能会是null;(如果字段设置能为空没有指定的字段就是空,如果设置了不能为空,非字符型就为0,字符型的就是什么都没有空的);
最主要的是这个和mysql的版本有关 可自行实践总结
default,默认属性,默认值约束
采用default关键字,在该字段没有赋值的时候设置默认值;

如果一个字段没有默认值就为null(default的那一列)

default 与 null 的处理关系!
如果此时,该字段被指定了一个null:
不能使用默认值,允许为null则为null,不允许则插入失败!
默认值存在一些特殊的关键字
default,也可以在值 中使用
等待更新
current_timestamp,用在第一个时间戳类型的字段上,表示当前的时间!

主键约束\唯一约束 primary\unique
站在的约束的角度上,要限制该字段的值是要唯一的;
但是主键好唯一又不是同一个概念;
都是索引的一种:
主键:可以唯一标示记录的字段,称之为主键
唯一键:保证每个字段上的值是唯一的,可以设置为唯一约束;
但是一般来说一个表只能有有一个主键(可以有多个后面会提到);
典型的就是在创建表的时候主动添加一个无关整型的数,充当主键,运算速度快;
比如说学生名字,性别,生日都可以冲突(当然是小概率事件,但是还是有可能发生的),学校就给他们规定了唯一索引学号,这样就不会出现冲突,
当然有的学校的学号是字符串,这样的运算速度比较慢,可以在添加一个无关的非实体自然属性,比如说冲1开始一直往下延续,在这个时候学号就可以是唯一约束了;
建立主键约束
建立主键约束有两种方案:
1.

无论怎么设置主键都不能为空,eg:

2.

创建唯一标识 unique key

管理主键和唯一
删除主键
因为主键也属于表结构的一部分,所以对主键操作就是操作表结构;
格式为: drop table 表名 drop primary key;

添加主键
alter table 表名 add primary key (字段列表);

删除唯一
如果删除唯一的话,不管有几个唯一的字段,占用删除一次就够了,因为所有的唯一键有一个唯一键的名字;
可以通过show create table 表名;
来看唯一键的名字:

删除唯一值得是删除唯一键的名字,
因为唯一键也是属于表的一部分,所以也是操作的是表结构,格式为:
alter table 表名 drop index index_name;
例如:

增加唯一
格式为:
alter table type_uni2 add unique key 索引名(字段列表);

自动增长 auto_increment
用于主键并且是一个字段的主键,才能使用auto_increment
可以使从一开始的数逐一递增的;

典型的是从一开始,还可以给int 后面听见四一个人无符号unsigned;
如果后面对自动增长再赋值的话就按照赋值之后的继续自动增长;

comment 注释
就像当与 -- 一样
create table type_com(
id int comment "这里是注释",
sn varchar(255)
);