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。

热门文章

优秀文章