回城传送–》《32天SQL筑基》
今天是学习 SQL 打卡的第1天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 )。
希望大家先自己思考,如果实在没有想法,再看下面的解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了,养成每天学习打卡的好习惯。
虚竹哥会组织大家一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。
我的学习策略很简单,题海策略+ 费曼学习法。如果能把这些题都认认真真自己实现一遍,那意味着 SQL 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。
今天的学习内容是:基础查询
题目链接 | 难度 |
---|---|
SQL2 查询多列 | ★☆☆☆☆ |
SQL3 查询结果去重 | ★☆☆☆☆ |
SQL4 查询结果限制返回行数 | ★☆☆☆☆ |
SQL5 将查询后的列重新命名 | ★☆☆☆☆ |
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');
1、运营同学想要用户的设备id对应的性别、年龄和学校的数据,只需要列这几个字段就行,通常我们在写查询语句时,千万不要写
select * from table_name
这种是很耗时,耗性能的。
select
device_id,
gender,
age,
university
from
user_profile
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');
1、这题有两种解法,一个是使用去重关键词:distinct
select distinct university from user_profile;
2、第二种解法是使用分组,对某个字段分组,也是有去重效果。
关键词: group by
select university from user_profile group by university;
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');
1、第一种解法:要取前2条数据,如果只是如表中的数据,可以取id<=2的数据
select device_id from user_profile where id<=2
2、第二种解法:使用mysql的 limit 关键字。只给定一个参数,它表示返回最大的记录行数目。( limit m 检索前 m 个记录行)
select device_id from user_profile limit 2
3、第三种解法:使用mysql的 limit 关键字。第一个参数指定第一个返回记录行的偏移量(偏移量是 0 ),第二个参数指定返回记录行的最大数目。
select device_id from user_profile limit 0,2
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');
第一种解法:使用关键词:AS
select device_id as user_infos_example from user_profile limit 0,2
第二种解法:
select 旧列名 新列名 from table_name
select device_id user_infos_example from user_profile limit 0,2
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://xiaoxuzhu.blog.csdn.net/article/details/125923181
内容来源于网络,如有侵权,请联系作者删除!