查询、过滤、排序

在前面我们已经导入了一些country.sql的数据库,接下来我们会通过操作该数据库来学习SQL的查询、过滤、排序等方面的具体知识。数据库的查询、过滤(筛选)、排序可以结合我们购物时的场景来理解。

  • 查询:比如我想买手机,我们点击进所有手机的列表页,其实就是数据库执行了查询并把查询的所有手机显示出来;
  • 过滤(筛选):所有的手机范围有点广,我想指定一些条件,比如要买的是iphone,价格在1万以内,必须是京东配送,等等条件的设定,就是一个数据库在执行筛选的过程;模糊搜索精确搜索也是过滤
  • 排序:我希望根据手机的价格、销售量、评论数、好评率等等进行一个排序,其实也就是数据库在执行排序的过程

显示所有数据

首先我们需要知道country.sql数据库的字段都代表了什么意思,这样我们才好结合实际的数据来理解,下面列举下面会使用到的字段所代表的意思。

  • Country:国家
  • Population:人口
  • Area:面积
  • PopDensity:人口密度
  • Region:地区
  • GDP:人均GDP
  • Birthrate:出生率
  • Deathrate:死亡率

比较运算符

数据库的比较运算符有等于=,大于>,小于<,大于等于>=,小于等于<=,不等于!=,除了不等于大家可能会陌生以外,其他相信大家都非常熟悉啦。

查询数据表的某一项数据

比如我们想查询中国的人口数量,我们了解到关于人口的数据在population列,而国家在country列。

大家可以记住这样的格式:

  • select后面都是加的是字段,比如population,表示选择这一列数据;
  • from后面加的是数据表,比如country,表示是从country这张数据表里筛选数据;
  • where后面加的是条件,country = ‘China’就是条件,而这里的country是字段名哦。

我们也可以类比该命令,查询中国的国民生产总值、面积、所在地区

根据条件查询数据

查询国土面积大于500万平方公里的国家,Where语句

BETWEEN运算符

BETWEEN运算符也是比较运算符,它的意思和单词一样,就是在两个数值之间,比如 BETWEEN 2 AND 5,意思就是在2和5之间的数值。

有BETWEEN运算符,也有NOT BETWEEN运算符,这两个是一组,而NOT BETWEEN运算符的意思就是就是不在2和5之间的啦。

我们也可以设置其他的条件,比如查询国土面积在20万平方公里到50万平方公里的国家,并显示这些国家的人口、人均GDP

逻辑运算符AND与OR

AND运算符

两个条件都成立,也就是要求满足两个条件的数据,我们会使用到AND运算符。

比如我们要查询国土面积在100万平方公里以上,人口在1000万以上的国家:

OR运算符

我们发现有24个国家,如果我们把条件放宽,也就是我们要查询国土面积在100万平方公里以上或者人口在1000万以上的国家:

显示会有85个国家满足条件。

IN运算符

查询指定数据的其他数据

IN运算符也是比较运算符的一种,可以用来指定某些数值。

比如我们要指定查询中国、日本、美国、法国国家的人均GDP、人口密度

IN运算符表示在集合中,大家可以对比上面的案例来理解,有IN运算符也有NOT IN运算符,这两个是一组,NOT IN运算符的意思就是不在这个集合中啦。

LIKE运算符

查询以某个字母开头的数据

比如我们要查询所有以C开头的国家有哪些

数据的排序 ORDER BY

ORDER BY用于对查询到的结果进行排序。

根据某一列来排序

比如我们希望查看一下世界各国国土面积的排名,

我们发现为什么没有按照国土面积来排序,因为国土面积的格式是文本,所以排序的时候是以第一个数字的大小来排序,我们需要转换area字段的格式,

再来执行排序的命令~

ORDER BY DESC实现降序

但是我希望排序是国土面积最大的在前面,也就是不是按照顺序,而是降序来排列,该怎么处理呢?

SQL函数

SQL 拥有很多可用于计数和计算的内建函数,这个和Excel有很多内置函数是一样的。常用的函数有:

  • SUM()函数:求指定字段的总和;
  • MIN()函数:求指定字段的最小值;
  • MAX()函数:求指定字段的最大值;
  • AVG() 函数:返回平均值
  • COUNT() – 返回行数

我们想查看统计一下世界各国的人口总量

本节任务

  1. 了解查询、过滤、排序所对应的SQL语句;
  2. 掌握通过比较运算符、BETWEEN运算符、逻辑运算符、IN运算符、LIKE运算符来过滤筛选数据;
  3. 掌握数据查询结果的顺序和降序排序;
  4. 了解基础的SQL函数;