SQL 数据类型

SQL Data Types

摘要:在本教程中,您将学习最常用的 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 同时使用 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 的最大值取决于每个数据库系统的实现。

以下定义了一个 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)

整数数据类型的一些变体是 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 数据类型有了一个简要的概述,包括字符串数据类型、数字数据类型和日期时间数据类型。

本教程是否有帮助?
© .