MySQL教程 MySQL教程MySQL 连接MySQL 查看数据库MySQL 创建数据库MySQL 修改数据库MySQL 删除数据库MySQL 选择数据库MySQL 数据类型MySQL存储引擎MySQL 数据表的增删改查MySQL 表数据增删改查操作MySQL 条件子句MySQL 清空表记录MySQL 模糊查询MySQL 处理重复数据MySQL 别名MySQL 限制查询结果数量Mysql 查询结果排序MySQL 范围查询MySQL 空值查询MySQL 查询结果合拼MySQL 分组MySQL 筛选分组MySQL 表连接MySQL NULL值处理MySQL 子查询MySQL 正则表达式MySQL 视图MySQL 索引MySQL 事务MySQL 数据库备份(导出)/还原(导入)MySQL安装 MySQL Windows版下载教程MySQL windows系统安装教程MySQL windows系统简单的安装教程MySQL Linux系统安装教程MySQL Linux系统下载教程MySQL Linux系统简单的安装教程配置MySQL环境变量

MySQL 数据类型

MySQL 的数据类型有分为 5 种,分别是字符串类型、数字类型、日期时间类型、二进制类型、空间类型等。常用的是字符串类型日期时间类型数字类型

数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。例如,列中存储的为数字,则相应的数据类型应该为数值类型。在创建表时必须为每个列设置正确的数据类型和长度。

MySQL字符串类型

MySQL 中的字符串类型有 CHARVARCHARTINYTEXTTEXTMEDIUMTEXTLONGTEXTENUMSET 等。

下表中列出了 MySQL 中的字符串数据类型,括号中的M表示可以为其指定长度。

类型名称说明范围存储需求
CHAR(M)固定长度非二进制字符串0-255 字节M 字节,1<=M<=255
VARCHAR(M)变长非二进制字符串0-65535 字节L+1字节,在此,L< = M和 1<=M<=65535
TINYTEXT非常小的非二进制字符串0-255 字节L+1字节,在此,L<2^8
TEXT小的非二进制字符串0-65 535 字节L+2字节,在此,L<2^16
MEDIUMTEXT中等大小的非二进制字符串0-16 777 215 字节L+3字节,在此,L<2^24
LONGTEXT大的非二进制字符串0-4 294 967 295 字节L+4字节,在此,L<2^32
ENUM枚举类型,只能有一个枚举字符串值0-65535个1或2个字节,取决于枚举值的数目 (最大值为65535)
SET一个设置,字符串对象可以有零个或 多个SET成员0-64个1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)
注意例如,一个 VARCHAR(10) 列能保存一个最大长度为 10 个字符的字符串,实际的存储需要字符串的长度 L 加上一个字节以记录字符串的长度。对于字符 “abcd”,L 是 4,而存储要求 5 个字节。具体详情可阅读 MySQL字符串类型

MySQL数字类型

这里把数字型分为整数数据类型(精确值)和小数数据类型(精确、近似值)。

整数数据类型(精确值)

类型大小范围(有符号)范围(无符号)用途
tinyint1 Bytes(-128,127)(0,255)极小整数值
smallint2 Bytes(-32 768,32 767)(0,65 535)小整数值
mediumint3  Bytes(-8 388 608,8 388 607)(0,16 777 215)中等大小整数值
int或integer4  Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
bigint8  Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值

小数数据类型(精确、近似值)

DECIMAL类型NUMERIC 存储精确的数值数据值。当需要保持准确的精度(例如货币数据)时,可以使用这些类型。浮点数是一种近似表示小数的数据类型,适用于具有广泛范围和精度要求不太高的计算。

类型大小范围(有符号)范围(无符号)用途
FLOAT4  Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8  Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMALM+2 个字节依赖于M和D的值依赖于M和D的值小数值

MySQL日期时间类型

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。具体详情可阅读 MySQL日期时间数据类型

类型大小
( bytes)
范围格式"零"值用途
YEAR11901~2155YYYY0000
年份值
DATE31000-01-01~9999-12-31YYYY-MM-DD'0000-00-00'日期值
TIME3'-838:59:59'~'838:59:59'HH:MM:SS'00:00:00'时间值或持续时间
TIMESTAMP4

'1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss'0000-00-00 00:00:00'混合日期和时间值,时间戳
DATETIME8'1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss'0000-00-00 00:00:00'混合日期和时间值

MySQL二进制类型

MySQL 支持两类字符型数据:文本字符串和二进制字符串。二进制字符串类型有时候也直接被称为“二进制类型”。BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。具体可阅读 MySQL二进制类型

类型名称说明范围存储需求
BIT(M)位字段类型M范围(1-64)大约 (M+7)/8 字节
BINARY(M)固定长度二进制字符串M范围(0-255)M 字节
VARBINARY (M)可变长度二进制字符串M范围(0-65535)M+1 字节
TINYBLOB (M)非常小的BLOB0-255 字节L+1 字节,在此,L<2^8
BLOB (M)小 BLOB0-65535 字节L+2 字节,在此,L<2^16
MEDIUMBLOB (M)中等大小的BLOB0-16777215 字节L+3 字节,在此,L<2^24
LONGBLOB (M)非常大的BLOB0-4 294 967 295 字节L+4 字节,在此,L<2^32

MySQL空间类型

MySQL 具有与 OpenGIS 类相对应的空间数据类型。空间数据类型有GEOMETRYPOINTLINESTRINGPOLYGONMULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION

某些空间数据类型保存单个几何值:

GEOMETRY可以存储任何类型的几何值。其他单值类型(POINT、 LINESTRING和POLYGON)将其值限制为特定的几何类型。

其他空间数据类型保存值的集合: