MySQL数据类型与Java数据类型

类型名称显示长度数据库类型JAVA类型JDBC类型索引(int)
VARCHARL+NVARCHARjava.lang.String12
CHARNCHARjava.lang.String1
BLOBL+NBLOBjava.lang.byte[]-4
TEXT65535VARCHARjava.lang.String-1
     
INTEGER4INTEGER UNSIGNEDjava.lang.Long4
TINYINT3TINYINT UNSIGNEDjava.lang.Integer-6
SMALLINT5SMALLINT UNSIGNEDjava.lang.Integer5
MEDIUMINT8MEDIUMINT UNSIGNEDjava.lang.Integer4
BIT1BITjava.lang.Boolean-7
BIGINT20BIGINT UNSIGNEDjava.math.BigInteger-5
FLOAT4+8FLOATjava.lang.Float7
DOUBLE22DOUBLEjava.lang.Double8
DECIMAL11DECIMALjava.math.BigDecimal3
BOOLEAN1同TINYINT  
     
ID11PK (INTEGER UNSIGNED)java.lang.Long4
     
DATE10DATEjava.sql.Date91
TIME8TIMEjava.sql.Time92
DATETIME19DATETIMEjava.sql.Timestamp93
TIMESTAMP19TIMESTAMPjava.sql.Timestamp93
YEAR4YEARjava.sql.Date91

     

MySQL 中常见的数据类型:

  • tinyint,int,bigint 整数类型
  • float,double,decimal 浮点类型
  • date,dateTime,time,timestamp 时间类型
  • char,varchar,text,tinytext,longtext,json 文本类型

 

int 整数型

  • tinyint 占用1个字节,取值范围-128到127,tinyint(1)用来表示boolean类型,0代表false,非0代表true
  • int占用4个字节,取值范围232,在java中会映射成Integer类型
  • bigint占用8个字节,取值范围264,在java中会映射成Long 类型
  • MySQL中我们在声明类型时,不管是int(9),bigint(9)后面带的位数9不会限制他们的存值的大小,int(1)它的存执返回也在232 之间,bigint(1)存值范围在264之间;

浮点类型

  • float(m,d) 单精度,M是总位数,D是小数点后面的位数。单精度浮点数精确到大约7位小数。
  • double(m,d) 双精度,双精度浮点数精确到大约15位小数。
  • decimal(m,d) 最大位数(M)为 DECIMAL65.最大支持小数数(D)为30.如果D省略,则默认值为0.如果M省略,则默认值为10。
  • float 与decimal 的区别就是float 不精准,可能会丢失小数位值;所以float,double 是非标准数据类型,decimal是标准类型;

字符类型

  • char 占用固定大小空间,长度范围0到255之间的任何值;
  • varchar 根据具体的字符大小占用空间,长度可以指定为0到65,535之间的值;
  • text 使用的是文本类型,存储的内容比varchar 更大;

char 与varchar的区别

  • char(4) 不管存的是'a'还是'abcd' 都占四个字节;存'a '当不满四个字节是会以空格填充;
  • varchar(4) 存的是'a' 只占一个字节,'abcd'占用四个接口,存的是'abcde'因为长度超过4,会报超过长度的错误;

日期与时间类型

  • timestamp 时间戳,占用4个字节 范围是'1970-01-01 00:00:01.000000'UTC到'2038-01-19 03:14:07.999999'UTC。 timestamp不能存储'1970-01-01 00:00:00'这个时间值,需要从01秒开始;如果在做insert或者update时,没有指定明确值,可以通过default current_timestamp 指定为当前时间,on update current_timestamp;UTC 是世界标准时间,也就是存储的时间是按时间标准时间存储的;
  • datetime 占用8个字节,时间的取值范围'1000-01-01 00:00:00.000000'到 '9999-12-31 23:59:59.999999'。范围要比timestamp广。

timestamp 与datetime的区别?

  • timestamp 占用的空间小,时间范围也小,存储的时间以世界标准时间存储的;datetime存储的是客户端时间;
  • 如:timestamp 字段存了'2019-06-05 19:36:38',datetime 存了'2019-06-05 19:36:38',如果通过set time_zone='+0:00'修改MySQL的时区,以timestamp类型存储的时间会变成'2019-06-05 11:36:38',datetime类型保存的时间不会变,与中国的时区相差8小时;
  • show variables like '%time_zone%'; 查看时区

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值