数据分析基础_CSDN博客 (1)
数据分析基础:从 SQL 到可视化,一文搞懂核心知识点
📌 本文系统梳理数据分析所需的基础技能,涵盖 MySQL 核心语法(DDL/DML/DQL)、多表关联查询、窗口函数、常用函数,以及 FineBI 可视化报表入门。适合数据分析初学者收藏参考。
📑 目录
一、SQL 语法基础
1.1 数据库概念
数据库是存储和管理数据的系统,核心操作即 CRUD:增(Create)、删(Delete)、改(Update)、查(Retrieve)。
数据库主要分为两大类:
| 类型 | 说明 | 常见产品 |
|---|---|---|
| 关系型数据库(SQL) | 存储结构化的行列数据 | MySQL、Oracle、PostgreSQL、SQLite |
| 非关系型数据库(NoSQL) | 存储非结构化数据 | Redis(键值对)、MongoDB(文档)、HBase(列式)、Neo4j(图) |
1.2 MySQL 基础
MySQL 是目前最流行的关系型数据库管理系统(RDBMS),具有以下特点:
- 采用 C/S 架构(Client 客户端 / Server 服务端)
- 使用标准的 SQL 结构化查询语言
数据库连接方式:
# 终端连接
mysql -h 服务端IP地址 -P 端口 -u 用户名 -p 密码
# 默认值
# 服务端地址:127.0.0.1 或 localhost
# 端口:3306
此外,也可以通过 PyCharm 等 IDE 的数据库工具进行可视化连接。
1.3 SQL 语句分类
| 分类 | 全称 | 作用 |
|---|---|---|
| DDL | Data Definition Language | 数据库/数据表/字段的增删改查 |
| DML | Data Manipulation Language | 表记录的增删改 |
| DQL | Data Query Language | 表记录的查询 |
| DCL | Data Control Language | 访问权限、安全、用户管理 |
1.4 SQL 基础语法规则
-- SQL 语句以分号 ; 结尾
-- SQL 语句不区分大小写
-- 注释方式
/* 多行注释 */
-- 单行注释(推荐)
# 单行注释(MySQL 特有)
⚠️ 注意事项:
- SQL 语句中的标点符号必须使用英文符号
- 关键字不建议用作库名、表名或字段名
二、DDL — 数据定义语言
2.1 数据库操作
-- 增:创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET utf8mb4];
-- 删:删除数据库
DROP DATABASE 数据库名;
-- 改:修改数据库
ALTER DATABASE 数据库名 ...;
-- 查:查看所有数据库
SHOW DATABASES;
-- 查看某个数据库的创建信息
SHOW CREATE DATABASE 数据库名;
-- 切换/使用数据库
USE 数据库名;
2.2 数据表操作
-- 增:创建数据表
CREATE TABLE 表名 (
字段名1 数据类型 [约束],
字段名2 数据类型 [约束],
...
);
-- 删:删除数据表
DROP TABLE 表名;
-- 改:重命名数据表
RENAME TABLE 旧表名 TO 新表名;
-- 查:查看所有表
SHOW TABLES;
-- 查看表结构
DESC 表名;
2.3 字段操作
-- 增:添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [约束];
-- 改:修改字段
ALTER TABLE 表名 CHANGE 旧字段 新字段 数据类型 [约束];
-- 删:删除字段
ALTER TABLE 表名 DROP 字段名;
2.4 数据类型与约束
常用数据类型:
| 类型 | 关键字 | 说明 |
|---|---|---|
| 整型 | TINYINT、INT |
整数 |
| 字符串 | VARCHAR(n)、CHAR(n) |
可变/固定长度 |
| 小数 | FLOAT、DECIMAL |
浮点/精确(金融用 DECIMAL) |
| 日期 | DATE、DATETIME |
年月日 / 年月日时分秒 |
常用约束:
| 约束 | 关键字 | 说明 |
|---|---|---|
| 主键 | PRIMARY KEY |
唯一、非空,一张表只有一个,可配合 AUTO_INCREMENT 自增 |
| 唯一 | UNIQUE |
字段值不能重复 |
| 非空 | NOT NULL |
必须填值 |
| 默认值 | DEFAULT |
不指定时自动填入默认值 |
三、DML — 数据操作语言
DML 负责表记录的增、删、改操作:
-- 增:插入数据
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值3, 值4, ...);
-- 删:删除数据(⚠️ 一般需要加 WHERE 条件!)
DELETE FROM 表名 WHERE 条件语句;
-- 改:更新数据(⚠️ 一般需要加 WHERE 条件!)
UPDATE 表名 SET 字段1=值1, 字段2=值2, ... WHERE 条件语句;
🔴 重要提醒:
DELETE和UPDATE操作务必加上 WHERE 条件,否则会操作整张表的所有数据!
四、DQL — 数据查询语言(重点)
DQL 是数据分析中最核心的部分,分为单表查询和多表查询。
4.1 单表查询
基础查询
-- 查询所有字段
SELECT * FROM 表名;
-- 查询指定字段
SELECT 字段1, 字段2 FROM 表名;
-- 去重查询
SELECT DISTINCT 字段 FROM 表名;
-- 起别名(AS 可省略)
SELECT 字段名 AS 别名 FROM 表名 AS 表别名;
条件查询(WHERE)
SELECT * FROM 表名 WHERE 条件语句;
运算符速查:
| 类别 | 运算符 |
|---|---|
| 比较运算 | =、>、<、>=、<=、!=、<> |
| 逻辑运算 | AND(交集)、OR(并集)、NOT(取反) |
| 范围运算 | BETWEEN 值1 AND 值2(闭区间) |
| 离散匹配 | IN (值1, 值2, ...) |
| 模糊匹配 | LIKE(% 匹配任意多个字符,_ 匹配一个字符) |
| 空值判断 | IS NULL / IS NOT NULL |
排序查询(ORDER BY)
-- 升序(默认,ASC 可省略)
SELECT * FROM 表名 ORDER BY 字段 ASC;
-- 降序
SELECT * FROM 表名 ORDER BY 字段 DESC;
-- 多字段排序
SELECT * FROM 表名 ORDER BY 字段1 DESC, 字段2 ASC;
聚合查询
SELECT COUNT(字段), SUM(字段), MAX(字段), MIN(字段), AVG(字段) FROM 表名;
💡 聚合函数会自动忽略 NULL 值。
分组查询(GROUP BY)
SELECT 分组字段, 聚合函数(聚合字段)
FROM 表名
[WHERE 非聚合条件]
GROUP BY 分组字段
HAVING 聚合条件;
WHERE:分组前过滤,不能对聚合结果过滤HAVING:分组后过滤,可对聚合结果过滤
分页查询(LIMIT)
-- 语法:LIMIT m, n(跳过 m 条,取 n 条)
SELECT * FROM 表名 ORDER BY 字段 LIMIT m, n;
-- TopK:查询前 K 条
SELECT * FROM 表名 ORDER BY 字段 DESC LIMIT K;
-- 分页:第 page 页,每页 n 条
-- m = (page - 1) * n
SELECT * FROM 表名 ORDER BY 字段 LIMIT (page-1)*n, n;
📌 SQL 语句的书写与执行顺序
书写顺序:
SELECT → DISTINCT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
执行顺序:
FROM → WHERE → GROUP BY → 聚合函数 → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT
理解执行顺序对排查 SQL 问题至关重要!
4.2 多表查询
表的关联关系
| 关系 | 说明 | 示例 |
|---|---|---|
| 一对一 | 两张表一一对应 | 用户信息 ↔ 证件 |
| 一对多 | 一对应多 | 类别 → 商品 |
| 多对多 | 通过中间表转换为两个一对多 | 学生 ↔ 课程 |
外键约束
-- 添加外键
ALTER TABLE 从表 ADD [CONSTRAINT 外键名] FOREIGN KEY (外键字段) REFERENCES 主表(主键);
-- 删除外键
ALTER TABLE 从表 DROP FOREIGN KEY 外键名;
ALTER TABLE 从表 DROP INDEX 外键索引名;
💡 实际开发中,很少直接使用外键约束,而是从代码层面维护表之间的关系。
关联查询
① 交叉连接(笛卡尔积)
SELECT * FROM 左表 CROSS JOIN 右表;
-- 简写
SELECT * FROM 左表, 右表;
⚠️ 结果行数 = 左表行数 × 右表行数,一般不直接使用。
② 内连接(INNER JOIN)
取两表关联数据的交集:
SELECT * FROM 左表 INNER JOIN 右表 ON 关联条件;
③ 外连接
-- 左外连接:左表全部 + 右表匹配部分
SELECT * FROM 左表 LEFT JOIN 右表 ON 关联条件;
-- 右外连接:右表全部 + 左表匹配部分
SELECT * FROM 左表 RIGHT JOIN 右表 ON 关联条件;
-- 全外连接(MySQL 不支持 FULL JOIN,用 UNION 实现)
SELECT * FROM 左表 LEFT JOIN 右表 ON 条件
UNION
SELECT * FROM 左表 RIGHT JOIN 右表 ON 条件;
💡 推荐优先使用 LEFT JOIN,调换表顺序即可实现 RIGHT JOIN 的效果。
④ 自连接
左表和右表是同一张表,通过别名区分:
SELECT a.*, b.*
FROM 表名 a
INNER JOIN 表名 b ON a.字段 = b.字段;
4.3 子查询
两个 SELECT 嵌套,外层依赖内层:
-- 子查询作为 WHERE 条件
SELECT * FROM 表名 WHERE 字段 IN (SELECT 字段 FROM 另一表);
-- 子查询作为临时表
SELECT * FROM (SELECT ... FROM 表名) AS 临时表;
-- 子查询作为 SELECT 字段
SELECT (SELECT 字段 FROM 另一表 WHERE 条件) AS 别名 FROM 表名;
五、常用函数速查
5.1 普通函数
| 类别 | 函数 | 说明 |
|---|---|---|
| 聚合 | COUNT / SUM / MAX / MIN / AVG |
统计聚合 |
| 数值 | CEIL / ROUND |
向上取整 / 四舍五入 |
| 字符串 | LENGTH / REPLACE / CONCAT / TRIM |
长度 / 替换 / 拼接 / 去空格 |
| 时间 | NOW() / YEAR / MONTH / DAY / WEEKDAY |
当前时间 / 提取时间部分 |
| 时间 | DATE_FORMAT / TIMESTAMPDIFF |
格式化 / 时间间隔 |
| 判断 | IFNULL / IF / CASE WHEN |
空值判断 / 单条件 / 多条件 |
CASE WHEN 示例:
SELECT
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM student;
5.2 窗口函数(进阶重点)
窗口函数对 OVER() 中的分组数据进行广播处理,实现每行数据与分组数据一一对应。
SELECT 窗口函数(字段) OVER(PARTITION BY 分区字段 ORDER BY 排序字段) AS 别名
FROM 表名;
📌
PARTITION BY与GROUP BY的区别:
GROUP BY:多进一出(分组聚合)PARTITION BY:一进一出(保留每行明细)
常用窗口函数:
| 函数 | 说明 | 示例场景 |
|---|---|---|
ROW_NUMBER() |
连续唯一行号,不重复 | 排名编号 |
RANK() |
有并列时序号重复但不连续 | 成绩排名 |
DENSE_RANK() |
有并列时序号重复且连续 | 紧凑排名 |
SUM() OVER(ORDER BY) |
累计求和 | 累计销售额 |
LAG(字段, N, M) |
取当前行前第 N 行的值 | 环比计算 |
LEAD(字段, N, M) |
取当前行后第 N 行的值 | 同比计算 |
NTILE(X) |
均匀分成 X 组 | 分桶分析 |
排名示例:
SELECT
name,
score,
ROW_NUMBER() OVER(ORDER BY score DESC) AS row_num,
RANK() OVER(ORDER BY score DESC) AS rank_num,
DENSE_RANK() OVER(ORDER BY score DESC) AS dense_rank_num
FROM student;
5.3 CTE 公用表表达式
用 WITH 定义临时结果集,提高 SQL 可读性:
WITH 临时表 AS (
SELECT ... FROM 表名 WHERE 条件
)
SELECT * FROM 临时表;
六、FineBI 可视化入门
什么是 BI?
BI(Business Intelligence,商业智能) 是一套完整的解决方案,帮助企业管理者用数据驱动决策。
FineBI 是一款数据分析可视化工具,采用 B/S 架构(浏览器 / 服务器),同类工具还有 PowerBI、Tableau 等。
报表制作流程
准备数据 → 创建仪表盘 → 增加组件 → 数据分析可视化
两个核心概念
| 概念 | 说明 |
|---|---|
| 维度 | 描述事件的角度(如地区、时间、类别) |
| 指标 | 量化业务数据(如销售额、用户数、转化率) |
常用图表类型
| 分析场景 | 推荐图表 |
|---|---|
| 对比分析 | 柱状图、词云图 |
| 占比分析 | 饼图 |
| 趋势分析 | 折线图 |
| 分布分析 | 地图 |
| 钻取分析 | 仪表盘联动 |
报表制作完成后,支持分享报表文件或分享报表链接给团队成员。
七、总结
本文覆盖了数据分析入门的核心知识体系:
| 模块 | 核心内容 | 掌握程度 |
|---|---|---|
| DDL | 库表字段的增删改查 | 了解 |
| DML | 数据的增删改 | 熟悉 |
| DQL 单表 | 条件、排序、聚合、分组、分页 | 熟练掌握 |
| DQL 多表 | 内连接、外连接、自连接、子查询 | 熟悉 |
| 窗口函数 | 排名、累计、环比、分桶 | 掌握 |
| FineBI | 维度指标、可视化图表 | 了解 |
🎯 学习建议: SQL 是数据分析的基本功,建议多动手练习。窗口函数是从"会写 SQL"到"写好 SQL"的分水岭,务必重点掌握。
如果这篇文章对你有帮助,欢迎点赞 👍 收藏 ⭐ 评论 💬 支持一下!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)