• 数据库系统原理与应用教程(059)—— MySQL 练习题:操作题 1-10(三)


    数据库系统原理与应用教程(059)—— MySQL 练习题:操作题 1-10(三):SELECT 基础语法

    1、基础查询(1):查询表中的所有列

    题目:要查看用户信息表中所有的信息,编写 SQL 语句取出相应结果。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学Zhejiang
    55432male25山东大学Shandong

    表结构及数据如下:

    /*
    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
    • 14
    • 15

    解答:

    -- 使用 *
    mysql> select * from user_profile;
    +----+-----------+--------+------+--------------+----------+
    | id | device_id | gender | age  | university   | province |
    +----+-----------+--------+------+--------------+----------+
    |  1 |      2138 | male   |   21 | 北京大学     | BeiJing  |
    |  2 |      3214 | male   | NULL | 复旦大学     | Shanghai |
    |  3 |      6543 | female |   20 | 北京大学     | BeiJing  |
    |  4 |      2315 | female |   23 | 浙江大学     | ZheJiang |
    |  5 |      5432 | male   |   25 | 山东大学     | Shandong |
    +----+-----------+--------+------+--------------+----------+
    5 rows in set (0.00 sec)
    
    -- 使用字段列表
    mysql> select id, device_id, gender, age, university, province  from user_profile;
    +----+-----------+--------+------+--------------+----------+
    | id | device_id | gender | age  | university   | province |
    +----+-----------+--------+------+--------------+----------+
    |  1 |      2138 | male   |   21 | 北京大学     | BeiJing  |
    |  2 |      3214 | male   | NULL | 复旦大学     | Shanghai |
    |  3 |      6543 | female |   20 | 北京大学     | BeiJing  |
    |  4 |      2315 | female |   23 | 浙江大学     | ZheJiang |
    |  5 |      5432 | male   |   25 | 山东大学     | Shandong |
    +----+-----------+--------+------+--------------+----------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2、基础查询(2):查询多列

    题目:要查询用户的设备 id 对应的性别、年龄和学校信息,请你取出相应数据,编写 SQL 语句取出相应结果。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学Zhejiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_idgenderageuniversity
    2138male21北京大学
    3214male复旦大学
    6543female20北京大学
    2315female23浙江大学
    5432male25山东大学

    解答:

    mysql> select device_id, gender, age, university  from user_profile;
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      2138 | male   |   21 | 北京大学     |
    |      3214 | male   | NULL | 复旦大学     |
    |      6543 | female |   20 | 北京大学     |
    |      2315 | female |   23 | 浙江大学     |
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、基础查询(3):查询结果去重

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

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    university
    北京大学
    复旦大学
    浙江大学
    山东大学

    解答:

    mysql> select distinct university from user_profile;
    +--------------+
    | university   |
    +--------------+
    | 北京大学     |
    | 复旦大学     |
    | 浙江大学     |
    | 山东大学     |
    +--------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4、基础查询(4):限制查询结果返回的行数

    题目:要查看前 2 个用户的设备ID数据,从用户信息表 user_profile 中取出相应结果。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_id
    2138
    3214

    解答:

    mysql> select device_id from user_profile limit 2;
    +-----------+
    | device_id |
    +-----------+
    |      2138 |
    |      3214 |
    +-----------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5、基础查询(5):为查询到的列指定别名

    题目:要查看前 2 个用户的设备 ID,并将列名改为 ‘user_infos_example’,从用户信息表取出相应结果。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    user_infos_example
    2138
    3214

    解答:

    -- 不使用 as
    mysql> select device_id user_infos_example from user_profile limit 2;
    +--------------------+
    | user_infos_example |
    +--------------------+
    |               2138 |
    |               3214 |
    +--------------------+
    2 rows in set (0.01 sec)
    
    -- 使用 as
    mysql> select device_id as user_infos_example from user_profile limit 2;
    +--------------------+
    | user_infos_example |
    +--------------------+
    |               2138 |
    |               3214 |
    +--------------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    6、比较运算符(1):查询学校是【北京大学】的学生信息

    题目:要筛选出所有北京大学的学生信息,从用户信息表中取出满足条件的数据,返回设备 id 和学校。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_iduniversity
    2138北京大学
    6543北京大学

    解答:

    mysql> select device_id, university from user_profile where university = '北京大学';
    +-----------+--------------+
    | device_id | university   |
    +-----------+--------------+
    |      2138 | 北京大学     |
    |      6543 | 北京大学     |
    +-----------+--------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7、比较运算符(2):查询年龄大于 24 岁的用户信息

    题目:要查询 24 岁以上的用户信息,取出满足条件的设备 ID、性别、年龄、学校。

    用户信息表:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_idgenderageuniversity
    5432male25山东大学

    解答:

    mysql> select device_id, gender, age, university  from user_profile where age > 24;
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    1 row in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    8、比较运算符(3):查找某个年龄段的用户信息

    题目:要查询 20 岁及以上且 23 岁及以下的用户信息,取出满足条件的 设备ID、性别、年龄。

    用户信息表:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_idgenderage
    2138male21
    6543female20
    2315female23

    解答:

    -- 使用 between ... and ...
    mysql> select device_id, gender, age  from user_profile where age between 20 and 23;
    +-----------+--------+------+
    | device_id | gender | age  |
    +-----------+--------+------+
    |      2138 | male   |   21 |
    |      6543 | female |   20 |
    |      2315 | female |   23 |
    +-----------+--------+------+
    3 rows in set (0.01 sec)
    
    -- 使用比较运算符和逻辑运算符
    mysql> select device_id, gender, age  from user_profile where age >= 20 and age <= 23;
    +-----------+--------+------+
    | device_id | gender | age  |
    +-----------+--------+------+
    |      2138 | male   |   21 |
    |      6543 | female |   20 |
    |      2315 | female |   23 |
    +-----------+--------+------+
    3 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    9、比较运算符(4):查找除复旦大学以外的用户信息

    题目:要查看除复旦大学以外的所有用户信息,取出设备 id,性别,年龄,学校。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_idgenderageuniversity
    2138male21北京大学
    6543female20北京大学
    2315female23浙江大学
    5432male25山东大学

    解答:

    -- 使用 <>
    mysql> select device_id, gender, age, university from user_profile where university <> '复旦大学';
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      2138 | male   |   21 | 北京大学     |
    |      6543 | female |   20 | 北京大学     |
    |      2315 | female |   23 | 浙江大学     |
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    4 rows in set (0.00 sec)
    
    -- 使用 not
    mysql> select device_id, gender, age, university from user_profile where not university = '复旦大学';
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      2138 | male   |   21 | 北京大学     |
    |      6543 | female |   20 | 北京大学     |
    |      2315 | female |   23 | 浙江大学     |
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    10、比较运算符(5):过滤空值

    题目:要查看年龄不为空的用户,取出用户的设备ID,性别,年龄,学校信息。

    示例:user_profile 表的数据如下。

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学Shandong

    查询应返回以下结果:

    device_idgenderageuniversity
    2138male21北京大学
    6543female20北京大学
    2315female23浙江大学
    5432male25山东大学

    解答:

    -- 使用 age is not null
    mysql> select device_id, gender, age, university from user_profile where age is not null;
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      2138 | male   |   21 | 北京大学     |
    |      6543 | female |   20 | 北京大学     |
    |      2315 | female |   23 | 浙江大学     |
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    4 rows in set (0.00 sec)
    
    -- 使用 not age is null
    mysql> select device_id, gender, age, university from user_profile where not age is null;
    +-----------+--------+------+--------------+
    | device_id | gender | age  | university   |
    +-----------+--------+------+--------------+
    |      2138 | male   |   21 | 北京大学     |
    |      6543 | female |   20 | 北京大学     |
    |      2315 | female |   23 | 浙江大学     |
    |      5432 | male   |   25 | 山东大学     |
    +-----------+--------+------+--------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    react中的props的使用
    UE4 Niagara 关卡4.1官方案例解析
    摆动序列【贪心4】
    不同类型的物联网产品、物联网产品的优势
    Part 10:iOS的数据持久化(1),文件,归档
    matlab相机标定求得相机内参
    MySQL系列第一篇入门
    88. 合并两个有序数组 (Swift版本)
    《算法图解》阅读笔记
    异常处理流程
  • 原文地址:https://blog.csdn.net/weixin_44377973/article/details/126016653