02. 关系模型与 SQL 基础

关系代数、SQL 核心语法、窗口函数与 CTE 递归查询

1. 关系代数

关系数据库基于关系代数,核心操作:

操作SQL 对应说明
σ (选择)WHERE按条件过滤行
π (投影)SELECT选择列
⋈ (连接)JOIN表关联
∪ (并)UNION合并结果集
− (差)EXCEPT差集
ρ (重命名)AS别名

2. SQL 核心语法

-- 条件聚合
SELECT
    department,
    COUNT(*) AS total_employees,
    COUNT(CASE WHEN salary > 100000 THEN 1 END) AS high_earners,
    AVG(salary) FILTER (WHERE status = 'active') AS avg_salary
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

-- 窗口函数
SELECT
    name,
    department,
    salary,
    RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank,
    salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg,
    SUM(salary) OVER (ORDER BY hire_date) AS running_total
FROM employees;

-- CTE 递归查询(组织架构)
WITH RECURSIVE org_tree AS (
    SELECT id, name, manager_id, 0 AS level
    FROM employees WHERE manager_id IS NULL
    UNION ALL
    SELECT e.id, e.name, e.manager_id, ot.level + 1
    FROM employees e
    JOIN org_tree ot ON e.manager_id = ot.id
)
SELECT * FROM org_tree;

延伸阅读

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「database」更多文章

  1. 缓存架构演进之路:从单机 Redis 到亿级分布式多级缓存体系
  2. Redis 7.x 重大新特性与架构升级深度解析
  3. Redis 消息队列深度对比:Pub/Sub、Streams 与 Kafka/RabbitMQ 选型指南