首页 > 编程知识 正文

内存数据库h2,h2数据库 性能

时间:2023-05-03 07:30:49 阅读:226476 作者:785

由于H2是由java语言编写的,所以提供的数据类型都和java契合,下面给出数据类型列表:

一、基本的数据类型有哪些?

1、数字方面整数(INT)布尔型(BOOLEAN)微整数(TINYINT)小整数(SMALLINT)大整数(BIGINT)标识符(IDENTITY)货币数(DECIMAL)双精度实数(DOUBLE)实数(REAL)2、时间方面时间(TIME)日期(DATE)--在H2中存储为date字段类型将只有年月日时间戳(TIMESTAMP)3、字符文本方面二进制(BINARY)其他类型(OTHER)可变字符串(VARCHAR)不区分大小写可变字符串(VARCHAR_IGNORECASE)字符(CHAR)二进制大对象(BLOB)文本大对象(CLOB)通用唯一标识符(UUID)数组(ARRAY)二、具体数据类型的简介
整数(INT)INT | INTEGER | MEDIUMINT | INT4 | SIGNED值的范围为: -2147483648 到 2147483647.对应到Java类型: java.lang.Integer.例如:INT布尔型(BOOLEAN)BOOLEAN | BIT | BOOL可能的值为: TRUE 和 FALSE。对应到Java类型: java.lang.Boolean.例如:BOOLEAN微整数(TINYINT)TINYINT值的范围为: -128 到 127.对应到Java类型: java.lang.Byte.例如:TINYINT小整数(SMALLINT)SMALLINT | INT2 | YEAR值的范围为: -32768 到 32767.对应到Java类型: java.lang.Short.例如:SMALLINT大整数(BIGINT)BIGINT | INT8值的范围为: -9223372036854775808 到 9223372036854775807.对应到Java类型: java.lang.Long.例如:BIGINT标识符(IDENTITY)IDENTITY自增值,值的范围为: -9223372036854775808 到 9223372036854775807。使用的值不能再重用,即使事务回滚。对应到Java类型: java.lang.Long.例如:IDENTITY货币数(DECIMAL){ DECIMAL | NUMBER | DEC | NUMERIC } ( precisionInt [ , scaleInt ] )固定整数位和小数位。这个数据类型经常用于存储货币等类型的值。对应到Java类型: java.math.BigDecimal.例如:DECIMAL(20, 2)双精度实数(DOUBLE){ DOUBLE [ PRECISION ] | FLOAT | FLOAT4 | FLOAT8 }浮点数。不能应用到表示货币等值,因为有四舍五入的问题。对应到Java类型: java.lang.Double.例如:DOUBLE实数(REAL)REAL单精度浮点数。不能应用到表示货币等值,因为有四舍五入的问题。对应到Java类型: java.lang.Float.例如:REAL时间(TIME)TIME格式为 hh:mm:ss.对应到Java类型:java.sql.Time.例如:TIME日期(DATE)DATE格式为 yyyy-MM-dd.对应到Java类型: java.sql.Date例如:DATE 需要特别注意的是这里,我们在oracle中定义成date是可以保存时分秒的,而在H2中则不会时间戳(TIMESTAMP){ TIMESTAMP | DATETIME | SMALLDATETIME }格式为 yyyy-MM-dd hh:mm:ss[.nnnnnnnnn].对应到Java类型: java.sql.Timestamp (java.util.Date 也支持).例如:TIMESTAMP二进制(BINARY){ BINARY | VARBINARY | LONGVARBINARY | RAW | BYTEA } [ ( precisionInt ) ]表示一个字节数组。针对更长的数组,使用 BLOB 类型。最大的尺寸为 2 GB,当使用这种数据类型时,整个对象都会保存在内存中,在内存中的尺寸是一个精确的指定值,只有实际的数据会被持久化。对于大的文本数据,还是使用 BLOB 和 CLOB 更合适。对应到Java类型: byte[].例如:BINARY(1000)其他类型(OTHER)OTHER这个类型允许存储可序列化的JAVA对象。在内部,使用的是一个字节数组。序列化和反序列化只在客户端端完成。反序列化仅在 getObject 被调用时才被调用。JAVA操作因为安全的原因并不能在数据库引擎内被执行。可以使用 PreparedStatement.setObject 存储对象。对应到Java类型: java.lang.Object (或者是任何子类).例如:OTHER可变字符串(VARCHAR){ VARCHAR | LONGVARCHAR | VARCHAR2 | NVARCHAR| NVARCHAR2 | VARCHAR_CASESENSITIVE} [ ( precisionInt ) ]Unicode 字符串。使用两个单引号('') 表示一个引用。最大的长度是Integer.MAX_VALUE,字符串的实际长度是精确指定的,仅实际的数据会被持久化。当使用这种数据类型时,整个文本都会保存在内存中。更多的文本数据,使用 CLOB 更合适。对应到Java类型: java.lang.String.例如:VARCHAR(255)不区分大小写的可变字符串(VARCHAR_IGNORECASE )VARCHAR_IGNORECASE [ ( precisionInt ) ]与 VARCHAR 类型类似,只是在比较时不区分大小写。存储时是混合大小写存储的。当使用这种数据类型时,整个文本都会保存在内存中。更多的文本数据,使用 CLOB 更合适。例如:VARCHAR_IGNORECASE字符(CHAR){ CHAR | CHARACTER | NCHAR } [ ( precisionInt ) ]这个类型支持是针对其他数据库或老的应用的兼容性。与VARCHAR 的不同是尾空格将被忽略并且不会被持久化。 Unicode 字符串。使用两个单引号('') 表示一个引用。最大的长度是Integer.MAX_VALUE,字符串的实际长度是精确指定的,仅实际的数据会被持久化。当使用这种数据类型时,整个文本都会保存在内存中。更多的文本数据,使用 CLOB 更合适。对应到Java类型: java.lang.String.例如:CHAR(10)二进制大对象(BLOB){ BLOB | TINYBLOB | MEDIUMBLOB | LONGBLOB | IMAGE | OID } [ ( precisionInt ) ]类似于BINARY,但是针对的是非常大的值如文件或是图片。跟BINARY不同的是,大对象并不完全保存在内存中。使用 PreparedStatement.setBinaryStream 存储对象,详细请参见 CLOB 和 高级 / 大对象。对应到Java类型: java.sql.Blob (java.io.InputStream 也支持)。例如:BLOB文本大对象(CLOB){ CLOB | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT | NTEXT | NCLOB } [ ( precisionInt ) ]CLOB类似于 VARCHAR,但是针对的是非常大的值。与 VARCHAR不同的是,CLOB 对象并不完全保存在内存中,而是使用的流。CLOB 可以用于文档或文本,如果XML、HTML文档,文本文件、未限制尺寸的备忘录等。使用 PreparedStatement.setCharacterStream 存储对象。详细请参见 高级 / 大对象。VARCHAR 用于相对较小的文本(如200个字符以内)。小的 CLOB 值被就地存储,但是也比 VARCHAR 要大。对应到Java类型: java.sql.Clob (java.io.Reader 也支持).例如:CLOB通用唯一标识符(UUID)UUIDUUID(Universally unique identifier),是一个128BIT的值,使用 PreparedStatement.setBytes 或 setString 去存储值。对应到Java类型: java.util.UUID.例如:UUID数组(ARRAY)ARRAY一组值,可以使用值列表 (1, 2) 或 PreparedStatement.setObject(.., new Object[] {..}) 存储对象。对应到Java类型: java.lang.Object[] (没有任何原始类型数组被支持).

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。