mysql中主要有三大类数据类型,分别是
数值类型:tinyint、smallint、mediumint、int、bigint、float、double、decimal、bit
**日期时间类型:**date、datetime、timestamp、time、year
**字符串类型:**char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、varbinary、binary
下面分别介绍MySQL中各种数据类型
数值类型
数值类型又分为整数类型、浮点数类型、定点数类型和位类型
整数类型
整数类型包括以下几种
数据类型 | 字节 | 无符号范围 | 有符号范围 |
---|---|---|---|
tinyint | 1 | 0~255 | -128~127 |
smallint | 2 | 0~65535 | -32768~32767 |
mediumint | 3 | 0~1677215 | -8388608~8388607 |
int | 4 | 0~4294967295 | -2147483648~2147483647 |
bigint | 8 | 0~18446744073709551615 | -9223372036854775808~9223372036854775807 |
int(n)表示指定的宽度,当数值宽度小于n位时在数字前面填满宽度,一般配合zerofill使用,如果设置了宽度限制,插入的数字大于宽度限制的值,不会对插入的数据有任何影响,还是按照类型的实际精度进行保存,默认tinyint(4)、smallint(6)、mediumint(9)、int(11),在实际工作中可以不指定宽度。
浮点数类型
浮点数类型包括以下2种
数据类型 | 字节 | 无符号范围 | 有符号范围 |
---|---|---|---|
float | 4 | 0,(1.175494351E-38,3.402823466E+38) | (-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402823466E+38) |
double | 8 | 0,(1.7976931348623157E+308,2.2250738585072014E-308) | (-1.7976931348623157E+308,-2.2250738585072014E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308) |
定点数类型
定点数类型主要有decimal
数据类型 | 字节 | 描述 |
---|---|---|
decimal(m,d) | m+2 | 最大取值范围与double相同,给定的有效取值范围由m和d决定 |
对于小数的表示,MySQL中有两种方式:浮点数和定点数,浮点数包括float(单精度)和double(双精度),定点数只有decimal。浮点数如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。
位类型
数据类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
bit(m) | 1~8 | bit(1) | bit(64) |
bit(m)用于存放多位二进制数,默认1位,使用bin()或hex()函数读取
日期时间类型
常用的日期时间类型如下表
日期时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 19700101080001 | 2038年某个时刻 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |
年月日,常用date表示
年月日时分秒,常用datetime或timestamp表示
时分秒,常用time表示
年,常用year表示
date、time、datetime默认值可以使用now()函数;timestamp默认值可以使用current_timestamp属性;datetime和timestamp都可以表示年月日时分秒,两者的区别是
timestamp支持的时间范围较小,datetime表示的范围更大
timestamp在mysql5.6.6版本之后增加了控制参数explicit_defaults_for_timestamp,如果设置为no,则timestamp需要显示指定默认值和on update current_timestamp属性;如果设置为off,则会自动设置默认值为current_timestamp和on update current_timestamp属性,并且自动设置为not null。mysql8.0.2版本后默认为on
timestamp的插入和查询都受当地时区的影响,更能反映出实际的日期。datetime只能反映插入时当地的时区
字符串类型
常用的字符串类型如下表所示:
字符串类型 | 描述 |
---|---|
char(m) | m为0~255之间的整数 |
varchar(m) | m为0~65535之间的整数,值的长度+1个字节 |
tinyblob | 0~255字节,值的长度+1个字节 |
blob | 0~65535字节,值的长度+2个字节 |
mediumblob | 0~167772150字节,值的长度+3个字节 |
longblob | 0~4294967295字节,值的长度+4个字节 |
tinytext | 0~255字节,值的长度+2个字节 |
text | 0~65535字节,值的长度+3个字节 |
mediumtext | 0~167772150字节,值的长度+3个字节 |
longtext | 0~4294967295字节,值的长度+4个字节 |
varbinary(m) | 0~m个字节的变长字节字符串,值的长度+1个字节 |
binary(m) | 0~m个字节的定长字节字符串 |
MySQL中数据类型对应Java中数据类型
数据库类型 | Java类型 |
---|---|
TINYINT | java.lang.Byte |
SMALLINT | java.lang.Short |
INTEGER | java.lang.Integer |
BIGINT | java.lang.Long |
FLOAT | java.lang.Float |
DOUBLE | java.lang.Double |
BIT | java.lang.Boolean |
CHAR | java.lang.String |
VARCHAR | java.lang.String |
DATE | java.util.Date/java.sql.Date/java.time.LocalDate |
TIME | java.sql.Time/java.time.LocalTime |
DATETIME | java.util.Date/java.time.LocalDateTime |
TIMESTAMP | java.sql.Timestamp/java.time.LocalDateTime |
CLOB | java.sql.Clob |
BLOB | java.sql.Blob |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76822.html