数据结构的定义是什么(数据结构指的是什么)
708
2022-05-30
按照官方的文档(8.0) 分析,MySQL的数据类型大概可以分为五类:数值数据类型、日期和时间数据类型、字符串数据类型、空间数据类型、JSON数据类型
1、数值数据类型
1.1、整数
MySQL支持SQL表中整数integer(int)和smallint。作为一个可扩展标准,MySQL也支持整数tinyint、mediumint和bigint。
MySQL支持的整数存储空间和范围
1.2、定点数
定点数 自变量的值范围可以表示为:DECIMAL(M,D)
m是最大位数(精度)。范围是1到65。默认值为10
d是小数点右边的位数(小数位数)。范围是0到30,并且不能大于m。默认值为0
decimal的值使用二进制格式存储,该格式将9个十进制数字打包为4个字节。每个值的整数和小数部分的存储要求分别确定。九个数字的每个倍数需要4个字节,其余的剩余数字则需要4个字节的一部分。
当decimal(65, 0)时,支持最大范围[-1065-1, 1065-1]
1.3、浮点数
浮点数有float(单精度)和double(双精度)
浮点数可以和定点数一样指定m和d,但是为了保证最大可能的可移植性,需要使用浮点数存储的代码应使用float或double precision,不规定精度或位数。
1.4、位类型
位类型(bit),它是用来存放二进制数据的,bit(1)表示存储长度为1位的二进制数据。超出存储长度会被直接截取。取值范围[bit(1), bit(64)]
2、日期和时间数据类型
日期和时间数据类型用于表示时间值date、time、datetime、timestamp和year。
timestamp自动设置为最新修改的日期和时间,定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,存放这条记录最后被修改的时间
每个时间类型有一个有效值范围和一个"零"值。
3、字符串类型
字符串数据类型char、varchar、binary、varbinary、blob、text、enum和set。
3.1、char和varchar
char(n)若存入字符数小于n,默认在后面补充空格,查询的时候再将空格去掉。所以char类型存储的字符串末尾不能有空格。
varchar的值是可变长度的字符串。长度可以指定为0到65535之间的值。有效最大长度 取决于最大行大小和所使用的字符集。
官方示例:
显示在表最后一行中的值仅在不使用严格的SQL模式 时才适用,如果启用了严格模式,则会报错。
3.2、binary和varbinary
(binary、varbinary)和(char、varchar)类似,不同的是它们存储二进制字节字符串而不是字符串。
binary(n) 若存入字符数小于n,默认在后面补充0x00,查询的时候再去掉。
3.3、text和blob
blob是一个二进制大对象,可以容纳可变数量的数据。tinyblob、blob、mediumblob和longblob这四个blob类型。仅在它们可以保存的值的最大长度上有所不同。
text的四个类型tinytext、text、mediumtext和longtext和blob的四种类型相对应。
blob值被视为二进制字符串(字节字符串)。它们具有binary字符集和排序规则,并且比较和排序基于列值中字节的数字值。
text值被视为非二进制字符串(字符字符串)。它们具有binary以外的字符集,并且根据字符集的排序规则对值进行排序和比较。
3.3、enum
enum是一个字符串对象,值是从允许输入的列表中选择的,这些值在表创建时在列规范中定义。
enum列表的最大数量为65535,每个值末尾的空格都会被删除。
enum列表有not null属性,其默认值为取值列表的第一个元素。
enum列表没有not null,则enum类型将允许插入null,并且null为默认值。
enum列表中的每个值独有一个顺序排列的编号,MySQL会存入这个编号而不是对应的值。
3.4、set
set是可以具有零个或多个值的字符串对象,这些值在表创建时在列规范中定义。
set的最大数量为64,每个值末尾的空格都会被删除。
取多个元素时,不同元素用逗号隔开。
大概可以理解为enum的多选版。
4、json数据类型
MySQL支持json定义的数据类型,该类型可有效访问json(javaScript对象表示法)文档中的数据。
自动验证存储在json列中的json文档。无效的文档会产生错误。
查询性能的提升:查询不需要遍历所有字符串才能找到数据。
json存储的数据不能是null,只能是json格式的数据
5、空间数据类型
注:没有理解,拷贝部分官方的介绍。
空间数据类型有下面几种:
GEOMETRY: 是层次结构的根类。可以存储任何类型的几何值。其他单值类型(POINT, LINESTRING和POLYGON)将其值限制为特定的几何类型。
Point:(点)指的是代表坐标空间中单个位置的几何类。
Curve: (曲线)是一种1维几何对象,通常由一系列点表示。Curve的特殊子类定义了点之间的内插类型。Curve是一种非实例化类。
LineString: 是具有点之间线性内插特性的Curve。
Surface: 是一种2维几何对象。它是一种非实例化类。其唯一的可实例化子类是Polygon。
Polygon: 是代表多边几何对象的平面Surface。它由单个外部边界以及0或多个内部边界定义,其中,每个内部边界定义为Polygon中的1个孔。
GeometryCollection: 是由1个或多个任意类几何对象构成的几何对象。
MultiPoint: 是一种由Point元素构成的几何对象集合。这些点未以任何方式连接或排序。
MultiCurve: 是一种由Curve元素构成的几何对象集合。MultiCurve是一种非实例化类。
MultiLineString: 是一种由LineString元素构成的几何对象集合。
MultiSurface: 是一种由Surface元素构成的几何对象集合。MultiSurface是一种非实例化类。其唯一的可实例化子类是MultiPolygon。
MultiPolygon: 是一种由Polygon元素构成的几何对象集合。
参考链接:MySQL的数据类型
MySQL 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。