整數(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
時間戳(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)
UUID
UUID(Universally unique identifier),是一個128BIT的值,使用 PreparedStatement.setBytes 或 setString 去存儲值。
對應到Java類型: java.util.UUID.
例如:
UUID
數組(ARRAY)ARRAY
一組值,可以使用值列表 (1, 2) 或 PreparedStatement.setObject(.., new Object[] {..}) 存儲對象。
對應到Java類型: java.lang.Object[] (沒有任何原始類型數組被支持).
例如:
ARRAY
相關:H2數據庫函數及數據類型概述