MySQL 数据库中的数据类型

前端之家收集整理的这篇文章主要介绍了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),其中几何体可以存储任何类型的几何数据,而其他三种只能存储对应类型的几何数据


猜你在找的MySQL相关文章