数据类型
数字类型
-
整数类型:
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT数据类型 字节数 取值范围 TINYINT 1 0 - 225 SMALLINT 2 0 - 65 535 MEDIUMINT 3 0 - 16 777 215 INT 4 BIGINT 8 -
浮点数类型:
FLOAT,DOUBLE数据类型 字节数 FLOAT 4 DOUBLE 8
tip:浮点数类型取值范围很大,但精度并不高,FLOAT的精度为6或7位,DOUBLE的精度为15位,如果超出精度,可能会导致给定的数值与实际保存的数值不一致,发生精度损失
时间和日期类型
-
日期:
YEAR,DATE,DATETIME -
时间:
TIME,TIMESTAMP数据类型 格式 取值范围 零值 YEAR YYYY 1901 - 2155 0000 DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 0000-00-00 TIME HH:MM:SS -838:59:59 ~ 838:59:59 00:00:00 DATETIME YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 TIMESTAMP YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
在mysql中,
TIMESTAMP字段会默认设置属性NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
NOT NULL 表示非空约束,该字段将不允许保存NULL值 DEFAULT 表示默认约束,当字段无任何输入时,自动设置某个值作为默认值 CURRENT_TIMESTAMP 表示使用系统当前日期和时间 ON UPDATE 记录其他字段被UPDATE语句修改时自动更改改字段的某个值
字符串类型
| 数据类型 | 说明 |
|---|---|
| CHAR | 固定长度字符串 |
| VARCHAR | 可变长度字符串 |
| TEXT | 大文本数据 |
| ENUM | 枚举类型 |
| SET | 字符串对象 |
| BINARY | 固定长度的二进制数据 |
| VARBINARY | 可变长度的二进制数据 |
| BLOB | 二进制大对象 |
ENUM类型每次只能从枚举列表中取一个值,而SET可以取多个,多个值间用逗号分割ENUM类似单选框,SET类似多选框
# ENUM 枚举类型
创建表:CREATE TABLE my_ENUM (gender ENUM('one', 'two'))
插入:INSERT INTO my_ENUM VALUES ('one'), ('two')
表约束
- 五种约束:
默认约束,非空约束,主键约束,唯一约束,外键约束
默认约束
语法:字段名 数据类型 DEFAULT 默认值
默认约束用于为数据表中的字段指定默认值,即当在表中插入一条新记录没有给字段赋值时,会自动为这个字段插入默认值,通过关键字
DEFAULT定义
非空约束
语法:字段名 数据类型 NOT NULL
非空约束指的是字段的值不能为NULL, 通过关键字
NOT NULL定义
主键约束
顶级约束:字段名 数据类型 PRIMARY KEY
表级约束:PRIMARY KEY (字段1,字段2)
主键约束要求被约束的字段不允许重复,也不能出现NULL值,每个表最多值允许含有一个主键,通过
PRIMARY KEY定义
唯一约束
顶级约束:字段名 数据类型 UNIQUE
表级约束:UNIQUE (字段1, 字段221111)
唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现,通过
UNIQUE定义
自动增长
语法:字段名 数据类型 AUTO_INCREMENT
- 一个表中只能有一个自动增长字段,该字段的数据类型是整数类型,且必须定义为键 (UNIQUE KEY, PRIMARY KEY)
- 自动增长值从1开始自增
- 使用
DELETE删除记录时,自动增长值不会减小或填补空缺- 若为自动增长插入一个具体值时,则不会使用自动增长值