目录

  1. SQL 数据类型简介
  2. 常见的 SQL 数据类型
    1. 数字类型
    2. 字符串类型
    3. 日期和时间类型
    4. 二进制类型
  3. 数据类型在不同数据库系统中的差异
  4. 参考资料

SQL 数据类型简介

在 SQL 中,数据类型定义了列中可以存储的数据种类。每种数据类型都对数据的存储和操作方式有不同的要求。不同的数据库管理系统(DBMS)可能提供不同的 SQL 数据类型,但大多数数据库系统遵循相似的基础数据类型。

数据类型的分类

SQL 数据类型通常可以分为以下几类:

  1. 数字类型:用于存储整数、浮动点数等数字。
  2. 字符串类型:用于存储字符数据,如文本、字母和数字组合。
  3. 日期和时间类型:用于存储时间、日期及其组合。
  4. 二进制类型:用于存储二进制数据,如图像、文件等。

常见的 SQL 数据类型

1. 数字类型

数字类型用于存储数值数据,通常分为整数类型和浮点数类型。

(1) 整数类型

  • INTINTEGER:存储标准整数。
    • 范围:-2,147,483,648 到 2,147,483,647(取决于数据库实现)
  • SMALLINT:存储较小的整数。
    • 范围:-32,768 到 32,767
  • TINYINT:存储非常小的整数。
    • 范围:-128 到 127
  • BIGINT:存储较大的整数。
    • 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

(2) 浮点数类型

  • FLOAT:存储单精度浮点数。
    • 范围:大约 -3.4E+38 到 3.4E+38
  • DOUBLEDOUBLE PRECISION:存储双精度浮点数。
    • 范围:大约 -1.7E+308 到 1.7E+308
  • DECIMALNUMERIC:存储高精度数值(特别用于财务计算)。
    • 定义时可以指定精度和小数位数,如 DECIMAL(10,2) 表示最多有 10 位数,其中 2 位是小数部分。

示例

CREATE TABLE products (
  product_id INT,
  price DECIMAL(10, 2)
);

2. 字符串类型

字符串类型用于存储文本数据。常见的字符串类型包括定长和变长字符类型。

(1) 定长字符串类型

  • CHAR(n):存储定长字符串,长度为 n
    • 如果存储的字符串长度不足 n,则会自动填充空格。
    • 范围:0 到 255 个字符(取决于数据库实现)

(2) 变长字符串类型

  • VARCHAR(n):存储变长字符串,最大长度为 n
    • CHAR 不同,VARCHAR 仅存储实际的字符长度。
    • 范围:0 到 65,535 个字符(具体长度取决于数据库)

(3) 文本类型

  • TEXT:用于存储较长的文本,适用于不确定长度的字符串数据。
    • 范围:可以存储更大文本数据,通常限制为 2GB 或更多(具体限制取决于数据库)

示例

CREATE TABLE employees (
  employee_id INT,
  name VARCHAR(100),
  biography TEXT
);

3. 日期和时间类型

日期和时间类型用于存储有关时间的信息。这些类型包括:

  • DATE:存储日期,格式为 YYYY-MM-DD
  • TIME:存储时间,格式为 HH:MM:SS
  • DATETIMETIMESTAMP:存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS
  • YEAR:存储年份。

示例

CREATE TABLE events (
  event_id INT,
  event_name VARCHAR(100),
  event_date DATETIME
);

4. 二进制类型

二进制类型用于存储二进制数据,如文件、图像等。这些类型通常用于存储数据,如 BLOB(大对象)和二进制字符串。

  • BINARY(n):存储定长二进制数据。
  • VARBINARY(n):存储变长二进制数据。
  • BLOB:存储大二进制对象,通常用于存储文件、图像等。

示例

CREATE TABLE files (
  file_id INT,
  file_data BLOB
);


数据类型在不同数据库系统中的差异

不同的数据库系统可能对 SQL 数据类型有不同的实现或扩展。以下是一些流行数据库系统中的数据类型实现差异:

1. MySQL

MySQL 支持多种标准 SQL 数据类型,并提供了一些额外的扩展,如 TINYINTTEXTBLOB。它还允许开发者使用 ENUMSET 类型来处理具有预定义值的数据。

2. PostgreSQL

PostgreSQL 支持许多标准 SQL 数据类型,并提供了额外的类型如 JSONUUID。它还具有强大的类型系统,可以定义自定义类型和复合类型。

3. SQL Server

SQL Server 使用类似标准 SQL 的数据类型,但它还支持特定的类型,如 DATETIME2MONEY。SQL Server 还支持对 VARCHAR 类型进行指定长度限制。

4. Oracle

Oracle 数据库提供的标准数据类型与 SQL Server 和 MySQL 类似,但它有一些自己的实现,特别是在处理日期和时间数据类型方面,如 DATETIMESTAMP


参考资料