SQL的底层逻辑学-自用

查表五步走:

-- 第1步:确定数据源(FROM + JOIN)
FROM 主表
[LEFT/RIGHT/INNER] JOIN 关联表 ON 关联条件

-- 第2步:筛选行数据(WHERE)
WHERE 基础筛选条件
  AND 业务筛选条件
  AND 时间范围条件

-- 第3步:分组聚合(GROUP BY + HAVING)
GROUP BY 分组字段

-- 第4步:选择输出字段(SELECT)
SELECT 
  原始字段,
  计算字段,
  聚合函数(字段) AS 别名

-- 第5步:排序限制(ORDER BY + LIMIT)
ORDER BY 排序字段 [ASC/DESC]
LIMIT 记录数

导表三步走:

-- 场景1:全量导表(结构+数据)
CREATE TABLE 新表 AS 
SELECT * FROM 原表;

-- 场景2:筛选导表(条件数据)
CREATE TABLE 新表 AS
SELECT 字段列表 
FROM 原表 
WHERE 筛选条件;

-- 场景3:聚合导表(汇总数据)
CREATE TABLE 汇总表 AS
SELECT 维度字段, 聚合函数(指标字段)
FROM 明细表  
GROUP BY 维度字段;

表检查四步走:

-- 1. 表结构检查
DESC 目标表;

-- 2. 数据量验证
SELECT COUNT(*) FROM 目标表;
SELECT COUNT(*) FROM 源表 WHERE 条件;

-- 3. 数据质量检查
SELECT 
  COUNT(*) as 总行数,
  COUNT(主键) as 主键非空数,
  COUNT(DISTINCT 关键字段) as 唯一值数
FROM 目标表;

-- 4. 业务逻辑验证
SELECT 关键指标 FROM 目标表 WHERE 业务条件;

CTE模板:

WITH 
数据准备 AS (
  SELECT 基础字段 FROM 原始表 WHERE 基础条件
),
业务计算 AS (
  SELECT 计算字段 FROM 数据准备 GROUP BY 分组字段
),
结果整理 AS (
  SELECT 最终字段 FROM 业务计算 WHERE 最终条件
)
SELECT * FROM 结果整理 ORDER BY 排序字段;

CTE就是嵌套语句直接在外定义表的版本,更好看,逻辑更通顺而已。

关联类型处理:

from的A和join的B

保留A全部记录           → LEFT JOIN
只要两表交集记录           → INNER JOIN  
全量记录合并               → FULL OUTER JOIN
主表记录存在性检查         → WHERE EXISTS
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值