
摘要:在本教程中,你将学习最常用的 SQL 数据类型,包括字符类型数据类型、数值数据类型和日期时间数据类型。
在数据库中,数据表中的每一列都有一个特定的数据类型。数据类型指定列可以保存的数据类型,如字符串、数值和日期时间值。
SQL 提供了一组基本数据类型,可用于定义数据表的列。在本教程中,我们将介绍最常用的 SQL 数据类型。
字符型数据类型
字符型数据类型表示字符数据类型,包括固定长度类型和可变长度字符类型。
固定长度字符数据类型
固定长度字符数据类型用于存储固定长度的字符串。以下演示了 SQL 固定长度字符数据类型
CHARACTER (n)
Code language: SQL (Structured Query Language) (sql)
在此语法中,n
表示列可以存储的字符数。n
参数是可选的。如果你跳过它,数据库系统将默认使用 1。
因此,以下声明
CHARACTER
Code language: SQL (Structured Query Language) (sql)
等效于以下内容
CHARACTER (1)
Code language: SQL (Structured Query Language) (sql)
n 的最大值取决于数据库系统的实现。
大多数数据库系统使用 CHAR
而不是 CHARACTER
来表示固定长度字符数据类型
CHAR (n)
Code language: SQL (Structured Query Language) (sql)
以下用于定义一个具有固定长度的数据类型的列,该列最多可以存储 5 个字符
column_name CHARACTER(5)
Code language: SQL (Structured Query Language) (sql)
如果你在以上列中存储长度为 2 的字符串,那么数据库系统会将三个空格填充到该字符串中,以确保每列中的每个值都有 5 个字符的固定长度。
使用固定长度字符数据类型的示例是存储州缩写,因为所有州缩写都是两个字符,例如 CA、NY 和 TX。
可变长度字符或 VARCHAR
若要在列中存储可变长度的字符串,可以使用可变长度字符数据类型。以下显示了 SQL 可变长度字符的语法
CHARACTER VARYING (n)
Code language: SQL (Structured Query Language) (sql)
在此语法中,n 表示列可以存储的最大字符数。某些数据库系统允许你指定列可以存储的字节数。
大多数数据库系统使用 VARCHAR
来表示可变长度字符数据类型,如 MySQL 和 Microsoft SQL Server。Oracle 使用 VARCHAR2
和 VARCHAR
。
以下示例定义了一个带有 VARCHAR
数据类型的列
first_name VARCHAR(50)
Code language: SQL (Structured Query Language) (sql)
如果你在 first_name
列中存储长度为 20 的值,那么数据库系统会在不填充任何空格的情况下存储该值。
但是,如果你存储长度大于 50 的值,数据库系统可能会发出一个错误。
数值类型
数值存储在列中,类型为数字,通常称为 NUMBER
、INTEGER
、REAL
和 DECIMAL
。
以下为 SQL 数值数据类型
- BIT(n)
- BIT VARYING (n)
- DECIMAL (p,s)
- INTEGER
- SMALLINT
- BIGINT
- FLOAT(p,s)
- DOUBLE PRECISION (p,s)
- REAL(s)
数值类型
DECIMAL
数据类型用于存储数据库中的精确数值,例如货币值。
以下定义具有 DECIMAL
数据类型的列
column_name DECIMAL (p,s)
Code language: SQL (Structured Query Language) (sql)
在此语法中
- p 是表示有效数字位数的精度。
- s 是表示小数点后数字位数的标度。
p
和 s
的最大值取决于每个数据库系统的实现。
以下定义了包括小数点后 4 位数字在内的 12 位数字的薪资列
salary DECIMAL (12,4)
Code language: SQL (Structured Query Language) (sql)
薪资列可以存储值高达 99,999,999.9999
的数字
整数
整型数据类型存储整数,包括正数和负数。整数的示例为 10、0、-10 和 2010。
大多数数据库系统都使用 INT
来表示整型类型
INT
Code language: SQL (Structured Query Language) (sql)
整型数据类型的某些变体是 BIGINT
和 SMALLINT
。
浮点数据类型
浮点数据类型表示近似数值。浮点小数的精度和标度是可变长度的,且几乎没有限制。
以下是 FLOAT
数据类型的示例
FLOAT
FLOAT(10)
FLOAT(50)
Code language: SQL (Structured Query Language) (sql)
日期和时间类型
日期和时间数据类型用于存储与日期和时间相关的信息。SQL 支持以下日期和时间数据类型
- DATE
- TIME
- TIMESTAMP
DATE 数据类型
DATE
数据类型表示日期值,包括三部分:年、月和日。通常,DATE
数据类型的范围是从 0001-01-01
到 9999-12-31
。
日期值通常按以下格式指定
'YYYY-DD-MM'
Code language: SQL (Structured Query Language) (sql)
例如,以下 DATE
值是 2020 年 12 月 31 日
'2020-12-31'
Code language: SQL (Structured Query Language) (sql)
TIME 数据类型
TIME
数据类型存储表示按小时、分钟和秒表示的一天中的时间的数值。
TIME
值应按以下格式指定
'HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)
可以使用可选的分数值来存储纳秒数,例如
'10:59:30.9999'
Code language: SQL (Structured Query Language) (sql)
TIMESTAMP 数据类型
TIMESTAMP
数据类型表示时间戳值,其中包括 DATE
和 TIME
值。
TIMESTAMP
值按以下格式指定
TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)
注意日期部分和时间部分之间有一个空格分隔符。
现在,你应该对 SQL 数据类型有简要的概览,包括字符字符串数据类型、数值数据类型和日期时间数据类型。