MySQL与Java JDBC数据类型对照
| MySQL数据类型 | JAVA数据类型 | JDBC TYPE |
|---|---|---|
| BIGINT | Long | BIGINT |
| TINYINT | Byte | TINYINT |
| SMALLINT | Short | SMALLINT |
| MEDIUMINT | Integer | INTEGER |
| INTEGER | Integer | INTEGER |
| INT | Integer | INTEGER |
| FLOAT | Float | REAL |
| DOUBLE | Double | DOUBLE |
| DECIMAL | BigDecimal | DECIMAL |
| NUMERIC | BigDecimal | NUMERIC |
| CHAR | String | CHAR |
| VARCHAR | String | VARCHAR |
| TINYBLOB | byte[] | BINARY |
| TINYTEXT | String | VARCHAR |
| BLOB | byte[] | BINARY |
| TEXT | String | LONGVARCHAR |
| MEDIUMBLOB | byte[] | LONGVARBINARY |
| MEDIUMTEXT | String | LONGVARCHAR |
| LONGBLOB | byte[] | LONGVARBINARY |
| LONGTEXT | String | LONGVARCHAR |
| DATE | Date | DATE |
| TIME | Date | TIME |
| YEAR | Date | DATE |
| DATETIME | Date | TIMESTAMP |
| TIMESTAMP | Date | TIMESTAMP |
文件:mysql-connector-java-8.0.11.jar
类名:com.mysql.cj.MysqlType
/**
* DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
* A packed "exact" fixed-point number. M is the total number of digits (the precision) and D is the number of digits
* after the decimal point (the scale). The decimal point and (for negative numbers) the "-" sign are not counted in M.
* If D is 0, values have no decimal point or fractional part. The maximum number of digits (M) for DECIMAL is 65.
* The maximum number of supported decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10.
*
* Protocol: FIELD_TYPE_DECIMAL = 0
* Protocol: FIELD_TYPE_NEWDECIMAL = 246
*
* These types are synonyms for DECIMAL:
* DEC[(M[,D])] [UNSIGNED] [ZEROFILL],
* NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL],
* FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
*/
DECIMAL("DECIMAL", Types.DECIMAL, BigDecimal.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 65L, "[(M[,D])] [UNSIGNED] [ZEROFILL]"),
/**
* DECIMAL[(M[,D])] UNSIGNED [ZEROFILL]
*
* @see MysqlType#DECIMAL
*/
DECIMAL_UNSIGNED("DECIMAL UNSIGNED", Types.DECIMAL, BigDecimal.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 65L, "[(M[,D])] [UNSIGNED] [ZEROFILL]"),
/**
* TINYINT[(M)] [UNSIGNED] [ZEROFILL]
* A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255.
*
* Protocol: FIELD_TYPE_TINY = 1
*/
TINYINT("TINYINT", Types.TINYINT, Integer.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 3L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* TINYINT[(M)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#TINYINT
*/
TINYINT_UNSIGNED("TINYINT UNSIGNED", Types.TINYINT, Integer.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 3L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* BOOL, BOOLEAN
* These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true
*
* BOOLEAN is converted to TINYINT(1) during DDL execution i.e. it has the same precision=3. Thus we have to
* look at full data type name and convert TINYINT to BOOLEAN (or BIT) if it has "(1)" length specification.
*
* Protocol: FIELD_TYPE_TINY = 1
*/
BOOLEAN("BOOLEAN", Types.BOOLEAN, Boolean.class, 0, MysqlType.IS_NOT_DECIMAL, 3L, ""),
/**
* SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
* A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535.
*
* Protocol: FIELD_TYPE_SHORT = 2
*/
SMALLINT("SMALLINT", Types.SMALLINT, Integer.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 5L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* SMALLINT[(M)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#SMALLINT
*/
SMALLINT_UNSIGNED("SMALLINT UNSIGNED", Types.SMALLINT, Integer.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 5L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* INT[(M)] [UNSIGNED] [ZEROFILL]
* A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.
*
* Protocol: FIELD_TYPE_LONG = 3
*
* INTEGER[(M)] [UNSIGNED] [ZEROFILL] is a synonym for INT.
*/
INT("INT", Types.INTEGER, Integer.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 10L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* INT[(M)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#INT
*/
INT_UNSIGNED("INT UNSIGNED", Types.INTEGER, Long.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 10L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
* A small (single-precision) floating-point number. Permissible values are -3.402823466E+38 to -1.175494351E-38, 0,
* and 1.175494351E-38 to 3.402823466E+38. These are the theoretical limits, based on the IEEE standard. The actual
* range might be slightly smaller depending on your hardware or operating system.
*
* M is the total number of digits and D is the number of digits following the decimal point. If M and D are omitted,
* values are stored to the limits permitted by the hardware. A single-precision floating-point number is accurate to
* approximately 7 decimal places.
*
* Protocol: FIELD_TYPE_FLOAT = 4
*
* Additionally:
* FLOAT(p) [UNSIGNED] [ZEROFILL]
* A floating-point number. p represents the precision in bits, but MySQL uses this value only to determine whether
* to use FLOAT or DOUBLE for the resulting data type. If p is from 0 to 24, the data type becomes FLOAT with no M or D values.
* If p is from 25 to 53, the data type becomes DOUBLE with no M or D values. The range of the resulting column is the same as
* for the single-precision FLOAT or double-precision DOUBLE data types.
*/
FLOAT("FLOAT", Types.REAL, Float.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 12L, "[(M,D)] [UNSIGNED] [ZEROFILL]"),
/**
* FLOAT[(M,D)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#FLOAT
*/
FLOAT_UNSIGNED("FLOAT UNSIGNED", Types.REAL, Float.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 12L, "[(M,D)] [UNSIGNED] [ZEROFILL]"),
/**
* DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
* A normal-size (double-precision) floating-point number. Permissible values are -1.7976931348623157E+308 to
* -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308. These are the theoretical limits,
* based on the IEEE standard. The actual range might be slightly smaller depending on your hardware or operating system.
*
* M is the total number of digits and D is the number of digits following the decimal point. If M and D are omitted,
* values are stored to the limits permitted by the hardware. A double-precision floating-point number is accurate to
* approximately 15 decimal places.
*
* Protocol: FIELD_TYPE_DOUBLE = 5
*
* These types are synonyms for DOUBLE:
* DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL],
* REAL[(M,D)] [UNSIGNED] [ZEROFILL]. Exception: If the REAL_AS_FLOAT SQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.
*/
DOUBLE("DOUBLE", Types.DOUBLE, Double.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 22L, "[(M,D)] [UNSIGNED] [ZEROFILL]"),
/**
* DOUBLE[(M,D)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#DOUBLE
*/
DOUBLE_UNSIGNED("DOUBLE UNSIGNED", Types.DOUBLE, Double.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 22L, "[(M,D)] [UNSIGNED] [ZEROFILL]"),
/**
* FIELD_TYPE_NULL = 6
*/
NULL("NULL", Types.NULL, Object.class, 0, MysqlType.IS_NOT_DECIMAL, 0L, ""),
/**
* TIMESTAMP[(fsp)]
* A timestamp. The range is '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC.
* TIMESTAMP values are stored as the number of seconds since the epoch ('1970-01-01 00:00:00' UTC).
* A TIMESTAMP cannot represent the value '1970-01-01 00:00:00' because that is equivalent to 0 seconds
* from the epoch and the value 0 is reserved for representing '0000-00-00 00:00:00', the "zero" TIMESTAMP value.
* An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value
* of 0 signifies that there is no fractional part. If omitted, the default precision is 0.
*
* Protocol: FIELD_TYPE_TIMESTAMP = 7
*
*/
// TODO If MySQL server run with the MAXDB SQL mode enabled, TIMESTAMP is identical with DATETIME. If this mode is enabled at the time that a table is created, TIMESTAMP columns are created as DATETIME columns.
// As a result, such columns use DATETIME display format, have the same range of values, and there is no automatic initialization or updating to the current date and time
TIMESTAMP("TIMESTAMP", Types.TIMESTAMP, Timestamp.class, 0, MysqlType.IS_NOT_DECIMAL, 26L, "[(fsp)]"),
/**
* BIGINT[(M)] [UNSIGNED] [ZEROFILL]
* A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.
*
* Protocol: FIELD_TYPE_LONGLONG = 8
*
* SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
*/
BIGINT("BIGINT", Types.BIGINT, Long.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 19L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* BIGINT[(M)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#BIGINT
*/
BIGINT_UNSIGNED("BIGINT UNSIGNED", Types.BIGINT, BigInteger.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 20L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
* A medium-sized integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215.
*
* Protocol: FIELD_TYPE_INT24 = 9
*/
MEDIUMINT("MEDIUMINT", Types.INTEGER, Integer.class, MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 7L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* MEDIUMINT[(M)] UNSIGNED [ZEROFILL]
*
* @see MysqlType#MEDIUMINT
*/
MEDIUMINT_UNSIGNED("MEDIUMINT UNSIGNED", Types.INTEGER, Integer.class, MysqlType.FIELD_FLAG_UNSIGNED | MysqlType.FIELD_FLAG_ZEROFILL, MysqlType.IS_DECIMAL, 8L, "[(M)] [UNSIGNED] [ZEROFILL]"),
/**
* DATE
* A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format,
* but permits assignment of values to DATE columns using either strings or numbers.
*
* Protocol: FIELD_TYPE_DATE = 10
*/
DATE("DATE", Types.DATE, Date.class, 0, MysqlType.IS_NOT_DECIMAL, 10L, ""),
/**
* TIME[(fsp)]
* A time. The range is '-838:59:59.000000' to '838:59:59.000000'. MySQL displays TIME values in
* 'HH:MM:SS[.fraction]' format, but permits assignment of values to TIME columns using either strings or numbers.
* An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value
* of 0 signifies that there is no fractional part. If omitted, the default precision is 0.
*
* Protocol: FIELD_TYPE_TIME = 11
*/
TIME("TIME", Types.TIME, Time.class, 0, MysqlType.IS_NOT_DECIMAL, 16L, "[(fsp)]"),
/**
* DATETIME[(fsp)]
* A date and time combination. The supported range is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'.
* MySQL displays DATETIME values in 'YYYY-MM-DD HH:MM:SS[.fraction]' format, but permits assignment of values to
* DATETIME columns using either strings or numbers.
* An optional fsp value in the range from 0 to 6 may be given to specify fractional seconds precision. A value
* of 0 signifies that there is no fractional part. If omitted, the default precision is 0.
*
* Protocol: FIELD_TYPE_DATETIME = 12
*/
DATETIME("DATETIME", Types.TIMESTAMP, Timestamp.class, 0, MysqlType.IS_NOT_DECIMAL, 26L, "[(fsp)]"),
/**
* YEAR[(4)]
* A year in four-digit format. MySQL displays YEAR values in YYYY format, but permits assignment of
* values to YEAR columns using either strings or numbers. Values display as 1901 to 2155, and 0000.
* Protocol: FIELD_TYPE_YEAR = 13
*/
YEAR("YEAR", Types.DATE, Date.class, 0, MysqlType.IS_NOT_DECIMAL, 4L, "[(4)]"),
/**
* [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
* A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535.
* The effective maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among
* all columns) and the character set used. For example, utf8 characters can require up to three bytes per character,
* so a VARCHAR column that uses the utf8 character set can be declared to be a maximum of 21,844 characters.
*
* MySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number
* of bytes in the value. A VARCHAR column uses one length byte if values require no more than 255 bytes, two length
* bytes if values may require more than 255 bytes.
*
* Note
* MySQL 5.7 follows the standard SQL specification, and does not remove trailing spaces from VARCHAR values.
*
* VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the standard SQL way to define that a VARCHAR
* column should use some predefined character set. MySQL 4.1 and up uses utf8 as this predefined character set.
* NVARCHAR is shorthand for NATIONAL VARCHAR.
*
* Protocol: FIELD_TYPE_VARCHAR = 15
* Protocol: FIELD_TYPE_VAR_STRING = 253
*/
VARCHAR("VARCHAR", Types.VARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "(M) [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* VARBINARY(M)
* The VARBINARY type is similar to the VARCHAR type, but stores binary byte strings rather than nonbinary
* character strings. M represents the maximum column length in bytes.
*
* Protocol: FIELD_TYPE_VARCHAR = 15
* Protocol: FIELD_TYPE_VAR_STRING = 253
*/
VARBINARY("VARBINARY", Types.VARBINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "(M)"),
/**
* BIT[(M)]
* A bit-field type. M indicates the number of bits per value, from 1 to 64. The default is 1 if M is omitted.
* Protocol: FIELD_TYPE_BIT = 16
*/
BIT("BIT", Types.BIT, Boolean.class, 0, MysqlType.IS_DECIMAL, 1L, "[(M)]"), // TODO maybe precision=8 ?
/**
* The size of JSON documents stored in JSON columns is limited to the value of the max_allowed_packet system variable (max value 1073741824).
* (While the server manipulates a JSON value internally in memory, it can be larger; the limit applies when the server stores it.)
*
* Protocol: FIELD_TYPE_BIT = 245
*/
JSON("JSON", Types.LONGVARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 1073741824L, ""),
/**
* ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]
* An enumeration. A string object that can have only one value, chosen from the list of values 'value1',
* 'value2', ..., NULL or the special '' error value. ENUM values are represented internally as integers.
* An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
* A table can have no more than 255 unique element list definitions among its ENUM and SET columns considered as a group
*
* Protocol: FIELD_TYPE_ENUM = 247
*/
ENUM("ENUM", Types.CHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]
* A set. A string object that can have zero or more values, each of which must be chosen from the list
* of values 'value1', 'value2', ... SET values are represented internally as integers.
* A SET column can have a maximum of 64 distinct members. A table can have no more than 255 unique
* element list definitions among its ENUM and SET columns considered as a group
*
* Protocol: FIELD_TYPE_SET = 248
*/
SET("SET", Types.CHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 64L, "('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* TINYBLOB
* A BLOB column with a maximum length of 255 (28 ??? 1) bytes. Each TINYBLOB value is stored using a
* 1-byte length prefix that indicates the number of bytes in the value.
*
* Protocol:FIELD_TYPE_TINY_BLOB = 249
*/
TINYBLOB("TINYBLOB", Types.VARBINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 255L, ""),
/**
* TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
* A TEXT column with a maximum length of 255 (28 ??? 1) characters. The effective maximum length
* is less if the value contains multibyte characters. Each TINYTEXT value is stored using
* a 1-byte length prefix that indicates the number of bytes in the value.
*
* Protocol:FIELD_TYPE_TINY_BLOB = 249
*/
TINYTEXT("TINYTEXT", Types.VARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 255L, " [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* MEDIUMBLOB
* A BLOB column with a maximum length of 16,777,215 (224 ??? 1) bytes. Each MEDIUMBLOB value is stored
* using a 3-byte length prefix that indicates the number of bytes in the value.
*
* Protocol: FIELD_TYPE_MEDIUM_BLOB = 250
*/
MEDIUMBLOB("MEDIUMBLOB", Types.LONGVARBINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 16777215L, ""),
/**
* MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
* A TEXT column with a maximum length of 16,777,215 (224 ??? 1) characters. The effective maximum length
* is less if the value contains multibyte characters. Each MEDIUMTEXT value is stored using a 3-byte
* length prefix that indicates the number of bytes in the value.
*
* Protocol: FIELD_TYPE_MEDIUM_BLOB = 250
*/
MEDIUMTEXT("MEDIUMTEXT", Types.LONGVARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 16777215L, " [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* LONGBLOB
* A BLOB column with a maximum length of 4,294,967,295 or 4GB (232 ??? 1) bytes. The effective maximum length
* of LONGBLOB columns depends on the configured maximum packet size in the client/server protocol and available
* memory. Each LONGBLOB value is stored using a 4-byte length prefix that indicates the number of bytes in the value.
*
* Protocol: FIELD_TYPE_LONG_BLOB = 251
*/
LONGBLOB("LONGBLOB", Types.LONGVARBINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 4294967295L, ""),
/**
* LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
* A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 ??? 1) characters. The effective
* maximum length is less if the value contains multibyte characters. The effective maximum length
* of LONGTEXT columns also depends on the configured maximum packet size in the client/server protocol
* and available memory. Each LONGTEXT value is stored using a 4-byte length prefix that indicates
* the number of bytes in the value.
*
* Protocol: FIELD_TYPE_LONG_BLOB = 251
*/
LONGTEXT("LONGTEXT", Types.LONGVARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 4294967295L, " [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* BLOB[(M)]
* A BLOB column with a maximum length of 65,535 (216 ??? 1) bytes. Each BLOB value is stored using
* a 2-byte length prefix that indicates the number of bytes in the value.
* An optional length M can be given for this type. If this is done, MySQL creates the column as
* the smallest BLOB type large enough to hold values M bytes long.
*
* Protocol: FIELD_TYPE_BLOB = 252
*/
BLOB("BLOB", Types.LONGVARBINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "[(M)]"),
/**
* TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
* A TEXT column with a maximum length of 65,535 (216 ??? 1) characters. The effective maximum length
* is less if the value contains multibyte characters. Each TEXT value is stored using a 2-byte length
* prefix that indicates the number of bytes in the value.
* An optional length M can be given for this type. If this is done, MySQL creates the column as
* the smallest TEXT type large enough to hold values M characters long.
*
* Protocol: FIELD_TYPE_BLOB = 252
*/
TEXT("TEXT", Types.LONGVARCHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
* A fixed-length string that is always right-padded with spaces to the specified length when stored.
* M represents the column length in characters. The range of M is 0 to 255. If M is omitted, the length is 1.
* Note
* Trailing spaces are removed when CHAR values are retrieved unless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.
* CHAR is shorthand for CHARACTER. NATIONAL CHAR (or its equivalent short form, NCHAR) is the standard SQL way
* to define that a CHAR column should use some predefined character set. MySQL 4.1 and up uses utf8
* as this predefined character set.
*
* MySQL permits you to create a column of type CHAR(0). This is useful primarily when you have to be compliant
* with old applications that depend on the existence of a column but that do not actually use its value.
* CHAR(0) is also quite nice when you need a column that can take only two values: A column that is defined
* as CHAR(0) NULL occupies only one bit and can take only the values NULL and '' (the empty string).
*
* Protocol: FIELD_TYPE_STRING = 254
*/
CHAR("CHAR", Types.CHAR, String.class, 0, MysqlType.IS_NOT_DECIMAL, 255L, "[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]"),
/**
* BINARY(M)
* The BINARY type is similar to the CHAR type, but stores binary byte strings rather than nonbinary character strings.
* M represents the column length in bytes.
*
* The CHAR BYTE data type is an alias for the BINARY data type.
*
* Protocol: no concrete type on the wire TODO: really?
*/
BINARY("BINARY", Types.BINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 255L, "(M)"),
/**
* Top class for Spatial Data Types
*
* Protocol: FIELD_TYPE_GEOMETRY = 255
*/
GEOMETRY("GEOMETRY", Types.BINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 65535L, ""), // TODO check precision, it isn't well documented, only mentioned that WKB format is represented by BLOB
/**
* Fall-back type for those MySQL data types which c/J can't recognize.
* Handled the same as BLOB.
*
* Has no protocol ID.
*/
UNKNOWN("UNKNOWN", Types.OTHER, null, 0, MysqlType.IS_NOT_DECIMAL, 65535L, "");
/**
* Get MysqlType matching the full MySQL type name, for example "DECIMAL(5,3) UNSIGNED ZEROFILL".
* Distinct *_UNSIGNED type will be returned if "UNSIGNED" is present in fullMysqlTypeName.
*
* @param fullMysqlTypeName
* full MySQL type name
* @return MysqlType
*/
MySQL与Java JDBC数据类型对照的更多相关文章
- MySQL与Java常用数据类型的对应关系
一.字符串数据类型: MySQL类型名 大小 用途 对应Java类名 char 0-255 bytes 定长字符串 (姓名.性别.学号) String varchar 0-65535 bytes 变长 ...
- java mysql 数据类型对照
java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang. ...
- Java MySQL数据类型对照
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 varchar L+N VARCHAR java.lang.S ...
- 【转】Java MySQL数据类型对照
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.S ...
- MySQL和Java数据类型对应
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.S ...
- MySQL和Java数据类型对照表
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.S ...
- Java JDBC中,MySQL字段类型到JAVA类型的转换
1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射 java.sql.Types定义了常 ...
- MYSQL的Java操作器——JDBC
MYSQL的Java操作器--JDBC 在学习了Mysql之后,我们就要把Mysql和我们之前所学习的Java所结合起来 而JDBC就是这样一种工具:帮助我们使用Java语言来操作Mysql数据库 J ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- JDBC数据类型、Java数据类型、标准sql类型
本概述是从<JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference>这本书中摘引来的.JavaSoft ...
随机推荐
- 两台redhat7虚拟机配置ssh免密访问
说明 有时候为了方便搭建各种集群环境,需要配置多台虚拟机之间可以互相免密码访问.本文就介绍一下这个知识点,希望所帮助的朋友给老徐点个赞:) 两台虚拟机环境配置如下: 虚拟机1:192.168.56.1 ...
- SIP协议解析
起始行(start-line) INVITE sip:34020000001320000001@202.102.11.27:35611 SIP/2.0 请求消息的起始行包括三个参数,格式:Reques ...
- C#程序全局异常处理—WPF和Web API两种模式
C#程序的全局异常处理,网上搜下资料都是一大堆,我这里最近也是独立做一个B/S结构的小项目, 后面又增加了需求用WPF实现相同的功能,这里将我所使用的全局异常处理方式做一个简短的总结分享. Web A ...
- Java 通过属性名称读取或者设置实体的属性值
原因 项目实战中有这个需求,数据库中配置对应的实体和属性名称,在代码中通过属性名称获取实体的对应的属性值. 解决方案 工具类,下面这个工具是辅助获取属性值 import com.alibaba.fas ...
- Xilinx GTH 简介 ,CoaXpress FPGA PHY 部分
什么是GTH GTH 是Xilinx UltraScale系列FPGA上高速收发器的一种类型,本质上和其它名称如GTP, GTX等只是器件类型不同.速率有差异:GTH 最低速率在500Mbps,最高在 ...
- STM32FATFS文件系统移植
STM32FATFS文件系统移植 1. FATFS简介 FATFS文件系统是一个用于在微控制器上运行的开源文件系统,支持FAT/FATFS.NTFS.exFAT等主流文件系统,且一直保持更新.在此以F ...
- C++ mySQL数据库连接池(windows平台)
C++ MySQL数据库连接池 新手学了C++多线程,看了些资料练手写了C++数据库连接池小项目,自己的源码地址 关键技术点 MySQL数据库编程.单例模式.queue队列容器.C++11多线程编程. ...
- Java 线程通信 例子:使用俩个线程打印1-100.线程1 线程2 交替打印
1 package bytezero.threadcommunication; 2 3 /** 4 * 线程通信的例子:使用俩个线程打印1-100.线程1 线程2 交替打印 5 * 6 * 涉及到的三 ...
- 通过debug搞清楚.vue文件怎么变成.js文件
前言 我们每天写的vue代码都是写在vue文件中,但是浏览器却只认识html.css.js等文件类型.所以这个时候就需要一个工具将vue文件转换为浏览器能够认识的js文件,想必你第一时间就想到了web ...
- 【容斥、插值】P3270 [JLOI2016]成绩比较
[容斥.插值]P3270 [JLOI2016]成绩比较 题目简述 有 \(n+1\) 个人,进行 \(m\) 场考试,第 \(i\) 场考试的可能得分是 \([0,U_i]\) 之间的整数. 假设你是 ...