
摘要:在本教程中,您将学习最常用的 SQL 数据类型,包括字符串数据类型、数字数据类型和日期时间数据类型。
在数据库中,表的每一列都有一个特定的数据类型。数据类型指定了该列可以保存的数据种类,例如字符串、数值和日期时间值。
SQL 提供了一组基本的数据类型,您可以使用它们来定义表的列。在本教程中,我们将介绍最常用的 SQL 数据类型。
字符串数据类型 #
字符串数据类型表示字符数据,包括定长和变长字符类型。
定长字符串数据类型 #
定长字符串数据类型用于存储固定长度的字符串。以下是 SQL 定长字符串数据类型的说明:
CHARACTER (n)Code language: SQL (Structured Query Language) (sql)在此语法中,n 表示该列可以存储的字符数。n 参数是可选的。如果省略它,数据库系统默认使用 1。
所以下面的声明:
CHARACTERCode 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)以下定义了一个定长字符串数据类型的列,该列最多可以存储五个字符:
column_name CHARACTER(5)Code language: SQL (Structured Query Language) (sql)如果您在上面的列中存储一个长度为 2 的字符串,那么数据库系统将向该字符串填充三个空格,以确保列中的每个值都具有固定的五个字符的长度。
使用定长字符串数据类型的一个例子是存储州的缩写,因为所有州的缩写都是两个字符,例如 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 的最大值取决于每个数据库系统的实现。
以下定义了一个 salary (薪水) 列,总位数为 12 位,其中包括小数点后 4 位:
salary DECIMAL (12,4)
Code language: SQL (Structured Query Language) (sql)salary 列可以存储最大为 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 数据类型有了一个简要的概述,包括字符串数据类型、数字数据类型和日期时间数据类型。