SQL 数据类型

SQL Data Types

摘要:在本教程中,你将学习最常用的 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 使用 VARCHAR2VARCHAR

以下示例定义了一个带有 VARCHAR 数据类型的列

first_name VARCHAR(50)
Code language: SQL (Structured Query Language) (sql)

如果你在 first_name 列中存储长度为 20 的值,那么数据库系统会在不填充任何空格的情况下存储该值。

但是,如果你存储长度大于 50 的值,数据库系统可能会发出一个错误。

数值类型

数值存储在列中,类型为数字,通常称为 NUMBERINTEGERREALDECIMAL

以下为 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 是表示小数点后数字位数的标度。

ps 的最大值取决于每个数据库系统的实现。

以下定义了包括小数点后 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)

整型数据类型的某些变体是 BIGINTSMALLINT

浮点数据类型

浮点数据类型表示近似数值。浮点小数的精度和标度是可变长度的,且几乎没有限制。

以下是 FLOAT 数据类型的示例

FLOAT
FLOAT(10)
FLOAT(50)
Code language: SQL (Structured Query Language) (sql)

日期和时间类型

日期和时间数据类型用于存储与日期和时间相关的信息。SQL 支持以下日期和时间数据类型

  • DATE
  • TIME
  • TIMESTAMP

DATE 数据类型

DATE 数据类型表示日期值,包括三部分:年、月和日。通常,DATE 数据类型的范围是从 0001-01-019999-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 数据类型表示时间戳值,其中包括 DATETIME 值。

TIMESTAMP 值按以下格式指定

TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)

注意日期部分和时间部分之间有一个空格分隔符。

现在,你应该对 SQL 数据类型有简要的概览,包括字符字符串数据类型、数值数据类型和日期时间数据类型。

本教程是否有用?