资讯动态

SQL基础入门笔记 | 从零基础到掌握核心查询语句

发布时间:2026/10/14 3:21:47 来源:尧图企业网站定制
课程B站大学记录学习数仓开发进阶数据分析和数据处理sql语言基础数据分析SQL基础入门笔记 | 从零基础到掌握核心查询语句目录一、SQL简介与工具安装1.1 什么是SQL1.2 为什么数据分析师要学SQL1.3 常用SQL工具介绍二、SQL语言基础语法2.1 第一条SQL语句2.2 实际操作查看表结构2.3 指定字段查询三、WHERE条件筛选与ORDER BY排序3.1 user表结构介绍3.2 WHERE条件筛选3.3 ORDER BY结果排序四、GROUP BY分组聚合与HAVING筛选4.1 从Excel透视表理解SQL分组4.2 常用聚合函数4.3 GROUP BY基本用法4.4 多字段分组4.5 HAVING —— 分组后的筛选4.6 SQL语句的执行顺序五、SQL基础练习实战5.1 练习题1用户年龄分布统计5.2 练习题2年龄分段统计5.3 练习题3每日订单金额汇总5.4 练习题4高价值订单筛选六、学习总结与技巧6.1 必背核心语法6.2 新手常见错误数据分析SQL基础入门笔记 | 从零基础到掌握核心查询语句作为一名数据分析测试工程师最近在系统学习SQL语言。这篇博客是我跟着B站数据分析课程BV1AdeT6mEDS 第18-22集整理的学习笔记涵盖SQL入门、基础语法、条件筛选、分组聚合等核心知识点有图有示例适合零基础的小伙伴参考学习。目录一、SQL简介与工具安装二、SQL语言基础语法三、WHERE条件筛选与ORDER BY排序四、GROUP BY分组聚合与HAVING筛选五、SQL基础练习实战六、学习总结与技巧一、SQL简介与工具安装1.1 什么是SQLSQLStructured Query Language结构化查询语言是一种用于管理关系数据库的标准编程语言。对于数据分析师来说SQL是最核心的技能之一主要用于数据提取从数据库中查询所需的数据数据清洗过滤、转换、清洗原始数据数据分析聚合、分组、统计计算数据报表为可视化和报表提供数据支撑1.2 为什么数据分析师要学SQL在实际工作中数据通常存储在数据库或数据仓库中而不是Excel里。作为数据分析师效率更高相比Excel处理百万级数据SQL查询速度快几个数量级可复用写好的SQL语句可以反复运行、自动化行业标准几乎所有互联网公司的数据分析岗位都要求掌握SQL业务价值直接从数据源取数更接近业务本质1.3 常用SQL工具介绍课程中使用的是Navicat作为SQL客户端工具这是一款非常流行的数据库管理工具支持MySQL、PostgreSQL、Oracle等多种数据库。Navicat基本操作流程连接到数据库服务器选择目标数据库课程中使用的是learning数据库点击新建查询打开SQL编辑器编写SQL语句按Ctrl R运行查询二、SQL语言基础语法2.1 第一条SQL语句学习任何编程语言都是从Hello World开始。SQL的第一条语句就是查询整张表的数据。-- 查询order表的所有字段、所有行SELECT*FROMorder;语法解析关键字作用SELECT指定要查询哪些字段*代表表中的所有字段FROM指定从哪张表查询数据表名用反引号包裹表名避免和关键字冲突;语句结束的标志每条SQL语句末尾必须加分号2.2 实际操作查看表结构在写复杂查询之前首先要知道表里有哪些字段。课程中教了一个非常实用的技巧先用 LIMIT 10 查看表的前10行数据。-- 先查看user表的前10行了解表结构SELECT*FROMuserLIMIT10;为什么要用LIMIT直接SELECT * FROM user会返回全表数据可能有几百万行非常慢加上LIMIT 10只返回前10行既能看清表结构又能快速执行2.3 指定字段查询知道了表结构后就可以只查询需要的字段而不是全部字段-- 只查询user_id和city两个字段SELECTuser_id,cityFROMuser;实战示例-- 查询order表的order_id、order_date、sku、amount字段SELECTorder_id,order_date,sku,amountFROMorder;三、WHERE条件筛选与ORDER BY排序3.1 user表结构介绍课程中使用了两张示例表order订单表和user用户表。user表包含以下字段字段名含义示例user_id用户ID主键1001age用户年龄25gender性别男/女city所在城市北京register_date注册日期2023-01-15gold金币数量100orders订单数5amount消费金额500.003.2 WHERE条件筛选WHERE子句用于过滤数据只返回满足条件的行。基本语法SELECT字段1,字段2FROM表名WHERE条件;示例1查询北京的用户-- 筛选city等于北京的用户SELECTuser_id,cityFROMuserWHEREcity北京;⚠️注意字符串类型的值需要用单引号包裹而且要注意中英文输入法切换避免用了中文引号导致报错。示例2IN操作符 —— 查询多个城市的用户-- 查询北京、上海、广州的用户SELECTuser_id,cityFROMuserWHEREcityIN(北京,上海,广州);示例3NOT IN操作符 —— 排除某些城市-- 查询不在北京、上海的用户SELECTuser_id,cityFROMuserWHEREcityNOTIN(北京,上海);示例4比较运算符 —— 筛选金额大于100的订单SELECTorder_id,sku,amountFROMorderWHEREamount100;常用比较运算符运算符含义示例等于city 北京!或不等于age ! 18大于amount 100小于amount 50大于等于age 18小于等于age 303.3 ORDER BY结果排序ORDER BY用于对查询结果进行排序让数据按照我们想要的顺序展示。基本语法SELECT字段列表FROM表名WHERE条件ORDERBY字段[ASC|DESC];ASC升序从小到大默认值DESC降序从大到小示例1单字段排序 —— 按SKU升序排列SELECTorder_id,order_date,sku,amountFROMorderWHERE(sku2ANDamount100)OR(sku1ANDamount100)ORDERBYsku;-- 默认升序示例2多字段排序 —— 先按SKU升序再按金额升序SELECTorder_id,order_date,sku,amountFROMorderWHERE(sku2ANDamount100)OR(sku1ANDamount100)ORDERBYsku,amount;-- 多字段排序依次排序示例3多字段不同排序方式 —— SKU升序金额降序SELECTorder_id,order_date,sku,amountFROMorderWHERE(sku2ANDamount100)OR(sku1ANDamount100)ORDERBYskuASC,amountDESC;-- ASC可省略DESC必须写小技巧ORDER BY后面可以跟多个字段先用第一个字段排序如果第一个字段相同再用第二个字段排序。每个字段可以单独指定升序或降序。四、GROUP BY分组聚合与HAVING筛选4.1 从Excel透视表理解SQL分组如果你用过Excel的数据透视表那GROUP BY就很好理解了Excel透视表把明细数据按维度拖到行/列自动汇总求和、计数、平均值SQL GROUP BY按指定字段分组然后用聚合函数统计每组的数据4.2 常用聚合函数SQL提供了丰富的聚合函数比Excel透视表更强大聚合函数作用类比ExcelCOUNT()计数行数COUNTIFSUM()求和SUMAVG()平均值AVERAGEMAX()最大值MAXMIN()最小值MINCOUNT(DISTINCT 字段)去重计数Excel没有直接对应SQL的优势COUNT(DISTINCT user_id)这种去重计数在Excel里操作比较麻烦但在SQL里一行代码就搞定了。4.3 GROUP BY基本用法基本语法SELECT分组字段,聚合函数(统计字段)FROM表名WHERE条件GROUPBY分组字段;示例1统计每个城市有多少用户-- 按city分组统计每个城市的用户数SELECTcity,COUNT(user_id)ASuser_countFROMuserGROUPBYcity;示例2统计每天的订单总金额-- 按order_date分组计算每天的订单总金额SELECTorder_date,SUM(amount)ASdaily_amountFROMorderGROUPBYorder_date;4.4 多字段分组GROUP BY后面也可以跟多个字段实现更细粒度的分组示例每个城市里不同年龄有多少人-- 先按城市分组再按年龄分组SELECTcity,age,COUNT(user_id)ASuser_countFROMuserGROUPBYcity,age;4.5 HAVING —— 分组后的筛选WHERE是在分组前过滤行HAVING是在分组后过滤组。这是初学者最容易混淆的地方WHERE vs HAVING 的区别WHEREHAVING执行时机分组前分组后作用对象行数据分组结果能否用聚合函数❌ 不能✅ 能位置FROM之后GROUP BY之后示例统计用户数大于100人的城市SELECTcity,COUNT(user_id)ASuser_countFROMuserGROUPBYcityHAVINGCOUNT(user_id)100;-- 分组后筛选对比❌ 错误写法WHERE COUNT(user_id) 100—— WHERE不能用聚合函数✅ 正确写法HAVING COUNT(user_id) 100—— HAVING专门用于分组后筛选4.6 SQL语句的执行顺序理解SQL的执行顺序对写好SQL非常重要-- 书写顺序SELECT字段,聚合函数FROM表名WHERE行条件GROUPBY分组字段HAVING组条件ORDERBY排序字段;-- 执行顺序 1. FROM → 确定从哪张表取数 2. WHERE → 过滤掉不符合条件的行 3. GROUP BY → 按字段分组 4. 聚合函数 → 计算每组的统计值 5. HAVING → 过滤掉不符合条件的组 6. SELECT → 选择要返回的字段 7. ORDER BY → 对结果排序五、SQL基础练习实战5.1 练习题1用户年龄分布统计需求统计2010年之后注册的用户各年龄的用户数量并按年龄排序。-- 先查看表结构好习惯SELECT*FROMuserLIMIT10;-- 统计2010年后注册的用户年龄分布SELECTage,COUNT(user_id)ASuser_countFROMuserWHEREregister_date2010-01-01-- 分组前过滤只看2010年后注册的GROUPBYage-- 按年龄分组ORDERBYage;-- 按年龄升序排列5.2 练习题2年龄分段统计问题按单一年龄统计的结果太零散了每个年龄可能只有几个人参考价值不高。优化思路把年龄分成几个区间按区间统计20-24岁25-30岁30岁以上实现方式用CASE WHEN做分段进阶内容先了解概念SELECTCASEWHENageBETWEEN20AND24THEN20-24岁WHENageBETWEEN25AND30THEN25-30岁WHENage30THEN30岁以上ELSE其他ENDASage_group,COUNT(user_id)ASuser_countFROMuserWHEREregister_date2010-01-01GROUPBYage_groupORDERBYage_group;5.3 练习题3每日订单金额汇总需求统计每天的订单总量和总金额。SELECTorder_date,COUNT(order_id)ASorder_count,-- 订单数SUM(amount)AStotal_amount,-- 总金额AVG(amount)ASavg_amount-- 平均客单价FROMorderGROUPBYorder_dateORDERBYorder_date;5.4 练习题4高价值订单筛选需求找出每个SKU类别中金额大于100的订单并按SKU和金额排序。SELECTorder_id,order_date,sku,amountFROMorderWHEREamount100ORDERBYskuASC,amountDESC;六、学习总结与技巧6.1 必背核心语法-- 完整的SQL查询模板SELECT字段1,字段2,聚合函数(字段3)AS别名FROM表名WHERE行级筛选条件GROUPBY分组字段HAVING组级筛选条件ORDERBY排序字段[ASC|DESC]LIMIT10;6.2 新手常见错误错误原因解决方法中文引号/逗号输入法没切换到英文写SQL前切换英文输入法漏写FROM初学者常犯写完SELECT后马上写FROM表名/字段名拼错不熟悉表结构先SELECT * FROM 表 LIMIT 10查看WHERE用聚合函数混淆WHERE和HAVING分组后的筛选用HAVING字符串没加单引号数字不用字符串要文本类型的值用单引号包裹SQL的核心思想其实就是你想从哪里取数FROM→ 要哪些数据SELECT→ 筛选什么条件WHERE/GROUP BY/HAVING→ 怎么展示ORDER BY。想清楚这几个问题SQL就写对了一半。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