【SQL高频练习带刷】day1:基础查询

题目一:可回收且低脂的产品

题目要求:

编写解决方案找出既是低脂又是可回收的产品编号。

返回结果 无顺序要求 。

表结构:

 运行结果示例:

思路:

使用where子句限定查询条件即可

运行代码示例:

select product_id
from Products
where low_fats = 'Y' and recyclable = 'Y'

题目二:寻找用户推荐人

题目要求:

找出那些 没有被 id = 2 的客户 推荐 的客户的姓名。

以 任意顺序 返回结果表。

表结构:

运行结果示例:

思路:

这道题目本身比较简单,考察了where子句中的不等于的用法。但是仔细观察示例后就可以发现,存在referee_id为null的情况,我们在直接运行SELECT name FROM customer WHERE referee_Id <> 2;这句代码时,也只能查询到Zack这一个人,不会查询到referee_id为null的情况。因此我们需要额外对这种情况进行考虑,也就是在where子句中额外加入referee_id is null的情况。需要注意对null的判断要用is 或is not,而不是= 、!=。

运行代码示例: 

SELECT name FROM customer WHERE referee_id != 2 OR referee_id IS NULL;

题目三:大的国家

题目要求:

如果一个国家满足下述两个条件之一,则认为该国是 大国 :

  • 面积至少为 300 万平方公里(即,3000000 km2),或者
  • 人口至少为 2500 万(即 25000000

编写解决方案找出 大国 的国家名称、人口和面积。

按 任意顺序 返回结果表。

表结构:

运行结果示例:

思路:

这道题目也非常简单,只需要用where子句查询符合条件的数据即可,查询条件之间使用or连接

运行代码示例: 

select name,population,area
from World
where area >= 3000000 or population >= 25000000

题目四:文章浏览

题目要求:

请查询出所有浏览过自己文章的作者

结果按照 id 升序排列。

查询结果的格式如下所示:

表结构:

运行结果示例:

思路:

这道题需要查询出viewer_id 和author_id相同的行,需要注意的是1)结果要使用distinct关键字去重;2)对查询出的结果列使用as关键字起别名为id;3)结果按照id进行排序。这里我们可以使用子查询,比较viewer_id 和author_id是否相同,也可以使用where viewer_id = author_id直接进行判断。

运行代码示例: 

select DISTINCT viewer_id as id
from Views 
where viewer_id in (select author_id  from Views)
order by viewer_id

题目五:无效的推文

题目要求:

查询所有无效推文的编号(ID)。当推文内容中的字符数严格大于 15 时,该推文是无效的。

以任意顺序返回结果表。

表结构:

运行结果示例:

思路:

该题需要我们统计content字段中数据的长度,我们可以直接使用length()函数进行统计。

运行代码示例: 

select tweet_id from Tweets where length(content) >15
  • 拓展知识点:

1、char_length(str)
(1)计算单位:字符
(2)不管汉字还是数字或者是字母都算是一个字符
2、length(str)
(1)计算单位:字节
(2)utf8编码:一个汉字三个字节,一个数字或字母一个字节。
(3)gbk编码:一个汉字两个字节,一个数字或字母一个字节。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值