MySQL数据类型

有不足还请指教

整数类型:
M是字符数

类型字节长度范围返回值列类型名返回值列类名
BIT(1)10、1BITjava.lang.Boolean
BIT(M>1)1无符号[0,255],有符号[-128,127]BITbyte[]
TINYINT1无符号[0,255],有符号[-128,127]TINYINT默认设置TINYINT(1),java.lang.Boolean;否则,java.lang.Integer
SMALLINT[(M)]2无符号[0,65535],有符号[-32768,32767]SMALLINTjava.lang.Integer
MEDIUMINT[(M)]3无符号[0,224-1],有符号[-223,223-1]MEDIUMINTjava.lang.Integer
INT,INTEGER[(M)]4无符号[0,232-1],有符号[-231,231-1]INTEGERjava.lang.Integer;无符号则为 java.lang.Long
BIGINT[(M)]8无符号[0,264-1],有符号[-263 ,263-1]BIGINTjava.lang.Long;无符号则为java.math.BigInteger

浮点型:

类型字节长度范围返回值列类型名返回值列类名
FLOAT,REAL[(M,D)]4 -> 32bit : 1bit(符号位) 8bits(指数位) 23bits(尾数位)D是小数位,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。精度只有6(~7)位。FLOATjava.lang.Float
DOUBLE[(M,D)]8 -> 64bit :1bit(符号位) 11bits(指数位) 52bits(尾数位)M字符数,D小数位。精度只有15(~16)位。DOUBLEjava.lang.Double

float与double的范围和精度

  1. 范围
    float和double的范围是由指数的位数来决定的。
    float的指数位有8位,而double的指数位有11位,分布如下:
    float:
    1bit(符号位) 8bits(指数位) 23bits(尾数位)
    double:
    1bit(符号位) 11bits(指数位) 52bits(尾数位)
    于是,float的指数范围为-127~ +128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。
    其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
    float的范围为-2128 ~ +2128,也即-3.40E+38 ~ +3.40E+38;double的范围为-21024 ~ +21024,也即-1.79E+308 ~ +1.79E+308。

  2. 精度
    float和double的精度是由尾数的位数来决定的。
    浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
    float:2^23 = 8388608,一共7位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字
    double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

实点型

类型字节长度范围返回值列类型名返回值列类名
DECIMAL,NUMERIC[(M[,D])]M+2在这里插入图片描述DECIMALjava.math.BigDecimal

字符串
M是字符数

类型字节长度范围返回值列类型名返回值列类名
CHAR(M)M定长字符串CHARjava.lang.String (除非列字符集是BINARY, 返回byte[])
VARCHAR(M)M变长字符串,要求M<=255VARCHARjava.lang.String (除非列字符集是BINARY, 返回byte[])
ENUM(‘value1’,‘value2’,…)1或2最多28个值CHARjava.lang.String
SET(‘value1’,‘value2’,…)1、2、4或8最多64个成员CHARjava.lang.String
BINARY(M)M+4BINARYbyte[]
VARBINARY(M)M+4VARBINARYbyte[]

文本

类型字节长度范围返回值列类型名返回值列类名
TINYTEXTMax:255大小写不敏感VARCHARjava.lang.String
TEXTMax:64KVARCHARjava.lang.String
MEDIUMTEXTMax:16MVARCHARjava.lang.String
LONGTEXTMax:4GVARCHARjava.lang.String

日期时间
M是字符数
参考:https://www.cnblogs.com/wlzjdm/p/6953398.html

类型字节长度范围返回值列类型名返回值列类名
YEAR[(2|4)]11901-2155YEAR默认java.sql.Date,如果设置yearIsDateType 为false,返回java.sql.Short
DATE31001-1-1/9999-12-31DATEjava.sql.Date
TIME3838:59:59/838:59:59TIMEjava.sql.Time
DATETIME81001-1-1 00:00:00/9999-12-31 23:59:59DATETIMEjava.sql.Timestamp
TIMESTAMP[(M)]41970-01-01 00:00:00/2037 某时TIMESTAMPjava.sql.Timestamp

BLOB (binary large object)

二进制大对象,是一个可以存储二进制文件的容器。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
https://www.cnblogs.com/vanishfan/p/3339087.html
myql数据库实现图片存储和读取:https://blog.csdn.net/qq_37470552/article/details/78183462

类型字节长度范围返回值列类型名返回值列类名
TINYBLOBMax:255大小写不敏感TINYBLOBbyte[]
BLOBMax:64KBLOBbyte[]
MEDIUMBLOBMax:16MMEDIUMBLOBbyte[]
LONGBLOBMax:4GLONGBLOBbyte[]

地理空间数据类型(没接触过):

geometry、geometrycollection、linestring、multilinestring、point、multipoint、polygon、multipolygon
学习:
https://blog.csdn.net/wiborgite/article/details/85069833
https://blog.csdn.net/wiborgite/article/details/85076270

文章参考:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-type-conversions.html
https://www.cnblogs.com/-xlp/p/8617760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值