• SQL每日一练(牛客新题库)——第1天: 基础查询


    1. 查询所有列

    题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果

    在这里插入图片描述

    建表语句

    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题答案

    -- 写法一
    SELECT * from user_profile;
    -- 写法2
    SELECT id,device_id,gender,age,university,province from user_profile; 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2. 查询多列

    题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据
    在这里插入图片描述

    建表语句

    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题答案

    SELECT  device_id,gender,age,university from user_profile
    
    • 1

    在这里插入图片描述

    3. 查询结果去重

    题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。

    在这里插入图片描述

    建表语句

    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题答案

    -- 1. 使用DISTINCT:
    SELECT DISTINCT university from user_profile;
    -- 2. 使用group by:
    SELECT university from user_profile GROUP BY university; 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4. 查询结果限制返回行数

    题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题答案

    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  limit 2 
    select device_id FROM user_profile limit 0,2 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5. 将查询后的列重新命名

    题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 ‘user_infos_example’,,请你从用户信息表取出相应结果。
    在这里插入图片描述

    建表语句

    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解题答案

    select device_id as user_infos_example from user_profile limit 0, 2;
    
    • 1

    在这里插入图片描述

    6. 如何让刷题变得更高效?

    最近很多学了基础的小伙伴问我该怎么提升编程水平?学了基础该上哪刷题?明明学了很多,做项目却不知道怎么上手,其实这就是练得太少,只注重了学,却忽视了刷题,只有不断练习才能提高和巩固编程思维和能力!
    在这里插入图片描述
    链接地址牛客网 | SQL刷题篇,废话少说速度上号!!!

  • 相关阅读:
    《Vue.js+Spring Boot全栈开发实战》简介
    web网页制作期末大作业HTML5+CSS大作业——游戏明星介绍(5页) 网页设计模板
    一次偶然的钓鱼文件分析
    Linux:初识awk
    【入门Flink】- 08Flink时间语义和窗口概念
    计算机网络分层结构
    【深入浅出imx8企业级开发实战 | 02】Yocto工程repo源码gitee加速配置方法
    亨利气体溶解度优化算法(Matlab代码实现)
    androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边
    异步编程规避Redis的阻塞(中)
  • 原文地址:https://blog.csdn.net/yuan2019035055/article/details/125710905