牛客SQL练习详解 01:基础查询


叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

1、基础查询

sql1 查询所有列

题目:
现在运营想要查看用户信息表中所有的数据,
请你取出相应结果
select * from user_profile;
尽管使用SELECT *可以选择所有数据,但是不建议在SQL查询中经常使用它,
原因如下:

性能问题:
使用SELECT *可能会导致性能下降。
因为当你使用SELECT *时,数据库必须读取整个表中的所有列,即使你只需要其中的一部分数据。
这会导致查询所需的时间和资源增加,从而导致查询变慢。

易出错:
使用SELECT *可能会导致意外的结果。
因为当你使用SELECT *时,你可能会意外地选择到你不需要的列,甚至是一些不必要的敏感数据。
因此,建议明确指定需要的列。

可读性:
使用SELECT *可能会降低查询的可读性。
因为当你使用SELECT *时,读取代码的人可能不知道查询将返回哪些列,从而使代码更难以理解和维护。

综上所述,
虽然SELECT *可以选择所有数据,但在SQL查询中最好不要经常使用它,建议明确指定需要的列。
这可以提高查询性能,避免意外的结果,并提高代码的可读性。

在这里插入图片描述

sql2 查询多列

题目:
现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,
请你取出相应数据
select device_id, gender, age, university 
from user_profile;

在这里插入图片描述

2、简单处理查询

sql3 查询结果去重

题目:
现在运营需要查看用户来自于哪些学校,
请从用户信息表中取出学校的去重数据。
两个解法:
1. 使用DISTINCT:
        SELECT DISTINCT university from user_profile;
2. 使用group by:
        SELECT university from user_profile GROUP BY university;
distinct和group by区别:

distinct 只能放在查询字段的最前面,不能放在查询字段的中间或者后面。
distinct 对后面所有的字段均起作用,即 去重是查询的所有字段完全重复的数据,而不是只对 distinct 后面连接的单个字段重复的数据。
要查询多个字段,但只针对一个字段去重,使用distinct去重的话是无法实现的。

group by 一般与聚类函数使用(如count()/sum()等),也可单独使用。
group by 也对后面所有的字段均起作用,即 去重是查询的所有字段完全重复的数据,而不是只对 group by后面连接的单个字段重复的数据。
查询的字段与group by 后面分组的字段没有限制。
(在oracle中使用group by时,查询的字段必须是group by 分组的字段和聚类函数。)

在这里插入图片描述

sql4 查询结果限制返回行数

题目:
现在运营只需要查看前2个用户明细设备ID数据,
请你从用户信息表 user_profile 中取出相应结果。
多种解法:
select device_id from user_profile limit 2;
select device_id from user_profile limit 0,2;
select device_id from user_profile limit 2 offset 0;
select device_id from user_profile where id in(1,2);
select device_id from user_profile where id <=2;
select device_id from user_profile where id=1 or id=2;
知识补充:
--LIMIT n:从第0+1(m=0)条开始,取n条数据,是LIMIT 0,n的缩写
--LIMIT m,n:从第m+1条开始,取n条数据
--LIMIT n OFFSET m:跳过m个数据,从第m+1条开始,取n条数据

在这里插入图片描述

sql5 将查询后的列重新命名

题目:
现在你需要查看前2个用户明细设备ID数据,
并将列名改为 'user_infos_example',
请你从用户信息表取出相应结果。
多种解法:
select device_id AS user_infos_example from user_profile limit 0,2;
select device_id  user_infos_example from user_profile limit 0,2;
可加as起别名,也可不加直接起别名。

需要注意的是,这里的重命名仅仅针对本次查询有效,并不更改原始表的内容

在这里插入图片描述

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
人生在勤,不索何获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发芽ing的小啊呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值