前端之家收集整理的这篇文章主要介绍了
MySQL 数据库中的数据类型,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
整数类型
@H_
403_3@标准
sql 中
支持 INTEGER 和 SMALLINT 这两种类型,
MysqL 数据库除了
支持这两种类型以外,还扩展
支持了 TINYINT、MEDIUMINT 和 BIGINT
整数类型 |
字节数 |
无符号数的取值范围 |
有符号数的取值范围 |
TINYINT |
1 |
(0,255) |
(-128,127) |
SMALLINT |
2 |
(0,65535) |
(-32768,32767) |
MEDIUMINT |
3 |
(0,16777215) |
(-8388608,8388607) |
INT |
4 |
(0,4294967295) |
(-2147483648,2147483647) |
INTEGER |
4 |
(0,4294967295) |
(-2147483648,2147483647) |
BIGINT |
8 |
(0,18446744073709551615) |
(-9223372036854775808,9223372036854775807) |
浮点数类型和定点数类型
@H_
403_3@数据表中用浮点数类型和定点数类型来表示小数,浮点数类型
包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数类型就是 DECIMAL
类型 |
字节数 |
负数的取值范围 |
非负数的取值范围 |
FLOAT |
4 |
(-3.402823466E+38,-1.175494351E-38) |
0,(1.175494351E-38,3.402 823466E+38) |
DOUBLE |
4 |
(-1.7976931348623157E+308,-2.2250738585072014E-308) |
0,(2.2250738585072014E-308,1.7976931348623157 E+308) |
DECIMAL(M,D) |
M+2 |
取决于 M 和 D |
取决于 M 和 D |
@H_
403_3@FLOAT 和 DOUBLE 类型存储数据时存储的是近似值,DECIMAL 存储的是字符串,因此提供了更高的精度。在金融系统中,表示货币金额的时候会优先考虑 DECIMAL 类型;在一般的价格体系,比如购物平台的商品标价,一般用 FLOAT 类型即可
日期和时间类型
@H_
403_3@每种日期与时间类型都有一个有效范围如果插入的值超过这个范围,系统就会报错,并将零值插入到
数据库
类型 |
字节数 |
取值范围 |
零值 |
YEAR |
1 |
1901 ~ 2155 |
0000 |
DATE |
4 |
1000-01-01 ~ 9999-12-31 |
0000:00:00 |
TIME |
3 |
-838:59:59 ~ 838:59:59 |
00-00-00 |
DATETIME |
8 |
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
0000-00-00 00:00:00 |
TIMESTAMP |
4 |
19700101080001 ~ 2038011911407 |
00000000000000 |
字符串类型
1. CHAR 和 VARCHAR 类型
@H_
403_3@CHAR 类型和 VARCHAR 类型都在创建表时指定了最大长度,CHAR 类型的长度是固定的,其长度可以是 0 ~ 255 的任意值。而 VARCHAR 类型的长度是可变的,其最大值可以取 0 ~ 65535 之间的任意值,VARCHAR 类型实际占用的空间为字符串的实际长度加一,这样可以有效节约系统的空间
2. TEXT 类型
@H_
403_3@TEXT 类型是一种特殊的字符串类型,各种 TEXT 类型的区别在于允许的长度和存储空间不同
类型 |
允许的长度 |
存储空间 |
TINYTEXT |
0-255 |
值的长度+2个字节 |
TEXT |
0-65535 |
值的长度+2个字节 |
MEDIUMTEXT |
0-16772150 |
值的长度+3个字节 |
LONGTEXT |
0-4294967295 |
值的长度+4个字节 |
3. ENUM 类型
@H_
403_3@ENUM 类型又称枚举类型,在创建表时,ENUM 类型的取值范围以列表的形式指定
属性名 ENUM('值1','值2',...,'值n')
- 属性名:指字段的名称
- 值n:表示列表中的第 n 个值
@H_
403_3@ENUM 类型的值只能取列表中的某一个元素,取值列表最多能有 65535 个值。列表中的每个值独有一个顺序排列的编号,
MysqL 存入的是这个编号,而不是列表中的值
@H_
403_3@如果 ENUM 类型
加上了 NOT NULL
属性,其默认值为取值列表的第一个元素。如果不加 NOT NULL
属性,ENUM 类型将允许插入 NULL,而且 NULL 为默认值
4. SET 类型
@H_
403_3@在创建表时,SET 类型的取值范围就以列表的形式指定了
属性名 SET('值1','值n')
@H_
403_3@参数和 ENUM 一致,SET 类型的值可以取列表中的一个或多个元素,取多个元素时,不同元素之间用逗号隔开,SET 类型的值最多只能是由 64 个元素构成的组合
二进制类型
@H_
403_3@二进制型是存储二进制数据的数据类型
类型 |
取值范围 |
BINARY(M) |
字节数为M,允许长度为0~M的定长二进制字符串 |
VARBINARY (M) |
允许长度为0~M的变长二进制字符串,字节数为值的长度加1 |
BIT(M) |
M位二进制数据,M最大值为64 |
TINYBLOB |
可变长二进制数据,最多255个字节 |
BLOB |
可变长二进制数据,最多(2^16-1)个字节 |
MEDIUMBLOB |
可变长二进制数据,最多(2^24-1)个字节 |
LONGBLOB |
可变长二进制数据,最多(2^32-1)个字节 |
1. BINARY 和 VARBINARY 类型
@H_
403_3@BINARY 类型的长度是固定的,不足最长长度的空间有 '\0' 补全
@H_
403_3@VARBINARY 类型的长度是可变的,在最大范围内使用多少就分配多少
2. BIT 类型
@H_
403_3@例如,BIT(4) 就是指定数据类型为 BIT 类型,长度为 4,若存储的数据是 0 ~ 15,因为变成二进制后的 15 的值为 1111,则其长度为 4。如果插入的值为 16,其二进制数为 10000,长度为 5 超过最大长度,则插入失败
3. BLOB 类型
@H_
403_3@BLOB 用来保存数据量很大的二进制数据,如
图片等。BLOB 类型与 TEXT 类型类似,不同在于 BLOB 类型用于存储二进制数据,根据其二进制编码进行比较和排序,而 TEXT 类型是以文本模式进行比较和排序的
JSON 类型
@H_
403_3@在
MysqL 中,JSON 值是以字符串形式写入的,
MysqL 会对字符串进行解析,如果不符合 JSON 格式,那么写入将失败
名称 |
描述 |
json_array() |
创建json数组 |
json_array_append() |
数组尾部追加元素 |
json_array_insert() |
在数组的指定位置插入元素 |
json_extract() / -> / ->> |
根据条件提取文档中的数据 |
json_contains(target,candidate[,path]) |
查询文档中是否包含指定的元素 |
json_contains_path() |
查询文档中是否包含指定的路径 |
json_depth() |
json文档的深度(元素最大嵌套层数) |
json_insert() |
向json文档插入值 |
json_keys() |
提取json中的键值为json数组 |
json_length() |
json文档的长度(元素的个数) |
json_merge() / json_merge_preserve() |
将两个文档合并,保留重复键值 |
json_merge_patch() |
将两个文档合并,替换重复键值 |
json_object() |
创建json对象 |
json_pretty() |
美化json格式 |
json_quote() / json_unquote() |
加上/去掉json文档两边的双引号 |
json_remove() |
删除文档中指定位置的元素 |
json_replace() |
替换文档中指定位置的元素 |
json_search() |
返回所有符合条件的路径集合 |
json_set() |
给文档中指定位置的元素设置新值 |
json_storage_free() |
json文档更新操作后的剩余空间 |
json_storage_size() |
json文档占用的存储空间 |
json_table() |
将json文档转换为表格 |
json_type() |
json文档类型(数组/对象/标量) |
json_valid() |
json格式是否合法 |
Spatial 数据类型
@H_
403_3@Spatial 数据即空间数据,又称几何数据,表示物体的位置、形态、大小分布等各方面信息
@H_
403_3@
MysqL 包含的空间数据类型有几何体(GEOMETRY)、点(POINT)、线(LINESTRING)和多边形(POLYGON),其中几何体可以存储任何类型的几何数据,而其他三种只能存储对应类型的几何数据