购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 简单查询

这个类型的题目主要考查的是SQL基础知识,是面试中比较基础的考题。

考查知识点:

· 基本查询语句如何写?

· 数据清洗常用的SQL语句如何写?例如查找空值(缺失值)、重命名列名、去掉重复数据等。

· SQL语句的书写规则是什么?

3.1.1 基本查询语句如何写

“查询”是SQL最基础的语句,也是学习SQL的入门之选。本节你将学习到如何用正确的SQL语句的书写规则去查询表中的数据,并对表中字段进行简单的处理,如字段的重命名、删除重复数据、字段的合并等。

SQL基本查询语句的语法如下:

· select表示查询结果。

· from表示从哪个表中查找数据。

· where表示查询条件。

3.1.2 数据清洗常用的SQL语句如何写

1.查找空值(缺失值)

在实际的数据处理场景中,经常会遇到数据为空值的情况,如何用SQL查找出空值呢?

在SQL中,is null语句用于查询空值,如果表中某一列中的数据值为空值,则表示满足查询条件。相反,is not null语句用于查询非空值,如果表中某一列中的数据值不是空值,则表示满足查询条件。

面试题1:查找空值

【题目】

在表3.1中,找出姓名为空值和不为空值的教师信息。

表3.1 教师表

【解题思路】

找出姓名为空值的教师信息,SQL语句的书写方法如下:

查询结果如表3.2所示。

表3.2 姓名为空值的教师信息

找出姓名不为空值的教师信息,SQL语句的书写方法如下:

查询结果如表3.3所示。

表3.3 姓名不为空值的教师信息

2.重命名列名

需要在select子句中给对应列名用as关键字来定义一个新列名,语法如下:

3.去掉重复数据

(1)在使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,有时候,需要根据业务场景,对数据进行去重后分析。

想要在SQL查询结果中去掉重复数据,需要用到distinct关键字,语法如下:

在使用distinct关键字去掉重复数据时,需要特别注意:distinct语法规定,在对单字段、多字段去重时,必须放在第一个查询字段前。

例如,在学生表中,去掉学号和姓名重复的数据,若SQL语句书写为:

运行后会提示语法错误,正确的SQL语句的写法为:

(2)如果对表中多列字段进行去重,那么去重的过程就是将多字段作为整体去重,比如上面的例子,我们将“学号”和“姓名”作为整体进行去重(也就是某一行数据中的学号、姓名数据都相同时,才算作重复数据)。

面试题2:电商用户行为

【题目】

某电商公司在网上开店铺,该公司的“用户行为表”如表3.4所示。

表3.4 用户行为表

续表

【字段解释】

· 访客id:进入店铺浏览商品的用户。

· 浏览日期:访客进入店铺浏览页面的日期。

· 浏览时长:访客进入店铺浏览页面的时长。

现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算作一次记录)。

【解题思路】

根据题目中的业务场景,需要同时根据“访客id”“浏览日期”去掉重复数据,也就是某一行数据中的访客id、浏览日期数据都相同时,才算作重复数据(每个访客同一天浏览多次算作一次记录)。

SQL语句的书写方法如下:

查询结果如表3.5所示。

表3.5 查询店铺里每个访客和对应的浏览日期

续表

面试题3:简单的数据查询

【题目】

表3.6所示为某电商公司的“用户购买信息表”,你作为公司的业务人员,为了更好地分析数据,要求对数据做以下处理。

(1)剔除表中重复的购买记录。

(2)查询表中数据是否有空值的记录。

(3)将列“用户行为发生时间”重命名为“用户交易时间”。

表3.6 用户购买信息表

【解题思路】

(1)剔除表中重复的购买记录。剔除重复记录可以用distinct关键字来实现,SQL语句的书写方法如下:

(2)查询表中数据是否有空值的记录。查找空值我们使用运算符中的空值查询语句is null,SQL语句的书写方法如下:

查询结果如表3.7所示。

表3.7 查询表中数据是否有空值的记录

(3)将列“用户行为发生时间”重命名为“用户交易时间”。给列名重命名(也就是起别名)需要用到SQL关键字as,SQL语句的书写方法如下:

查询结果如表3.8所示。

表3.8 重命名列名的结果

续表

【本题考点】

本题考查SQL基本查询内容,考查知识点如下。

(1)用is null语句来查询空值。

(2)用as关键字对字段进行重命名(起别名)。

(3)用distinct关键字去掉重复数据。

3.1.3 SQL语句的书写规则是什么

下面总结了常用的SQL语句的书写规范。

(1)SQL语句以英文分号(;)结尾。

SQL语句中用英文分号(;)表示本条语句结束,就像中文讲完一段话用句号(。)表示句子的结束一样。如果不加英文分号,那么在单条语句中,程序可以运行不会报错,但是在多条语句中,程序会误以为是一条语句来执行,结果就会报错。

(2)SQL语句不区分英文语句的大小写。

SQL语句中,部分英文语句为数据库中事先定义的、有特殊意义的单词(如select、and、from等),比如,我们对“学生表”用select语句来查询,在代码中可以写成“SELECT”或者“Select”,对运行结果都没有影响,可根据个人习惯进行书写。

(3)列名不能加单引号,同时列名命名时不能有空格。

列名与字符串是两个完全不同的概念,在查询列名时,不能加单引号,如:

运行之后,SQL一定会报错,有兴趣的读者可以尝试运行一下。

这同时也要求在给列名命名时,列名里不能有空格,比如列名“姓名”,在“姓”和“名”之间加了空格,这在SQL中是没有办法区分的。

(4)使用英文符号。

在使用SQL语言时,所有用到的符号都需要是英文符号,即输入法在英文状态下输入的各类符号,这样程序运行才不会报错。有些时候,英文符号和中文符号用肉眼很难分辨,但是只要你足够认真仔细,就能够发现二者之间微小的区别,如图3.1所示。

图3.1 中英文符号的细节差异

掌握了基本的书写规则,既可以规避书写中带来的问题,又可以写出清晰优雅的代码,为SQL的运行保驾护航。 232dqBn/jhwAucgDNJophUIrAxyPVwZy0BEsh7g+SBk0itR39TCwaxuL1KRj3UF0

点击中间区域
呼出菜单
上一章
目录
下一章
×