1、职能岗SQL学习极简攻略-开篇词
为什么要学习SQL
如何学习SQL
应该忽略的知识点
点此访问在线练习平台,暂只支持电脑端访问。反馈建议请点此。
为什么要学习SQL在产品经理、运营、市场等职能岗位求职时,我们会发现很多职位都要求能掌握SQL。例如下面运营岗位的职位描述(JD),就明确说明了需要熟练SQL。在很多JD中我们都可以看见”会SQL优先“、“会SQL加分”等字眼。SQL作为一门技能,可以提升我们的职场竞争力,在面试中脱颖而出,同时在实际工作中也会切实提升我们的工作效率。
那么SQL究竟是什么呢?SQL我们可以理解为与数据库进行沟通的语言,就像我们与人交流使用的语言一样。其中数据库是存储数据的容器,当我们想要从数据库中获得某些数据,就需要用数据库能听得懂的语言告诉它,例如我们想知道商店昨天的营业额,就可以使用相应的SQL语句告诉数据库,数据库就会返回我们想要的数据,而不需要我们人工进行统计,如下图所示。
在数据库中数据总是以一张张表的形式存在,每一张表都有自己的列和行,就好像Excel中的工作表一样,但是它的数据量可以非常大。SQL除了用于查询数据,还可以插入、更新和删除数据库中的数据。在日常生活中,我 ...
2、职能岗SQL学习极简攻略-垂直学习SQL
垂直学习SQL
SELECT
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
点此访问在线练习平台,暂只支持电脑端访问。反馈建议请点此。
垂直学习SQLSQL是一门语言,遵循一定的语法,学习SQL的第一步就是了解SQL的基础语法。在SQL中,我们常用的语句有SELECT、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT等。它们的语序永远遵循下面的语序:
123456SELECT ... FROM ...WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT ...
对于每一行,我们称之为字句,在一个完整的SQL中,一定有SELECT字句,而其它字句可以有也可以没有,但是它们之间的顺序是固定的。下面我们将从上到下,以垂直维度先简单介绍每个字句的用法。以帮助大家快速上手SQL。
我们接下来以下表的数据为例,其表名为scores_t,来学习SELECT的用法。
student_id
student_name
subject
score
1
屈屈
创意写作
100
1 ...
3、职能岗SQL学习极简攻略-水平学习SQL
水平学习SQL
SELECT
函数
MIN
MAX
DISTINCT
COUNT
SUM
AVG
列的重命名
WHERE
筛选数据
条件组合
GROUP BY
HAVING
ORDER BY
LIMIT
点此访问在线练习平台,暂只支持电脑端访问。反馈建议请点此。
水平学习SQL在垂直学习中,我们学习了SQL的基础语法,包括SELECT、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT等。接下来,我们将对每种SQL子句进行扩展,详细介绍每种子句的用法。
SELECTSELECT部分是SQL中最重要的部分,用于查询数据。在垂直学习章节中,我们已经学习了SELECT的基础用法,包括查询所有列、查询部分列、基本的查询函数等。接下来将详细介绍SELECT的更多用法,大体分为函数、列的重命名两个方面。
函数在SELECT部分,我们可以对返回的结果集进行处理。这样的处理操作我们称之为函数。在SQL中有很多函数,用于对返回的结果集进行处理,例如MIN、MAX、DISTINCT、COUNT、SUM、AVG等。以下我们将介绍这些函数的用法。
MINMIN函数 ...
4、职能岗SQL学习极简攻略-子查询
子查询
子查询的用途
标量子查询
列子查询
行子查询
表子查询
多层嵌套子查询
相关子查询
带有EXISTS关键字的子查询
同一个表的子查询
子查询子查询的用途在前文提到的SQL中,WHERE字句的筛选条件都有一个共同特点,就是其筛选条件在SQL语句执行之前,就已经被我们写死了。例如:
12SELECT * FROM scores WHERE name = '屈屈';
其筛选条件学生姓名为“屈屈”,在执行SQL之前,我们就知道了筛选条件。然后在一些情况下,我们并不能提前知道筛选条件。例如现在有2张表,一张是学生表,一张是成绩表。学生表(表名students):
id
name
gender
class
1
屈屈
女
1班
2
慧心
男
2班
3
达琳
女
1班
4
森贝
女
2班
成绩表(表名scores):
student_id
subject
score
1
创意写作
100
1
时尚美学
100
1
高能物理
29
2
创意写作
81
2
电子竞技
91
2
高能物理
85
3
创意写作
...
5、职能岗SQL学习极简攻略-连接查询
连接查询
内连接
外连接
左连接
右连接
多表连接
自连接
连接查询与子查询
连接查询在前文我们介绍了如何通过子查询在多个表中查询数据。除了子查询,连接查询也可用于从多个表中查询数据。我们将通过具体的示例来学习如何使用连接查询。
例如现在有3张表如下:
学生表(表名students):
id
name
gender
class
1
屈屈
女
1班
2
慧心
男
2班
3
达琳
女
1班
4
森贝
女
2班
成绩表(表名scores):
student_id
subject
score
1
创意写作
100
1
时尚美学
100
1
高能物理
29
1
电子竞技
88
2
创意写作
81
2
电子竞技
91
2
高能物理
85
3
创意写作
93
3
时尚美学
65
3
电子竞技
59
4
时尚美学
75
4
电子竞技
83
如果细心的你发现成绩表存在某些“异常”,先不要着急,后文将介绍其原因。
选课表(表名student_courses),记录了学生选了哪些课程:
studen ...
6、职能岗SQL学习极简攻略-合并查询
合并查询
UNION
UNION ALL
排序
筛选
合并查询在前文我们介绍了如何使用子查询和连接查询在多个表中查询数据,本节我们将介绍另一种在多表中查询数据的方法:合并查询。
合并查询顾名思义就是将多个查询结果合并在一起,比如我们现在有如下两张表:学生表和老师表,我们想要查询学校中的所有人员信息(包括老师和学生),这时候我们就可以使用合并查询。
学生表(表名为students):
id
name
telephone
gender
class
1
屈屈
18820030216
女
1班
2
慧心
13268751479
男
2班
3
达琳
15754874518
女
1班
4
森贝
13698742277
女
2班
5
米粒
13698652689
男
1班
老师表(表名为teachers):
id
name
telephone
gender
1
困困
13026324789
女
2
毛毛
13658748974
男
3
米粒
13265877158
男
UNION我们想要查询学校中所有人员的姓名和电话号码,此时可以使用如 ...
7、职能岗SQL学习极简攻略-窗口函数
窗口函数语法
序号窗口函数
ROW_NUMBER
RANK
DENSE_RANK
小结
前后窗口函数
LEAD
LAG
首尾窗口函数
FIRST_VALUE
LAST_VALUE
分布窗口函数
PERCENT_RANK
CUME_DIST
其它窗口函数
NTILE
NTH_VALUE
聚合窗口函数
在前文《水平学习SQL》小节中,我们介绍了SQL中的聚合函数,如SUM、AVG、COUNT等。这些函数将多行数据组合成单个输出行,以便进行统计计算,例如求和、平均值、计数等。本节将介绍另一种SQL函数类型——窗口函数,窗口函数允许我们在由查询结果集中的行组成的“窗口”上执行计算。与聚合函数不同,窗口函数不会将行组合成单个输出行,而是会为每个输入行返回一个值,使得我们可以在保持行的独立性的同时进行复杂的计算。
窗口函数语法窗口函数的语法如下:
12345<窗口函数>(<参数>) OVER ( [PARTITION BY <分区表达式>] [ORDER BY <排序表达式> [ASC | DESC]] ...
8、职能岗SQL学习极简攻略-常见面试题
常见面试题
常见面试题
Q1:请解释WHERE和HAVING的区别?
Q2:什么是JOIN?有哪些类型的JOIN并解释?
Q3:请解释JOIN和UNION的区别?
Q4:请解释UNION和UNION ALL的区别?
Q5:请解释ROW_NUMBER、RANK和DENSE_RANK的区别?
Q6:什么时候使用GROUP BY?
Q7:你使用过哪些函数?
Q8:如果一个SQL执行时间较长,可能是什么原因,如何进行优化?
Q9:什么是表的主键、外键、分区键?
Q10:什么是索引?和主键的区别是什么?
Q1:请解释WHERE和HAVING的区别?WHERE用于常规的过滤结果集的数据,而HAVING用于过滤分组后的数据,与GROUP BY一起使用。例如以下SQL:
12345SELECT department, COUNT(*) AS num_employeesFROM employeesWHERE salary > 3000GROUP BY departmentHAVING AVG(salary) > 5000;
这个SQL语句会先过滤出工资大于3000的员工,然后按部门分组 ...
学员评价
在网站的建设过程中,离不开各位学员的建议与反馈,我们会根据大家的反馈不断完善网站,提高课程质量,提升用户体验。如果你有任何建议或意见,欢迎提交该问卷,我们会认真阅读每一条反馈,谢谢!
以下是摘自部分学员的反馈评价,你们的支持就是“区区SQL”前进的动力!
最后是一位认真宝宝的学习笔记,让我们为她撒花!
题库 here!!刷题点击⬇️
通过SQL在线练习平台,我们可以手动编写SQL并运行,平台将自动判断SQL运行结果是否正确。帮助大家在真实环境中练习SQL技能,达到熟练运用SQL的目的,避免停留在理论层面。
在线练习平台网址:https://oj.ququsql.com/
使用说明:
在左侧选择一个SQL题目
阅读题目,在下方答题框编写SQL
点击提交按钮,平台将进行判题
若答案正确,将返回:
若答案错误,例如数据不对,将返回:
若是其它异常,例如SQL语法错误等,将返回:
判题原理:通过对比运行SQL的输出,与期望输出是否一致,来判断答题是否正确。
注意细节:列名不区分大小写,大家无需关注列名的大小写问题,例如MAX(x)和max(x)都不会影响判题结果。
练习平台暂只支持电脑端访问。