本文概述
- 恢复PostgreSQL数据库
- 检查国家数据表
- Where子句示例
- 总结
你将使用PostgreSQL作为RDBMS(关系数据库管理系统), 但是使用其他数据库系统时, 语法没有太大变化。首先将还原具有相关表的PostgreSQL数据库, 然后执行包含where子句的几个过滤器查询。
注意:要继续学习本教程, 你必须熟悉SQL和PostgreSQL的基础知识。如果你不熟悉以下资源, 它们可能会有所帮助。
- PostgreSQL入门
- 在Windows和Mac OS X上安装PostgreSQL
创建数据库后, 右键单击它, 然后选择” 还原” 。应打开以下对话框-
文章图片
保持上图所示的设置。你将必须导航到数据库备份文件所在的路径。之后, 单击还原选项。备份将还原到你选择的数据库中。在表格部分下, 你应该看到表格国家/地区的条目-
文章图片
随时在表上执行选择查询以查看其内容。
检查国家数据表 以下是你刚刚还原的国家/地区表的快照-
文章图片
表格包含有关全球206个国家/地区的不同信息。该表包括以下列-
- 代码是表的主键, 表示给定国家/地区的通用国家/地区代码
- 名称, 即国家名称
- 一个国家所属的大陆
- 区域一个国家/地区的地理位置
- 国家的surface_area
- 独立年份, 即一个国家获得独立的年份
- 国家的本地名称
- gov_form, 即在一个国家/地区活跃的政府
- 一个国家的首都
- cap_long, 即一国首都的经度
- cap_lat, 即一国首都的纬度
Where子句示例 在SQL中, where子句可让你根据文本值和数字值过滤记录。你可以比较这些值, 并且支持以下基于比较的操作-
- =相等
- < > 和!=不等于
- < 小于
- > 大于
- < =小于或等于
- > =大于或等于
现在, 让我们获取代码为AUS的国家/地区的记录。你应在此处比较的列是代码列, 要比较的值是AUS。查询将是-
select * from countries where code = 'AUS';
然后你得到-
文章图片
注意这里的几件事-
- where子句始终来自。
- 在SQL中, 使用单引号引起来的字符串。
select * from countries where indep_year >
1901;
文章图片
你会获得总共145个国家的记录, 这些国家在1900年之后获得了独立。请注意此处使用的比较器。 indep_yearcolumn是整数。因此, 比较中没有引号。
你可以使用AND和OR连接词在where子句中连接多个条件。通过以下查询, 你可以获取大洲=” 亚洲” 且indep_year> 1900的国家/地区的记录-
select * from countries where continent = 'Asia' and indep_year >
1900;
文章图片
你获得有关位于亚洲大陆并在1900年后获得独立的总共42个国家的信息。请注意, 在上述查询中, 你比较了文本值和数字值。作为练习, 你在where子句中使用AND和OR的不同组合进行游戏。
【SQL Where子句用法简介】注意:合并AND和OR时, 请不要忘记将每个条件括在括号中。否则, SQL会混淆确定条件评估的优先级。
通过以下查询, 你总共可以得到66个国家/地区, 条件为(大陆=’ 欧洲’ 并且indep_year> 1900)或(大陆=’ 亚洲’ 并且indep_year> 1900)。
select * from countries where
(continent = 'Europe' and indep_year >
1900)
or
(continent = 'Asia' and indep_year >
1900);
文章图片
你甚至可以在where子句中连接两个以上的条件-
select * from countries where continent = 'Asia' or indep_year >
1900 or surface_area >
652090;
文章图片
你总共获得了165个位于亚洲大陆或在1900年后获得独立或表面积大于652090的国家的国家。现在将查询转换为其AND变体, 在其中将使用AND连接每个条件。
select * from countries where continent = 'Asia' and indep_year >
1900 and surface_area >
652090;
文章图片
在这种情况下, 你将总共获得9个国家/地区。
如果你多次比较同一列值, 则每次都必须指定列名。请参考以下查询-
select * from countries where indep_year = 1947 or indep_year = 1912;
但是查询从* indep_year = 1947或1912的国家中选择*;是错的。
你也可以在where子句中配对子查询。假设你要获取表面积最大的国家/地区的记录, 但是你不知道某个国家/地区获得的最大表面积是多少。在这种情况下, 可以使用以下查询进行救援-
select * from countries where surface_area in (select max(surface_area) from countries);
你应该获得俄罗斯的记录。
文章图片
总结 恭喜, 你已完成本教程。根据条件过滤查询结果绝对是一项至关重要的技能, 本教程向你介绍了它。如果你想进一步提高SQL技能, 可以查看以下srcmini课程-
- 在SQL中联接数据
- 用于探索性数据分析的SQL
推荐阅读
- 电子表格中的VLOOKUP进行数据整理
- Power BI和SQL用法实例
- 18个最常见的Python列表问题
- 将数据导入R(第二部分)
- 如何在R中使用ggvis制作直方图
- PostgreSQL中的10个命令行实用工具
- 构造函数继承--call,apply
- AndroidAlertDialog各种弹框代码
- Android 引导页的代码