Skip to content

数据类型:选择合适的类型 ​

数值类型 ​

整数 ​

类型字节范围用途
SMALLINT2-32768 ~ 32767年龄、数量
INT4-2^31 ~ 2^31-1通用整数
BIGINT8-2^63 ~ 2^63-1大数值
sql
CREATE TABLE products (
    id INT PRIMARY KEY,
    stock SMALLINT,
    views BIGINT
);

自增主键 ​

sql
-- PostgreSQL
id SERIAL PRIMARY KEY  -- INT 自增

-- MySQL
id INT AUTO_INCREMENT PRIMARY KEY

小数 ​

sql
-- 精确小数(金额)
price DECIMAL(10, 2)  -- 10 位数字,2 位小数

-- 浮点数(科学计算)
measurement FLOAT
measurement DOUBLE PRECISION

字符串类型 ​

CHAR vs VARCHAR ​

sql
-- CHAR:定长,不足填充空格
code CHAR(5)  -- 'ABC  '

-- VARCHAR:变长,节省空间
name VARCHAR(100)  -- 'ABC'

TEXT ​

sql
-- 长文本
description TEXT  -- 无长度限制

日期时间类型 ​

sql
-- 日期
birth_date DATE  -- '2000-01-15'

-- 时间
work_time TIME  -- '09:30:00'

-- 日期时间
created_at TIMESTAMP  -- '2026-01-15 09:30:00'

-- 带时区
created_at TIMESTAMPTZ  -- PostgreSQL

布尔类型 ​

sql
is_active BOOLEAN  -- TRUE / FALSE / NULL

JSON 类型 ​

sql
-- PostgreSQL
metadata JSONB  -- 二进制 JSON,支持索引

-- MySQL
metadata JSON

数组类型(PostgreSQL) ​

sql
tags TEXT[]  -- 字符串数组
CREATE TABLE articles (
    id INT,
    tags TEXT[]
);
INSERT INTO articles VALUES (1, ARRAY['sql', 'database']);

数据类型选择建议 ​

场景推荐类型原因
主键INT/BIGINT SERIAL自增,高效
金额DECIMAL(10,2)精确
邮箱VARCHAR(255)变长
状态VARCHAR(20) 或 ENUM节省空间
文章内容TEXT无长度限制
创建时间TIMESTAMP精确到秒

练习 ​

  1. 创建表使用不同数值类型
  2. 对比 CHAR 和 VARCHAR
  3. 使用 DECIMAL 存储金额
  4. 使用 TIMESTAMP 存储时间
  5. 使用 JSONB 存储元数据(PostgreSQL)
  6. 使用数组类型(PostgreSQL)
  7. 选择合适的数据类型设计用户表
  8. 选择合适的数据类型设计订单表

完成练习后,打开本章答案页核对。

下一步 ​

下一节学习约束:如何使用约束保证数据完整性。

回到第七章概览 · 返回SQL 学习路线

用心记录每一步成长