MySQL数据类型


1. 数值类型

类型大小(byte)描述取值范围(有符号)取值范围(无符号)
tinyint1小整数(-128,127)(0,255)
smallint2小整数(-32 768,32 767)(0,65 535)
mediumint3中整数(-8 388 608,8 388 607)(0,16 777 215)
int(integer)4整数(-2 147 483 648,2 147 483 647)(0,4 294 967 295)
bigint8大整数(-9 223 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)
float4浮点数(单精度)(-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浮点数(双精度)(-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)
decimalDECIMAL(M,D)
如果M>D,为M+2
否则为D+2
十进制数依赖于M和D的值小数值

整型

整型(N)包括intinyintsmallintmediumintbigint

  • N值不影响该整数类型的大小,如:int永远占4个字节
  • N表示的是显示宽度,不足的用0补足,超过的无视长度而直接显示整个数字(需要设置了unsigned zerofill(无符号补零)才有效)
    在这里插入图片描述

浮点型

浮点型*(M,D)包括floatdouble

  • D表示浮点型数据小数点之后的精度,假如超过D位则四舍五入,即1.233四舍五入为1.23,1.237四舍五入为1.24
  • M表示浮点型数据总共的位数,D=2则表示总共支持五位,即小数点前只支持三位数,所以我们并没有看到1000.23、10000.233、100000.233这三条数据的插入,因为插入都报错了
  • 当不指定M、D的时候,会按照实际的精度来处理。

定点型

定点型(M,N)包括decimal

  • float、double在db中存储的是近似值,而decimal则是以字符串形式进行保存的
  • decimal(M,D)的规则和float/double相同,但区别在于:
    • float、double在不指定M、D时默认按照实际精度来处理
    • decimal在不指定M、D时默认为decimal(10, 0)

浮点型float、double类型存在精度丢失问题,即写入数据库的数据未必是插入数据库的数据,而decimal无论写入数据中的数据是多少,都不会存在精度丢失问题。decimal类型常见于银行系统、互联网金融系统等对小数点后的数字比较敏感的系统中。

2. 日期时间类型

类型大小(byte)取值范围格式描述
year11901 ~ 2155YYYY
date41000-01-01 ~ 9999-12-31YYYY-MM-DD日期
time3-838:59:59 ~ 838:59:59HH:MM:SS时间
datetime81000-01-01 00:00:00 ~ 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS日期+时间
timestamp41970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTCYYYY-MM-DD HH:MM:SS时间戳(日期+时间)(UTC时区)

datetime

  • datetime占8个字节

  • datetime存储的时间范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

  • datetime存储的时间及返回的时间都与时区无关

    如果更换时区(服务器更换地址或者更换客户端连接时区),数据库读出的时间不会变化(错误)

timestamp

  • timestamp占4个字节

  • timestamp存储的时间范围为1970-01-01 00:00:01 ~ 2038-01-19 03:14:07(UTC时区)

  • timestamp存储的时间及返回的时间都依赖于当前时区

    如果更换时区(服务器更换地址或者更换客户端连接时区),数据库读出的时间会随时区变化(正确)

    • timestamp存储的时间:把插入的时间从当前时区转化为UTC(世界标准时间)进行存储
    • timestamp显示的时间:把存储的时间UTC(世界标准时间)转化为当前时区的时间进行返回

3. 字符串类型

类型大小(byte)描述
char0-255定长字符串
varchar0-65 535变长字符串
binary0-255二进制定长字符串
varbinary0-65 535二进制变长字符串
tinytext0-255短文本数据
text0-65 535文本数据
mediumtext0-16 777 215中文本数据
longtext0-4 294 967 295大文本数据
tinyblob0-255短文本数据(二进制形式)
blob0-65 535文本数据(二进制形式)
mediumblob0-16 777 215中文本数据(二进制形式)
longblob0-4 294 967 295大文本数据(二进制形式)

字符串

char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 char(30) 就可以存储 30 个字符。

char和varchar类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

文本字符串

有4种text类型:tinytext、text、mediumtext和longtext。对应的这4种blob类型,可存储的最大长度不同,可根据实际情况选择。

二进制字符串

binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串而不要非二进制字符串。它们包含的是字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值。

二进制大对象字符串

blob(binary large object)指二进制大对象,有4种blob类型:tinyblob、blob、mediumblob和longblob。blob是一个二进制大对象,可以容纳可变数量的数据。它们区别在于可容纳存储范围不同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值