SUNKAIS OS · READ ONLY

Jarvis

登录后,可以询问自己的任务、项目和记录。

登录后使用
Sun KaisPersonal Research Institute · 私人研究机构

Mathematics · Computational Science · Engineering · Personal Knowledge Systems

更多
SUNKAIS · PERSONAL OS

搜索全站功能

选择 前往

DB-04 · SOFTWARE REFERENCE / 软件速查

SQL

以 PostgreSQL 为参考方言,从 SELECT 进入过滤、连接、聚合、窗口函数、事务和数据建模;MySQL、SQLite 与 Access 的具体语法会有差异。

01查询骨架先确定行、列、过滤和顺序。02连接与聚合理解基数,防止连接后行数意外膨胀。03写入、事务与安全把修改包进可回滚的边界,并始终参数化输入。04表设计与索引用主键、外键和约束维护数据含义。VAULT代码与伪代码登录后保存纯文本资产和历史版本SUPPORT支持与排错官方资料、学习入口、社区与首轮检查
01

查询骨架

先确定行、列、过滤和顺序。

查询完整示例
SELECT id, title FROM tasks WHERE status = 'todo' ORDER BY created_at DESC;

明确列名,避免长期使用 SELECT *。

空值代码片段
WHERE due_date IS NULL

NULL 不用等号比较;这是用于 SELECT / UPDATE / DELETE 的条件片段。

分页代码片段
ORDER BY id LIMIT 50 OFFSET 0

分页必须配稳定排序;这是追加在 SELECT 后的排序分页片段。

02

连接与聚合

理解基数,防止连接后行数意外膨胀。

左连接完整示例
SELECT p.title, COUNT(t.id) FROM projects p LEFT JOIN tasks t ON t.project_id=p.id GROUP BY p.id;

保留没有任务的项目。

分组过滤代码片段
HAVING COUNT(*) >= 3

WHERE 过滤分组前的行,HAVING 过滤分组结果;这是 GROUP BY 查询片段。

窗口函数代码片段
ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY created_at)

保留明细行的同时计算组内排名;这是 SELECT 列表达式。

03

写入、事务与安全

把修改包进可回滚的边界,并始终参数化输入。

事务代码片段
BEGIN;
UPDATE tasks SET status='done' WHERE id=$1;
COMMIT;

PostgreSQL 应用代码模板;$1 需要由数据库驱动绑定,不能原样粘贴进普通 SQL 编辑器。

冲突处理代码片段
INSERT INTO tasks (id, title, status)
VALUES ($1, $2, 'todo')
ON CONFLICT (id) DO UPDATE
SET title = EXCLUDED.title;

PostgreSQL 应用代码模板;先明确唯一约束和覆盖语义,$1/$2 由驱动绑定。

检查影响行代码片段
UPDATE tasks
SET status = 'done', updated_at = CURRENT_TIMESTAMP
WHERE id = $1
RETURNING id, updated_at;

PostgreSQL 应用代码模板;$1 由驱动绑定,RETURNING 让调用端确认修改结果。

04

表设计与索引

用主键、外键和约束维护数据含义。

主外键完整示例
CREATE TABLE tasks (
  id uuid PRIMARY KEY,
  project_id uuid NOT NULL REFERENCES projects(id),
  progress numeric(5,2) CHECK (progress BETWEEN 0 AND 100)
);

PostgreSQL 示例;让数据库维护实体、引用与边界完整性。

检查约束完整示例
ALTER TABLE tasks ADD CONSTRAINT tasks_progress_range CHECK (progress BETWEEN 0 AND 100);

边界规则放到数据库最后一道防线。

索引完整示例
CREATE INDEX ON tasks (status, due_date);

围绕真实查询模式建索引,并用执行计划验证。

PRIVATE CODE VAULT / 私人代码仓库

SQL 私人代码与伪代码仓库

保存 SQL 的纯文本命令、脚本、查询、自动化片段、独立伪代码和历史版本。

TEXT ONLYRLS PRIVATENO EXECUTION
这里只归档,不运行代码。支持导入与下载纯文本源码;`.mlx`、`.xlsx`、`.accdb` 等二进制容器不会入库。密码、Token、私钥等秘密也会被拒绝,请改用环境变量。
PRIVATE SESSION REQUIRED

登录后打开你的私人仓库

游客只看到这个说明,不会收到、缓存或渲染任何私人源码。

安全登录

SUPPORT NETWORK / 支持体系

资料从哪里查,问题怎样继续推进

优先核对官方文档和版本,再带着最小复现进入社区;安装包只走产品官方入口。

FIRST RESPONSE / 首轮排查

不要盲试:保存症状、环境和最小样本

01

查询返回重复或少行

  • 先核对每张表的粒度和主键
  • 逐个加入 JOIN 并比较行数
  • 检查 INNER/LEFT 与 NULL 语义

下一步:用小样本画出关系基数,再决定去重还是修正连接条件。

02

查询速度突然变慢

  • 运行 EXPLAIN (ANALYZE, BUFFERS)
  • 核对过滤选择性与统计信息
  • 检查隐式类型转换和缺失索引

下一步:以执行计划为证据优化,不凭感觉添加大量索引。

03

写入失败或锁等待

  • 保存完整错误码和事务状态
  • 确认约束、权限与参数类型
  • 查看阻塞会话和锁顺序

下一步:先回滚失败事务,再以一致顺序缩短事务范围。

SOURCE / 官方资料

遇到版本差异,回到官方帮助确认

本站页面用于构建个人回忆路径,不替代完整产品文档。命令或界面行为与本机版本不同时,以官方说明为准。

打开 PostgreSQL SQL Tutorial(新窗口打开)