Mysql数据类型

MySQL数据类型
1、整型
Java:byte,short,int,long
mysql:
tinyint byte 1个字节 -128~127, unsigned 0~255
smallint short 2个字节
mediumint 3个字节
int 4个字节
bigint long 8个字节

例如:
id int(8) 等价于 int(11)

int(M):这个M是指宽度,如果单独使用(M)是没有意义,必须结合zerofill unsigned

id int(8) zerofill unsigned: 1 ->00000001

2、浮点型
Java:float,double
mysql:float,double

mysql中的float和double可以指定宽度和精度
double(M,D),例如:double(5,2) 存储范围是-999.99~999.99
M是一共有几位,D表示小数点后有几位
double(M,D) unsigned ,例如:double(5,2) unsigned 存储范围:0~999.99

3、定点型
Java:BigDecimal,BigInteger
mysql:DECIMAL和NUMERIC 都是可以表示小数

4、日期时间类型
Java:java.sql.Date,java.sql.Time,java.sql.Timestamp
mysql:date,time,timestamp,datetime,year
date:日期
time:时间
timestamp,datetime:日期加时间
year:只有年份

timestamp,datetime:
timestamp底层是使用毫秒表示,可以区分时区的(同一个毫秒值,在不同的时区,显示的结果是适用当前时区)
范围:1970 ... ~ 2038....
datetime是日期和时分秒表示,不区分时区,什么值就是什么值
范围:1000....~ 9999....

5、字符串类型
Java中分为字符类型char和字符串类型String
Mysql没有字符类型,都是字符串类型
char:也是字符串类型
varchar:也是字符串类型,如果是varchar,使用时,必须指定varchar(M)
text:也是字符串类型

char或char(1)表示存1个字符,如果char(M)存储M个字符
char和varchar的区别:
char一个是定长字符串,例如:char(8),'尚' 用'u0000'补全8位,char的读写速度快
varchar一个是变长字符串 ,例如:varchar(8),'尚' 实际占尚这个字和这个字的字节数,varchar读写速度慢,节省空间
例如是UTF-8 占3个字节 + 1个字节(存3这个数字)


6、其他类型
xxxbit
xxxblob:二进制类型 可以存储二维码,小头像
枚举类型:预定义几个值,从中选一个
集合类型:预定义几个值,从中选多个

7、特殊值:null
在Java中,只有引用数据类型才能赋值为null
要判断null值, if(变量 == null) 或 if(变量 !=null)
null值不能用来计算,用来计算是要报错
在MySQL中,所有类型都可以赋值为null
要判断null值, is null 或 is not null
null值用来计算不会报错,但是结果都是null

原文地址:https://www.cnblogs.com/hongfeng2019/p/11750224.html