🎈写在前面
🙋♂️大家好呀,我是超梦。大家可以叫我小梦~
小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL。
🙋♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无不言,言无不尽。
目录
🎈写在前面
📕SQL题目概述
📕解题思路
📕方法实现
📒方法一 —— 使用or
📒方法二 —— 使用union
📕代码测试
📒方法一
📒方法二
📕知识点小结
📒union与union all的区别
📕SQL题目概述
World
表:+-------------+---------+ | Column Name | Type | +-------------+---------+ | name | varchar | | continent | varchar | | area | int | | population | int | | gdp | int | +-------------+---------+
World 表: +-------------+-----------+---------+------------+--------------+ | name | continent | area | population | gdp | +-------------+-----------+---------+------------+--------------+ | Afghanistan | Asia | 652230 | 25500100 | 20343000000 | | Albania | Europe | 28748 | 2831741 | 12960000000 | | Algeria | Africa | 2381741 | 37100000 | 188681000000 | | Andorra | Europe | 468 | 78115 | 3712000000 | | Angola | Africa | 1246700 | 20609294 | 100990000000 | +-------------+-----------+---------+------------+--------------+
name 是这张表的主键。
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。如果一个国家满足下述两个条件之一,则认为该国是 大国 :
面积至少为 300 平方公里(即,3000000 km2),或者
人口至少为 2500 万(即 25000000)编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。按 任意顺序 返回结果表。
查询结果格式如下例所示。
输出: +-------------+------------+---------+ | name | population | area | +-------------+------------+---------+ | Afghanistan | 25500100 | 652230 | | Algeria | 37100000 | 2381741 | +-------------+------------+---------+
📕解题思路
这道题算是很简单的一道题了,小伙伴们可以练练手
题目要查出面积至少为 300 平方公里(即,3000000 km2),或者人口至少为 2500 万(即 25000000)的国家来,并按照题目要求格式输出。题目中给出两个条件就不难得知我们需要用where子句来做条件限定,把上述条件加到where子句后就可以——》...from world where area >= 3000000 or population >= 25000000。
📕方法实现
📒方法一 —— 使用or
我们首先使用where子句,根据题目中要求的两个条件来过滤记录。
条件:面积超过 300 万平方公里。人口超过 2500 万。
因为题目说满足其中一条就可以,那我们可以使用or来连接两个条件。
题解:
SELECTname, population, area FROMworld WHEREarea >= 3000000 OR population >= 25000000;
📒方法二 —— 使用union
我们可以根据题目要求的两个条件分别做查询。
条件1:面积超过 300 万平方公里
SELECT name, population, area FROM world WHERE area > 3000000;
条件2:人口超过 2500 万
SELECT name, population, area FROM world WHERE population > 25000000;
然后我们再通过union来连接这两个查询(文章知识点小结部分会有对union以及union all的简单讲解,小伙伴们记得查缺补漏哦~)
题解:
SELECT name, population, area FROM world WHERE area > 3000000UNIONSELECT name, population, area FROM world WHERE population > 25000000;
📕代码测试
📒方法一
SELECTname, population, area FROMworld WHEREarea >= 3000000 OR population >= 25000000;
执行代码,进行测试
与预期结果一致,测试成功!
📒方法二
SELECT name, population, area FROM world WHERE area > 3000000UNIONSELECT name, population, area FROM world WHERE population > 25000000;
执行代码,进行测试
与预期结果一致,测试成功!
📕知识点小结
📒union与union all的区别
1. union对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
2. union all对两个结果集进行并集操作,包括重复行,不进行排序;
扩展知识:
我们可以在最后一个结果集中,通过指定Order by子句来改变排序方式。
😀感谢小伙伴们,如果有什么疑问,欢迎留言询问,小梦定知无不言,言无不尽!