报告称,未来10年数据细分岗位将扩张5倍,大数据19w的人才缺口将继续增加。国内外一线互联网公司纷纷开设了数据分析岗位。
数据分析岗位中用的最频繁的工具就是SQL了。不论是满足业务日常取数需求,还是自己做分析,都离不开SQL。
最近,有不少想接触数据分析的同学,都在咨询系统学习SQL。如何学、怎么学、在哪学成了大家普遍的问题。
我们在领扣上新的SQL教程刚好能帮你解决这些问题!教程+实例+练习题,学过的人都反馈极高,最最重要是免费的!而且相信我,任何一个会基本数学运算的同学,从零开始搞定SQL只需五天。
那么,现在我们开始吧~ 学习SQL分成这样5个阶段:
(ps:你也可以直接转战SQL教程~)
阶段一:Hello SQL
1、简单的select语句
SELECT
语句是最常用的 SQL 语句,它能帮助我们从一个或多个表中查询信息。查询是数据库中最常用的功能,因此我们选择它作为 SQL 语句学习的第一步。
SELECT 语句用于从数据库中选取数据,并将结果存储在一个临时结果表中,这个表称为结果集。结果集实际上也是一种包含行与列的表,只不过是未持久化的,即临时表。
示例代码
在使用 SELECT 语句检索表数据时,至少需要给出两条信息——想检索的列名(column_name)和被检索内容的表名(table_name)。
基础语法如下:
大家可能会有些疑惑,列名 column_name
和表名 table_name
左右加的是什么?
这是反引号(``),它就在我们电脑键盘的左上角数字 1 的左边位置。
上述代码不加反引号的效果如下:
可能有些同学会问:在平时编写程序时不常加反引号,那不加反引号可以吗?反引号的作用是什么?
其实是可以的,在绝大部分时候,不加反引号并不会导致程序出错。但其实我们在命名字段的时候,字段名可能会与 SQL 关键字冲突,这时候要用反引号将列名和表名包含一下,避免关键字冲突。因此,在本课程所有小节的学习中,都会更加严谨地加上反引号。
当我们仅需要查询某一列的信息,且知道该列的列名时,可以使用简单的 SELECT COLUMN
的语句查询单个列来获取该列的信息。
我们可以通过下面的实例来感受一下 SELECT COLUMN 的用法。
假设我们要查询课程表 courses
中所有课程的名称。
我们可以使用下面的 SQL 语句:
执行输出结果
请通过下面 SELECT COLUMN 实例——查询所有课程名称,去实操一下吧!
②使用 SELECT COLUMN, COLUMN 查询多个列
当我们想要从一个表中查询多个列时,使用的 SELECT 语句与查询一个列时使用的语句相似,但是需要在 SELECT 关键字后给出多个列名,并且列名之间必须以逗号分隔。
语法:
我们可以通过下面的实例来感受一下 SELECT COLUMN, COLUMN 的用法。
假如我们要从课程表 courses
表中选取课程名称 name
和课程开课日期 created_at
的列。
我们可以使用下面的 SQL 语句:
执行输出结果
请通过下面SELECT COLUMN实例——查询课程名称和课程创建时间,去实操一下吧!
Check course name and class size
SELECT 语句可以直接检索表中所有信息,即检索所有的列。这可以通过在列名的位置使用星号( *
)通配符来实现,输出的列的顺序一般是列在表定义中出现的物理顺序。
通配符是一类键盘字符,*
(星号) 就是较为常用的通配符之一,可以使用 *
代替零个、单个或多个字符。 使用 *
通配符最大的优点就是,当不明确需要检索的列名时,可以通过检索所有列名来确定。
语法:
我们可以通过下面的实例来感受一下 **SELECT *** 的用法。
假如我们要查询课程表 courses
中的所有数据 。
我们可以使用下面的 SQL 语句:
其中
*
表示所有列,是一种便捷式写法- FROM 关键字指出从哪个表中检索数据
执行输出结果:
请通过下面SELECT * 实例——查询所有课程,去实操一下吧!
经过上面的知识学习,我们可以发现 SELECT 语句会返回所有匹配的行,有时候会遇到数据相同的情况。如果我们只想知道有哪些不同的值,即希望查询的值都是唯一不重复的,我们该怎么办呢?这时候我们就需要用到 DISTINCT
关键字。
语法:
提示: DISTINCT 关键字需位于列名之前。
我们可以通过下面的实例来感受一下 SELECT DISTINCT 的用法。
假如我们想了解课程表 courses
中的授课教师有哪些,并查询教师的编号。
我们可以使用下面的 SQL 语句:
执行输出结果:
通过结果我们可以了解到,编号 4、编号 3 和编号 1 的三位教师会在本学期给学生上课。
请通过下面SELECT DISTINCT 实例——查询授课教师编号,去实操一下吧!
Check the nationality of all teachers
在大多数情况下,我们只希望留下感兴趣的行而过滤掉不感兴趣的行,这时我们可以使用 WHERE
子句来帮助我们。SELECT WHERE
语句是筛选查询很重要的操作,WHERE
关键字后面加上条件可以过滤掉我们不需要信息,对查询效率有着很大的提高。
在使用 SELECT WHERE
语句检索表数据时,需要给出检索的表名 (table_name)、检索的列名 (column_name) 和操作符 (operator) 。
语法: