SQL 数据类型
数据类型用于表示可以存储在数据库表中的数据的性质。例如,在表的特定列中,如果我们要存储字符串类型的数据,那么我们必须声明该列的字符串数据类型。
每个数据库的数据类型主要分为三类。
一、MySQL 数据类型
MySQL字符串类型
MySQL 数据库中使用的数据类型列表。这是基于 MySQL 8.0 的。
数据类型 |
说明 |
CHAR(Size) |
用于指定一个固定长度的字符串,可以包含数字、字母和特殊字符。它的大小可以是 0 到 255 个字符。默认值为 1。 |
VARCHAR(Size) |
用于指定可以包含数字、字母和特殊字符的可变长度字符串。它的大小可以是 0 到 65535 个字符。 |
BINARY(Size) |
等于 CHAR() 但存储二进制字节字符串。它的 size 参数以字节为单位指定列长度。默认值为 1。 |
VARBINARY(Size) |
等于 VARCHAR() 但存储二进制字节字符串。它的 size 参数指定最大列长度(以字节为单位)。 |
TEXT(Size) |
包含一个最大长度为 255 个字符的字符串。 |
TINYTEXT |
包含一个最大长度为 255 个字符的字符串。 |
MEDIUMTEXT |
包含一个最大长度为 16,777,215 的字符串。 |
LONGTEXT |
包含一个最大长度为 4,294,967,295 个字符的字符串。 |
ENUM(val1, val2, val3,...) |
当字符串对象只有一个值时使用它,该值是从可能值列表中选择的。它在一个 ENUM 列表中包含 65535 个值。如果您插入一个不在列表中的值,则会插入一个空白值。 |
SET( val1,val2,val3,....) |
用于指定一个可以有 0 个或多个值的字符串,从可能的值列表中选择。在 SET 列表中一次最多可以列出 64 个值。 |
BLOB(size) |
用于 BLOB(二进制大对象)。它最多可容纳 65,535 个字节。 |
MySQL数值类型
数据类型 |
说明 |
BIT(Size) |
用于位值类型。每个值的位数以大小指定。它的大小可以是 1 到 64。默认值为 1。 |
INT(size) |
用于整数值。其有符号范围从 -2147483648 到 2147483647 不等,无符号范围从 0 到 4294967295 不等。 size 参数指定最大显示宽度为 255。 |
INTEGER(size) |
等于 INT(大小)。 |
FLOAT(size, d) |
用于指定浮点数。它的 size 参数指定总位数。小数点后的位数由d参数指定。 |
FLOAT(p) |
用于指定浮点数。MySQL 使用 p 参数来确定是使用 FLOAT 还是 DOUBLE。如果 p 在 0 到 24 之间,则数据类型变为 FLOAT()。如果 p 从 25 到 53,则数据类型变为 DOUBLE()。 |
DOUBLE(size, d) |
这是一个正常大小的浮点数。它的 size 参数指定总位数。小数点后的位数由 d 参数指定。 |
DECIMAL(size, d) |
用于指定一个定点数。它的 size 参数指定总位数。小数参数后的位数由d参数指定。size 的最大值为 65,默认值为 10。d 的最大值为30,默认值为 0。 |
DEC(size, d) |
等于 DECIMAL(size, d)。 |
BOOL |
用于指定布尔值 true 和 false。零被认为是假的,非零值被认为是真。 |
MySQL日期和时间类型
数据类型 |
说明 |
DATE |
用于指定日期格式 YYYY-MM-DD。它支持的范围是从“1000-01-01”到“9999-12-31”。 |
DATETIME(fsp) |
用于指定日期和时间组合。其格式为 YYYY-MM-DD hh:mm:ss。它支持的范围是从 '1000-01-01 00:00:00' 到 9999-12-31 23:59:59'。 |
TIMESTAMP(fsp) |
用于指定时间戳。它的值存储为自 Unix 纪元 ('1970-01-01 00:00:00' UTC) 以来的秒数。其格式为 YYYY-MM-DD hh:mm:ss。它支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC。 |
TIME(fsp) |
用于指定时间格式。其格式为 hh:mm:ss。它支持的范围是从 '-838:59:59' 到 '838:59:59' |
YEAR |
用于以四位数格式指定年份。允许的值采用从 1901 到 2155 和 0000 的四位数格式。 |
二、SQL Server数据类型
SQL Server字符串类型
数据类型 |
说明 |
char(n) |
它是一种固定宽度的字符串数据类型。其大小最多可达 8000 个字符。 |
varchar(n) |
它是一种可变宽度的字符串数据类型。其大小最多可达 8000 个字符。 |
varchar(max) |
它是一种可变宽度的字符串数据类型。其大小最多可达 1,073,741,824 个字符。 |
text |
它是一种可变宽度的字符串数据类型。它的大小可以达到 2GB 的文本数据。 |
nchar |
它是一种固定宽度的 Unicode 字符串数据类型。其大小最多可达 4000 个字符。 |
nvarchar |
它是一种可变宽度的 Unicode 字符串数据类型。其大小最多可达 4000 个字符。 |
binary(n) |
它是一种可变宽度的 Unicode 字符串数据类型。它的大小可以达到 2GB 的文本数据。 |
binary(n) |
它是一个固定宽度的二进制字符串数据类型。它的大小可以达到 8000 字节。 |
varbinary |
它是一种可变宽度的二进制字符串数据类型。它的大小可以达到 8000 字节。 |
image |
它也是一个可变宽度的二进制字符串数据类型。它的大小可以达到 2GB。 |
SQL Server数值类型
数据类型 |
说明 |
bit |
它是一个整数,可以是 0、1 或 null。 |
tinyint |
它允许从 0 到 255 的整数。 |
Smallint |
它允许 -32,768 和 32,767 之间的整数。 |
Int |
它允许 -2,147,483,648 和 2,147,483,647 之间的整数。 |
bigint |
它允许 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的整数。 |
float(n) |
用于指定从 -1.79E+308 到 1.79E+308 的浮点精度数数据。n 参数指示该字段应保存 4 字节还是 8 字节。n 的默认值为 53。 |
real |
它是从 -3.40E+38 到 3.40E+38 的浮点精度数数据。 |
money |
用于指定从 -922,337,233,685,477.5808 到 922,337,203,685,477.5807 的货币数据。 |
SQL Server日期和时间类型
数据类型 |
说明 |
datetime |
它用于指定日期和时间组合。它支持从 1753 年 1 月 1 日到 9999 年 12 月 31 日的范围,精度为 3.33 毫秒。 |
datetime2 |
它用于指定日期和时间组合。它支持从 0001 年 1 月 1 日到 9999 年 12 月 31 日的范围,精度为 100 纳秒 |
date |
它仅用于存储日期。支持范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日 |
time |
它存储时间的精度仅为 100 纳秒 |
timestamp |
它在创建或修改新行时存储一个唯一编号。时间戳值基于内部时钟,并不对应于实时时间。每个表可能只包含一个时间戳变量。 |
SQL Server其他数据类型
数据类型 |
说明 |
Sql_variant |
它用于除 text、timestamp 和 ntext 之外的各种数据类型。它最多可存储 8000 字节的数据。 |
XML |
它存储 XML 格式的数据。最大 2GB。 |
cursor |
它存储对用于数据库操作的游标的引用。 |
table |
它存储结果集以供以后处理。 |
uniqueidentifier |
它存储 GUID(全局唯一标识符)。 |
三、Oracle数据类型
Oracle字符串类型
数据类型 |
说明 |
CHAR(size) |
它用于存储预定义长度内的字符数据。它最多可以存储 2000 个字节。 |
NCHAR(size) |
它用于存储预定义长度内的国家字符数据。它最多可以存储 2000 个字节。 |
VARCHAR2(size) |
它用于存储预定义长度内的可变字符串数据。它最多可以存储 4000 个字节。 |
VARCHAR(SIZE) |
它与 VARCHAR2(size) 相同。您也可以使用 VARCHAR(size),但建议使用 VARCHAR2(size) |
NVARCHAR2(size) |
它用于存储预定义长度内的 Unicode 字符串数据。我们必须指定 NVARCHAR2 数据类型的大小。它最多可以存储 4000 个字节。 |
Oracle数值类型
数据类型 |
说明 |
NUMBER(p, s) |
它包含精度 p 和尺度 s。精度 p 的范围可以从 1 到 38,标度 s 的范围可以从 -84 到 127。 |
FLOAT(p) |
它是 NUMBER 数据类型的子类型。精度 p 的范围可以从 1 到 126。 |
BINARY_FLOAT |
它用于二进制精度(32 位)。它需要 5 个字节,包括长度字节。 |
BINARY_DOUBLE |
它用于双精度二进制(64 位)。它需要 9 个字节,包括长度字节。 |
Oracle日期和时间类型
数据类型 |
说明 |
DATE |
它用于存储具有固定长度的有效日期时间格式。它的范围从公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日不等。 |
TIMESTAMP |
它用于以时间 hh:mm:ss 格式以 YYYY-MM-DD 存储有效日期。 |
Oracle大对象类型(LOB类型)
数据类型 |
说明 |
BLOB |
它用于指定非结构化二进制数据。它的范围高达 2 32 -1 字节或 4 GB。 |
BFILE |
它用于将二进制数据存储在外部文件中。它的范围高达 2 32 -1 字节或 4 GB。 |
CLOB |
它用于单字节字符数据。它的范围高达 2 32 -1 字节或 4 GB。 |
NCLOB |
它用于指定单字节或固定长度的多字节国家字符集 (NCHAR) 数据。其范围最大为 2 32 -1 字节或 4 GB。 |
RAW(size) |
它用于指定可变长度的原始二进制数据。它的范围是每行最多 2000 个字节。必须指定其最大尺寸。 |
LONG RAW |
它用于指定可变长度的原始二进制数据。它的范围高达每行 2 31 -1 字节或 2 GB。 |