Java面试题汇总---mysql中有那些数据类型,他们的基本特征是啥,分别对应的Java中的哪些类型

面试题分享原因


一次面试中,面试官说考我点最简单的知识点,上来问我:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT这些都是整数类型的,我就不问你他们的字节空间和范围了,你说一下他们分别对应的Java中的那些类型?
我:。。。。(汗流浃背!!!)

mysql中有那些数据类型,他们的基本特征是啥,分别对应的Java中的哪些类型?

献上表格(各位观众老爷,小弟手动编辑表格,点赞,收藏,评论,转发,有币的投个币)

 名称Java对应类型描述
数值类型整数类型tinyintjava.lang.Byte 或 java.lang.Integer
(如果需要更大的范围)
最小的整数类型
smallintjava.lang.Short 或 java.lang.Integer较小的整数类型
mediumintjava.lang.Integer 或 java.lang.Long中等大小的整数类型
int/integerjava.lang.Integer常规整数类型
bigintjava.lang.Long大整数类型
浮点数类型floatjava.lang.Float单精度浮点数
doublejava.lang.Double双精度浮点数
decimaljava.math.BigDecimal高精度定点数
字符串类型定长字符串CHAR(n)java.lang.String适用于长度固定、变化不大的短文本,
如邮政编码、电话区号等
变长字符串VARCHAR(n)java.lang.String适用于长度可变的大多数文本数据。
文本类型TEXTjava.lang.String 或 java.io.Reader/Writer
(对于大文本,可能需要流式处理)
适用于存储文章、评论等大段文本。
二进制类型BINARY(n)byte[]定长二进制数据,类似于CHAR
VARBINARY(n)byte[]可变长度二进制数据,类似于VARCHAR,
BLOBbyte[] 或 java.io.InputStream/OutputStream
(对于大二进制数据,可能需要流式处理)
适用于存储图片、文件等二进制内容
日期和时间类型 DATEjava.sql.Date存储日期,格式为'YYYY-MM-DD'。
适用于仅需记录日期的场景
TIMEjava.sql.Time存储时间,格式为'HH:MM:SS',可选微秒精度。
适用于仅需记录时间的场景
DATETIME/TIMESTAMPjava.sql.Timestamp存储日期和时间,
格式分别为'YYYY-MM-DD HH:MM:SS'
和'YYYY-MM-DD HH:MM:SS[.fraction]'。
TIMESTAMP具有时区转换功能。
适用于需要同时记录日期和时间的场景。
YEARjava.sql.Date 或 java.util.Calendar
(设置年份)
存储年份,占用1字节,格式为'YYYY'或'YY'。
适用于只需要记录年份的场景。
其他类型ENUMjava.lang.String 或 枚举类型
(如 enum Gender { MALE, FEMALE })
枚举类型,预定义一组固定值供选择。
适用于有限且固定的值集合,如性别、状态等。
SETjava.util.Set<String> 或 java.lang.String[]集合类型,预定义一组固定值,允许在单个字段中存储多个值。
适用于需要存储多个互斥标签或分类的场景
BOOLEANjava.lang.Boolean布尔类型,存储真/假值。
尽管MySQL中没有原生的BOOLEAN类型,
但常使用TINYINT(1)作为替代,0表示假,1表示真。

MySQL数据库提供了丰富多样的数据类型来满足不同的数据存储需求。以下是MySQL中主要的数据类型及其基本特征、适用场景,以及对应的Java数据类型:

1. 数值类型


a. 整数类型


TINYINT

 - 最小的整数类型,占用1字节存储空间,范围-128到127(无符号为0到255)。适用于存储非常小的整数值,如布尔值(0/1)或有限状态标识。

Java对应:java.lang.Byte 或 java.lang.Integer(如果需要更大的范围)


SMALLINT

 - 较小的整数类型,占用2字节,范围-32768到32767(无符号为0到65535)。

Java对应:java.lang.Short 或 java.lang.Integer


MEDIUMINT

 - 中等大小的整数类型,占用3字节,范围-8388608到8388607(无符号为0到16777215)。

Java对应:java.lang.Integer 或 java.lang.Long

INT/INTEGER

 - 常规整数类型,占用4字节,范围-2^31到2^31-1(无符号为0到2^32-1)。最常用的整数类型,适用于大多数整数场景。

