?🎈写在前面
🙋?♂?大家好呀,我是超梦。大家可以叫我小梦~
小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的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来连接两个条件。
题解:
SELECT
name, population, area
FROM
world
WHERE
area >= 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 > 3000000
UNION
SELECT name, population, area FROM world WHERE population > 25000000;
📕代码测试
📒方法一
SELECT
name, population, area
FROM
world
WHERE
area >= 3000000 OR population >= 25000000;
?执行代码,进行测试
与预期结果一致,测试成功!
📒方法二
SELECT name, population, area FROM world WHERE area > 3000000
UNION
SELECT name, population, area FROM world WHERE population > 25000000;
?执行代码,进行测试
?与预期结果一致,测试成功!
📕知识点小结
📒union与union all的区别
?1. union对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
2. union all对两个结果集进行并集操作,包括重复行,不进行排序;
扩展知识:
我们可以在最后一个结果集中,通过指定Order by子句来改变排序方式。
😀感谢小伙伴们,如果有什么疑问,欢迎留言询问,小梦定知无不言,言无不尽!
|