史上最全SQL学习指南(教程+实例+练习题)

报告称,未来10年数据细分岗位将扩张5倍,大数据19w的人才缺口将继续增加。国内外一线互联网公司纷纷开设了数据分析岗位。
在这里插入图片描述
数据分析岗位中用的最频繁的工具就是SQL了。不论是满足业务日常取数需求,还是自己做分析,都离不开SQL。

最近,有不少想接触数据分析的同学,都在咨询系统学习SQL。如何学、怎么学、在哪学成了大家普遍的问题。

我们在领扣上新的SQL教程刚好能帮你解决这些问题!教程+实例+练习题,学过的人都反馈极高,最最重要是免费的!而且相信我,任何一个会基本数学运算的同学,从零开始搞定SQL只需五天。

那么,现在我们开始吧~ 学习SQL分成这样5个阶段
(ps:你也可以直接转战SQL教程~

阶段一:Hello SQL

1、简单的select语句

①使用 SELECT COLUMN 查询单个列

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 语句可以直接检索表中所有信息,即检索所有的列。这可以通过在列名的位置使用星号*通配符来实现,输出的列的顺序一般是列在表定义中出现的物理顺序。

通配符是一类键盘字符,* (星号) 就是较为常用的通配符之一,可以使用 * 代替零个、单个或多个字符。 使用 * 通配符最大的优点就是,当不明确需要检索的列名时,可以通过检索所有列名来确定。

语法:
在这里插入图片描述
我们可以通过下面的实例来感受一下 **SELECT *** 的用法。

假如我们要查询课程表 courses 中的所有数据 。

我们可以使用下面的 SQL 语句:
在这里插入图片描述
其中

  • * 表示所有列,是一种便捷式写法
  • FROM 关键字指出从哪个表中检索数据

执行输出结果:
在这里插入图片描述
请通过下面SELECT * 实例——查询所有课程,去实操一下吧!

查询所有课程

查询所有老师

④使用 SELECT DISTINCT 查询不同行

经过上面的知识学习,我们可以发现 SELECT 语句会返回所有匹配的行,有时候会遇到数据相同的情况。如果我们只想知道有哪些不同的值,即希望查询的值都是唯一不重复的,我们该怎么办呢?这时候我们就需要用到 DISTINCT 关键字。

语法:
在这里插入图片描述
提示: DISTINCT 关键字需位于列名之前。

我们可以通过下面的实例来感受一下 SELECT DISTINCT 的用法。

假如我们想了解课程表 courses 中的授课教师有哪些,并查询教师的编号。

我们可以使用下面的 SQL 语句:
在这里插入图片描述
执行输出结果:
在这里插入图片描述
通过结果我们可以了解到,编号 4、编号 3 和编号 1 的三位教师会在本学期给学生上课。

请通过下面SELECT DISTINCT 实例——查询授课教师编号,去实操一下吧!

查询授课教师编号

Check the nationality of all teachers

⑤使用 SELECT WHERE 对行进行筛选过滤

在大多数情况下,我们只希望留下感兴趣的行而过滤掉不感兴趣的行,这时我们可以使用 WHERE 子句来帮助我们。SELECT WHERE 语句是筛选查询很重要的操作,WHERE 关键字后面加上条件可以过滤掉我们不需要信息,对查询效率有着很大的提高。

在使用 SELECT WHERE 语句检索表数据时,需要给出检索的表名 (table_name)、检索的列名 (column_name) 和操作符 (operator) 。

语法:

  • 15
    点赞
  • 159
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值