Oracle、MySQL、PostgreSQL 数据类型对比转换
Oracle、MySQL 和 PostgreSQL 是三种广泛使用的数据库管理系统,它们各自支持不同的数据类型。在实际应用中,开发者经常需要在这几种数据库之间进行数据迁移或在应用程序中使用不同类型的数据库。因此,理解这些数据库的数据类型以及如何将它们与Java数据类型相互转换是非常重要的。
数据类型对比
以下是一些常用的数据类型在 Oracle、MySQL 和 PostgreSQL 之间的比较:
整型
- Oracle:
NUMBER,INTEGER,SMALLINT - MySQL:
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT - PostgreSQL:
SMALLINT,INTEGER,BIGINT
- Oracle:
浮点型/定点数
- Oracle:
FLOAT,REAL,BINARY_FLOAT,BINARY_DOUBLE,NUMBER(p,s) - MySQL:
FLOAT,DOUBLE,DECIMAL - PostgreSQL:
REAL,DOUBLE PRECISION,NUMERIC,DECIMAL
- Oracle:
字符型
- Oracle:
CHAR,VARCHAR2,NCHAR,NVARCHAR2 - MySQL:
CHAR,VARCHAR,TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT - PostgreSQL:
CHAR,VARCHAR,TEXT
- Oracle:
日期和时间
- Oracle:
DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE - MySQL:
DATE,TIME,DATETIME,TIMESTAMP - PostgreSQL:
DATE,TIME,TIMESTAMP,TIMESTAMPTZ
- Oracle:
布尔型
- Oracle: 没有专门的布尔类型,通常使用
NUMBER(1)或CHAR(1) - MySQL:
BOOLEAN(实际上是TINYINT(1)) - PostgreSQL:
BOOLEAN
- Oracle: 没有专门的布尔类型,通常使用
二进制数据
- Oracle:
BLOB,RAW - MySQL:
BLOB,TINYBLOB,MEDIUMBLOB,LONGBLOB - PostgreSQL:
BYTEA
- Oracle:
与 Java 数据类型的关系
在 Java 中,JDBC (Java Database Connectivity) 提供了标准接口来连接关系型数据库,并且提供了相应的 Java 类型来表示 SQL 数据类型。以下是常见的 SQL 数据类型到 Java 类型的映射:
整型
java.lang.Integer或int对应于 SQL 的INTEGERjava.lang.Long或long对应于 SQL 的BIGINTjava.lang.Short或short对应于 SQL 的SMALLINT
浮点型/定点数
java.lang.Float或float对应于 SQL 的FLOATjava.lang.Double或double对应于 SQL 的DOUBLE或REALjava.math.BigDecimal对应于 SQL 的DECIMAL或NUMBER
字符串
java.lang.String对应于 SQL 的VARCHAR,CHAR,TEXT等
日期和时间
java.sql.Date对应于 SQL 的DATEjava.sql.Time对应于 SQL 的TIMEjava.sql.Timestamp对应于 SQL 的TIMESTAMP
布尔值
boolean对应于 SQL 的BOOLEAN
二进制数据
byte[]对应于 SQL 的BLOB,RAW,BYTEA等
在实际编程时,你需要根据具体使用的数据库系统选择合适的 JDBC 驱动,并通过 PreparedStatement 和 ResultSet 来处理数据的读写操作。当从数据库获取数据时,通常会调用 ResultSet 的相应方法(如 getInt, getString, getTimestamp 等)将数据转换成对应的 Java 类型;反之,在向数据库插入数据时,则是通过 PreparedStatement 的相应方法(如 setInt, setString, setTimestamp 等)设置参数值。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 思学!
评论
GiscusGitalk







