Day5: SQL知识点总结(Part 1)

前言:25年秋招开始准备了吗?作为一个2022届的数据分析岗位的秋招上岸党很正式的告诉你,想上岸大厂,第一份大厂实习在这个时候必须准备了!22年的此时,我在寒风凛冽的北京拿着120块的实习工资,过年没舍得回家,才拿下我的大厂敲门砖。

转眼已经2025年,重拾这个专栏主要是为了分享点互联网打工的心得,数据分析求职的经验,以及我在秋招过程中如何准备面试,沉淀下来的一些知识点和走过的雷区,希望能够尽量给予未来优秀的“数分人”一些帮助和岗位的资讯。我还创建了属于数分人的社区,大家可以一起交流数分求职问题,还能互相交流求职经验,借鉴分享,********。(记得添加来自‘牛客’备注哦)

SQL知识点总结(Part 1)

Sql语言本身不难,更多在于题目的灵活和解法的巧妙,建议多写多练,见过较多的题目情景,可以轻松熟练地应对sql题目,大部分的sql需求可通过构造辅助列,分组、开窗等方法solve。

核心知识点

1、高频知识点 (必须掌握)

1) 查询语句(select)

select * from <表名> (limit 10);

基础查询语句,select * from t 是从表t中获取全部信息,表量级较大时该语句运行较慢,慎重使用,加入limit n 为取该表中前n条数据信息,可用于表结构确认及局部信息确认。

select <列名1>,<列名2> from <表名>;

select <列名1>,<列名2> from <表名> 为从表中获取appoint两列的数据

select语句为坠常用的查询语句,在不更改原始表信息的情况下查询获取所需要的信息,除上面的基础用法外,可与条件过滤语句(where)结合获取appoint条件下的数据信息(eg:select * from <表名> where <列名1> = 1),可与聚合函数、分组函数(group by)结合获取按需要方式分组后的统计结果(eg:select <列名1>,<列名2>,sum(<列名3>) from <表名> group by <列名1>,<列名2>),可与连接函数(join)结合实现表之间的内连、外连,也可与窗口函数结合进行累计计算、分组排序、偏移分析等操作。

2)聚合函数(sum/count/avg/max/min)

聚合函数为sql中用于汇总的函数,它会对NULL以外的对象进行汇总(除count函数特殊外,若列中有null值,聚合函数会将null值排除在外,只计算非空值部分的汇总数据),常用的聚合函数有如下五种

COUNT: 计算表中的记录数(行数)

(若某列中包含null值,COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。)

SUM: 计算表中数值列中数据的合计值

AVG: 计算表中数值列中数据的平均值

MAX: 求出表中任意列中数据的坠大值

MIN: 求出表中任意列中数据的坠小值

使用聚合函数时,可用distinct函数删除重复值

eg:SELECT COUNT(DISTINCT product_type) FROM Product

3)分组函数(group by)

使用GROUP BY子句可以按特定列将表分割,常与聚合函数配合使用。

SELECT <列名1>, <列名2>, <列名3>,count(列名4),sum(列名5),……

FROM <表名>

GROUP BY <列名1>, <列名2>, <列名3>;

如分组列中有null值,分组汇总后null会以一种单独种类出现。

4) 条件过滤语句(where/having)

SELECT 语句通过WHERE 子句来appoint查询数据的条件

SELECT <列名>, ……

FROM <表名>

WHERE <条件表达式>;

Where子句执行顺序在分组函数group by之前,如果需要根据分组后数据进行筛选利用having子句进行。

SELECT <列名1>, <列名2>, <列名3>, ……

FROM <表名>

(WHERE <原表进行筛选的条件表达式>)

GROUP BY <列名1>, <列名2>, <列名3>, ……

HAVING <分组结果对应的条件>

Having子句应用实例:SQL HAVING 子句 | 菜鸟教程

5) 联接函数(left join/right join/(inner)join/full (outer) join)

常出现所需数据出现在不同表中的情况,通过联结函数我们可以将多张表连接起来从中取得需要的数据。

Join:SQL 连接(JOIN) | 菜鸟教程

Left join(左连接,坠常用): SQL LEFT JOIN 关键字 | 菜鸟教程

Right join(右连接): SQL RIGHT JOIN 关键字 | 菜鸟教程

Inner join(内连接,即取交集):SQL INNER JOIN 关键字 | 菜鸟教程

Full outer join(外连接,取并集): SQL FULL OUTER JOIN 关键字 | 菜鸟教程

6) 合并函数(union)

Join函数完成多张表列的合并,union函数则完成不同表或查询结果行的合并,两部分利用union函数进行合并需保证其列结构完全相同。

Unoin(行合并):SQL UNION 操作符 | 菜鸟教程

7) 窗口函数( over(partiton by ))

窗口函数语法解读 https://zhuanlan.zhihu.com/p/92654574

2、拓展知识点(低频、难度较大,选择性掌握)

1) 基础表操作(建表create 删表 drop/truncate 插入insert 更新update)

Create table 创建表 SQL CREATE TABLE 语句 | 菜鸟教程

Delete 删除表中数据 SQL DELETE 语句 | 菜鸟教程

Drop table 删除表格 Drop table <表名>

Truncate table 删除表内全部数据,但并不删除表本身 Truncate table <表名>

Update 插入数据 SQL INSERT INTO 语句 | 菜鸟教程

Update 更新数据 SQL UPDATE 语句 | 菜鸟教程

UPDATE table_name SET column1=value1,column2=value2,...WHERE some_column=some_value;

2) 模糊匹配(like)正则表达式(regexp)

模糊匹配常用于按照所给的条件或者说要求进行大致程度匹配,如获取name列以g开头的所有行(SELECT * FROM table WHERE name LIKE 'G%'),常用的函数为like/rlike/regexp,配合通配符使用。

Like :https://www.runoob.com/sql/sql-like.html

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern;

通配符:% — 代替一个或多个字符

_ — 代替一个字符

通配符的使用及正则表达式(rlike/regexp):SQL 通配符 | 菜鸟教程

3) 日期函数

常用日期函数

SQL 常用函数整理_日期函数(一)_sql 笔试题 日期函数-CSDN博客

MySQL 笔记 —— 时间函数、时间比较_mysql比较时间-CSDN博客

获取当前系统日期:select getdate();

日期加减:dateadd(初始日期(datetime格式),时间间隔(bigint格式) , 固定的转换间隔datepart (‘yyyy’-年,’mm’-月,’dd’-日))

Eg: dateadd(to_date('2020-01-01',’yyyy-mm-dd’), -1, 'mm')

日期间隔:datediff(datetime date1, datetime date2, string datepart)

字符串转日期格式:to_date('20080718', 'yyyymmdd')

from_unixtime (unix_timestamp ('2009-08-06'))

4) 字符串函数

常用字符串处理函数汇总 SQL字符串操作详解-CSDN博客

5) 列转行/列转行

Group by + case when: SQL行转列与列转行技巧-CSDN博客

6) 行转多列

Lateral view explode SQL 之 lateral view explode()_sql lateral view explore-CSDN博客

7) 偏移函数lag()和lead()

Oracle SQL之lag()和lead()函数使用_oracle lag() 上n行-CSDN博客

#数据人offer决赛圈怎么选##大厂实习##数据人的面试交流地#
全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
评论
3
12
分享

创作者周榜

更多
牛客网
牛客企业服务