SQL 数据库语言
Structured Query Language

SQL
数据库语言

全栈地位

SQL 是与关系型数据库交互的标准语言——如果把数据库比作电子表格,SQL 就是操作这个表格的"公式语言"。

无论 PostgreSQL、MySQL 还是 SQLite,SQL 语法基本通用。理解 SQL 是操作数据的基础。

TOPIC数据库 → 表 → SQL
STATUS数据基础
idtitlestatus
1SQL 入门指南published
2安全防护实战draft
3认证中间件详解published
author_id INTEGER
created_at TIMESTAMP
views INTEGER DEFAULT 0
FOREIGN KEY
PRIMARY KEY
01
Database & Table

数据库
与表

数据库包含多张表,每张表存储一类数据。表之间可以通过外键(Foreign Key)建立关联——这是关系型数据库的核心设计思想。

Database blog_db
├── Table users
├── id INTEGER PRIMARY KEY
├── email VARCHAR(200) UNIQUE
└── created_at TIMESTAMP
├── Table posts
├── id SERIAL PRIMARY KEY
├── title VARCHAR(200) NOT NULL
├── content TEXT NOT NULL
├── status VARCHAR(20) DEFAULT 'draft'
├── author_id INTEGER NOT NULL
└── FOREIGN KEY (author_id) REFERENCES users(id)
└── Table ...

一个数据库包含多张表,每张表存储一类数据。表中的每一列定义字段的类型每一行是一条具体的记录。表格的每一行是一条记录,每一列是一个字段。

02
CREATE & Types

创建表
与类型

CREATE TABLE 是 SQL 的 DDL(数据定义语言),用于定义表的结构。一旦创建完成,数据类型就确定了——每种类型决定了数据如何存储和查询。

schema/posts.sql
CREATE TABLE posts (
    id          SERIAL PRIMARY KEY,
    title       VARCHAR(200) NOT NULL,
    content     TEXT NOT NULL,
    slug        VARCHAR(200) UNIQUE NOT NULL,
    status      VARCHAR(20) DEFAULT0,
    views       INTEGER DEFAULT 0,
    author_id   INTEGER NOT NULL,
    created_at  TIMESTAMP DEFAULT NOW(),
    updated_at  TIMESTAMP DEFAULT NOW(),

    FOREIGN KEY (author_id) REFERENCES users(id)
);
类型
说明
示例
INTEGER
整数
42
SERIAL
自增整数
1, 2, 3, ...
VARCHAR(n)
可变长字符串(最长 n)
'hello'
TEXT
不限长度的文本
长文章内容
BOOLEAN
布尔值
TRUE / FALSE
TIMESTAMP
日期时间
'2025-03-15 10:30:00'
FLOAT
浮点数
3.14
JSONB
JSON 数据
{"key": "value"}
03
Key Insight

设计
类比

理解 SQL 不需要背语法——只需要理解一张表的结构数据类型的含义。剩下的就是查文档。

把数据库比作一个电子表格——每张表是一个 Sheet,每列是一个字段定义,每行是一条数据记录。SQL 就是操作这些表格的"公式语言":查询、筛选、排序、计算都通过 SQL 完成。

EXCEL → SQL
Excel

一个 Sheet 就是一张表,列头定义字段名,每行是一条数据

SQL

CREATE TABLE 定义表结构,INSERT 添加行,SELECT 查询行

Excel

单元格设置"数字格式"或"日期格式"限制输入类型

SQL

列定义 INTEGER、VARCHAR、TIMESTAMP 等类型约束数据格式

Excel

VLOOKUP 从另一个 Sheet 关联数据

SQL

FOREIGN KEY + JOIN 实现表间关联查询

思维模型几乎完全一致——区别在于 SQL 的表达力远超电子表格,支持复杂的多表关联、嵌套查询和聚合计算。

全栈学习
Full-Stack Learning
TOPIC: SQL 数据库语言
SECTION: 数据库与表