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) DEFAULT 0,
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 的表达力远超电子表格,支持复杂的多表关联、嵌套查询和聚合计算。