【2020082503】数据表的管理--数据类型/字符串类型/日期时间类型
在设计数据表的时候,首先需要想清楚该表需要达到什么目的,并设计出表结构:
表结构初步设计---(1)分析存储内容
(2)确定字段构成
(3)设计字段类型
数据支持类型:
- 整数类型(精确值)-INTEGER,INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
- 定点类型(精确值)-DECIMAL
- 浮点类型(近似值)-FLOAT, DOUBLE
- 比特值类型-BIT
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1字节 | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2字节 | (-32768,32767) | (0,65536) | 大整数值 |
MEDIUMINT | 3字节 | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT/INTEGER | 4字节 | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8字节 | 很大我就不写了 | 极大整数值 | |
FLOAT | 4字节 |
(-3.402823466E+38,-1.175494351E-38),0, (-1.175494351E-38,3.402823466E+38) |
单精度 浮点数值 |
|
DOUBLE | 8字节 |
双精度 浮点数值 |
||
DECIMAL | 对DECIMAL(M,D) | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
对于精度比较高的东西,比如money,用decimal类型提高精度减少误差。列的声明语法是DECIMAL(M,D)
M是数字的最大位数(精度)。其范围为1~65,M的默认值是10.
D是小数点右侧的数字的数目(标度)。其范围是0~30,但不得超过M。
比如DECIMAL(6,2)最多存在6位数字,小数点后占2位,取值范围-9999.99~9999.99
比特值类型BIT指0,1值表达2种情况,如真、假。
字符串类型:
- CHAR和VARCHAR类型
- BINARY和VARBINARY类型
- BLOB和TEXT类型
- ENUM类型和SET类型
类型 | 大小 | 用途 |
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535字节 | 边长字符串 |
TINYBLOB | 0-255字节 | 不超过255个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65535字节 | 二进制形式的长文本数据 |
TEXT | 0-65535字节 | 长文本数据 |
MEDIUMBLOB | 0-16777215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 |
LONGBLOB | 0-4294967295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4294967295字节 | 极大文本数据 |
char和varchar
char:定长,效率高,一般用于固定长度的表单提交数据存储,默认1字符
varchar:不定长,效率偏低
text和blob
text用来存储非二进制文本
blob用来存储二进制字节串
enum和set
enum用来存储给出的一个值
set用来存储给出的值中一个或多个值
日期时间类型
类型 | 字节大小 | 示例 |
date | 4 | “2020-01-01” |
time | 3 | “12:29:59” |
datetime | 8 | “2020-01-01 12:29:59” |
year | 1 | “2017” |
timestamp | 4 |
“1970-01-01 00:00:00” - “2030-01-01 00:01:03" UTC |