Java对应:java.lang.Integer


BIGINT

 - 大整数类型,占用8字节,范围-2^63到2^63-1(无符号为0到2^64-1)。用于存储极大或极小范围的整数值。

Java对应:java.lang.Long


b. 浮点数类型


FLOAT

 - 单精度浮点数,占用4字节,精度较低,适用于不需要高精度计算的场合。

Java对应:java.lang.Float


DOUBLE

 - 双精度浮点数,占用8字节,精度较高,适用于科学计算、金融等领域需要较高精度的场合。

Java对应:java.lang.Double


DECIMAL

 - 高精度定点数,可定制精度和标度,适合存储货币金额等需要精确计算的数值,避免浮点数的精度问题。

Java对应:java.math.BigDecimal


2. 字符串类型


a. 定长字符串  CHAR(n) 

 - 固定长度的字符串,存储时始终占用n个字符的空间,不足部分以空格填充。适用于长度固定、变化不大的短文本,如邮政编码、电话区号等。

Java对应:java.lang.String


b. 变长字符串  VARCHAR(n)


 可变长度的字符串,仅占用实际字符长度+1或2字节(取决于字符集)的空间,节省存储。适用于长度可变的大多数文本数据。

Java对应:java.lang.String


c. 文本类型  TEXT

 - 存储大量文本数据,有多种大小限制的子类型(如TINYTEXT、MEDIUMTEXT、LONGTEXT)。适用于存储文章、评论等大段文本。

Java对应:java.lang.String 或 java.io.Reader/Writer(对于大文本,可能需要流式处理)


d. 二进制类型


BINARY(n)

 - 定长二进制数据,类似于CHAR,存储时始终占用n个字节的空间。

Java对应:byte[]


VARBINARY(n)

 - 可变长度二进制数据,类似于VARCHAR,仅占用实际字节长度+1或2字节的空间。

Java对应:byte[]


BLOB

 - 存储大量二进制数据,有多种大小限制的子类型(如TINYBLOB、MEDIUMBLOB、LONGBLOB)。适用于存储图片、文件等二进制内容。

Java对应:byte[] 或 java.io.InputStream/OutputStream(对于大二进制数据,可能需要流式处理)


3. 日期和时间类型


a. DATE

 - 存储日期,格式为'YYYY-MM-DD'。适用于仅需记录日期的场景。

Java对应:java.sql.Date


b. TIME

 - 存储时间,格式为'HH:MM:SS',可选微秒精度。适用于仅需记录时间的场景。

Java对应:java.sql.Time


c. DATETIME/TIMESTAMP

 - 存储日期和时间,格式分别为'YYYY-MM-DD HH:MM:SS'和'YYYY-MM-DD
   HH:MM:SS[.fraction]'。TIMESTAMP具有时区转换功能。适用于需要同时记录日期和时间的场景。

Java对应:java.sql.Timestamp


d. YEAR

 - 存储年份,占用1字节,格式为'YYYY'或'YY'。适用于只需要记录年份的场景。

Java对应:java.sql.Date 或 java.util.Calendar(设置年份)


4. 其他类型


a. ENUM

 - 枚举类型,预定义一组固定值供选择。适用于有限且固定的值集合,如性别、状态等。

Java对应:java.lang.String 或 枚举类型(如 enum Gender { MALE, FEMALE })


b. SET

 - 集合类型,预定义一组固定值,允许在单个字段中存储多个值。适用于需要存储多个互斥标签或分类的场景。

Java对应:java.util.Set<String> 或 java.lang.String[]


c. BOOLEAN

 - 布尔类型,存储真/假值。尽管MySQL中没有原生的BOOLEAN类型,但常使用TINYINT(1)作为替代,0表示假,1表示真。

Java对应:java.lang.Boolean

总的来说,

选择合适的MySQL数据类型取决于具体的数据特性和应用场景,同时在Java应用中使用相应的Java数据类型进行交互,以确保数据的正确存储和处理。在实际开发中,还需要考虑数据类型对存储空间、查询性能以及数据验证等方面的影响。

全网第一个编辑此内容对照表和内容整理(手动编辑),如果使用此表,请注明出处和借鉴,否则将会追究其相关责任


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值