TINYINT , SMALLINT , INT , BIGINT
NULL 不区分大小写 NULL 的真实含义时,这个字段值不知道 所以一般来说,有 NULL 参与的运算结果都是 NULL 定义表时,字段后可以跟 NOT NULL 强制不允许出现空 没有特殊理由,建议都加上 NOT NULL
主键,每个信息都有主键,用来唯一标识一条信息 可以是一个字段,可以是多个字段组成(复合主键)
在 InnoDB 的引擎下,数据在硬盘存储是按照主键的排序方式存储的,为了避免中间插入主键,通常建议把主键设置成一个永远递增,永不修改的值
主键不允许为空/主键不允许重复
每个表上都有一个主键,通常用自增字段作为主键
唯一键 Unique Key 相似的点:主键和唯一键都不允许重复 不同点:
主键不允许为空,唯一键允许为空存储上,数据的存储是按照 主键 递增顺序保存的 唯一键,看作另外有一套数据结构创建一个学生表
//注意最后一行不能有逗号!!! CREATE TABLE students ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT "利用自增字段作为表主键", sn INT NOT NULL UNIQUE COMMENT "学号,事实上的主键,唯一键,不允许重复", name VARCHAR(10) NOT NULL COMMENT "姓名", gender TINYINT NOT NULL COMMENT "性别: 1 女 2 男 3 不想说", school VARCHAR (40) NOT NULL DEFAULT "西安财经大学" COMMENT "学校", registerd_at DATETIME NOT NULL COMMENT "报名时间", created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "入表时间" ) COMMENT "学生表"; CREATE TABLE students ( ... PRIMARY KEY (id, sn) -- 支持单字段 或者 多字段 UNIQUE KEY (sn, name) ) insert into students(sn,name,gender,registerd_at) values (125,"王五",2,"2019-9-9 21:44:20");