数据库表包含具有特定数据类型(如数字或字符串)的多个列。 它提供更多的数据类型,而不仅仅是数字或字符串,其中的每种数据类型都可以通过以下特征来确定:
- 用来表示数据值。
- 占用的空间以及值是固定长度还是可变长度。
- 数据类型的值可以被索引。
- MySQL如何比较特定数据类型的值。
我们来看一个表单来具体了解下:
数据类型 | 指定值和范围 |
---|---|
char | String(0~255) |
varchar | String(0~255) |
tinytext | String(0~255) |
text | String(0~65536) |
blob | String(0~65536) |
mediumtext | String(0~16777215) |
mediumblob | String(0~16777215) |
longblob | String(0~4294967295) |
longtext | String(0~4294967295) |
tinyint | Integer(-128~127) |
smallint | Integer(-32768~32767) |
mediumint | Integer(-8388608~8388607) |
int | Integer(-214847668~214847667) |
bigint | Integer(-9223372036854775808~9223372036854775807) |
float | decimal(精确到23位小数) |
double | decimal(24~54位小数) |
decimal | 将double 转储为字符串形式 |
date | YYYY-MM-DD |
datetime | YYYY-MM-DD HH:MM:SS |
timestamp | YYYYMMDDHHMMSS |
time | HH:MM:SS |
enum | 选项值之一 |
set | 选项值子集 |
boolean | tinyint(1) |
我们来具体看看,先来看数字类型:
数字类型 | 描述 |
---|---|
tinyint | 一个很小的整数 |
smallint | 一个小的整数 |
mediumint | 一个中等大小的整数 |
int | 一个标准整数 |
bigint | 一个大整数 |
decimalint | 定点数 |
FLOAT | 单精度浮点数 |
DOUBLE | 双精度浮点数 |
bit | 一个字节字段 |
mysql中呢,没有内置的 Boolean 或 bool 数据类型。所以要表示布尔值,mysql使用最小的整数类型,也就是TINYINT(1)
, 换句话说,BOOLEAN
和BOOL
是TINYINT(1)
的同义词。
字符串可以容纳从纯文本到二进制数据(如图像或文件)的任何内容,我们就来看下它在mysql中,如何表示:
字符串类型 | 描述 |
---|---|
char | 固定长度的非二进制(字符)字符串 |
varchar | 可变长度的非二进制字符串 |
BINARY | 一个固定长度的二进制字符串 |
VARBINARY | 一个可变长度的二进制字符串 |
TINYBLOB | 一个非常小的BLOB(二进制大对象) |
BLOB | 一个小的BLOB(二进制大对象) |
MEDIUMBLOB | 一个中等大小的BLOB(二进制大对象) |
LONGBLOB | 一个大的BLOB(二进制大对象) |
tinytext | 一个非常小的非二进制字符串 |
text | 一个小的非二进制字符串 |
mediumtext | 一个中等大小的非二进制字符串 |
longtext | 一个很大的非二进制字符串 |
enum | 枚举; 每个列值可以被分配一个枚举成员 |
SET | 集合; 每个列值可以分配零个或多个SET 成员 |
完事就是日期和时间的类型以及日期和时间的组合:
字符串类型 | 描述 |
---|---|
date | YYYY-MM-DD 格式的日期值 |
time | hh:mm:ss 格式的时间值 |
datetime | YYYY-MM-DD hh:mm:ss 格式的日期和时间值 |
timestamp | YYYY-MM-DD hh:mm:ss 格式的时间戳记值 |
YEAR | YYYY 或YY 格式的年值 |
再来看下包含各种几何和地理值的空间数据类型:
字符串类型 | 描述 |
---|---|
GEOMETRY | 任何类型的空间值 |
POINT | 一个点(一对X-Y坐标) |
LINESTRING | 曲线(一个或多个POINT 值) |
POLYGON | 多边形 |
GEOMETRYCOLLECTION | GEOMETRY 值的集合 |
MULTILINESTRING | LINESTRING 值的集合 |
MULTIPOINT | POINT 值的集合 |
MULTIPOLYGON | POLYGON 值的集合 |
最后就是mysql在5.7.8
版本之后就支持原生的json数据类型,可以更有效地存储和管理JSON文档。
好啦,本次记录就到这里了。
如果感觉不错的话,请多多点赞支持哦。。。