• 数据库系统原理与应用教程(040)—— MySQL 查询(二):设置要查询的列名或表达式


    数据库系统原理与应用教程(040)—— MySQL 查询(二):设置要查询的列名或表达式

    在查询语句中可以指定所有的列(使用 *),可以指定需要显示的列,或者使用列名、运算符、函数等构造表达式。

    一、查询表中所有的列

    如果查询时要显示表中的所有列,可以使用(*)表示,可以把所有的列名写到 SELECT 后面,使用逗号(,)隔开。

    例如:

    -- 使用 * 表示所有列
    mysql> select * from student;
    +-------+-----------+---------------------+-------------+-----------+
    | s_id  | s_name    | birth               | phone       | addr      |
    +-------+-----------+---------------------+-------------+-----------+
    | S2011 | 张晓刚    | 1999-12-03 00:00:00 | 13163735775 | 信阳市    |
    | S2012 | 刘小青    | 1999-10-11 00:00:00 | 13603732255 | 新乡市    |
    | S2013 | 曹梦德    | 1998-02-13 00:00:00 | 13853735522 | 郑州市    |
    | S2014 | 刘艳      | 1998-06-24 00:00:00 | 13623735335 | 郑州市    |
    | S2015 | 刘岩      | 1999-07-06 00:00:00 | 13813735225 | 信阳市    |
    | S2016 | 刘若非    | 2000-08-31 00:00:00 | 13683735533 | 开封市    |
    | S2021 | 董雯花    | 2000-07-30 00:00:00 | 13533735564 | 开封市    |
    | S2022 | 周华建    | 1999-05-25 00:00:00 | 13243735578 | 郑州市    |
    | S2023 | 特朗普    | 1999-06-21 00:00:00 | 13343735588 | 新乡市    |
    | S2024 | 奥巴马    | 2000-10-17 00:00:00 | 13843735885 | 信阳市    |
    | S2025 | 周健华    | 2000-08-22 00:00:00 | 13788736655 | 开封市    |
    | S2026 | 张学有    | 1998-07-06 00:00:00 | 13743735566 | 郑州市    |
    | S2031 | 李明博    | 1999-10-26 00:00:00 | 13643732222 | 郑州市    |
    | S2032 | 达芬奇    | 1999-12-31 00:00:00 | 13043731234 | 郑州市    |
    +-------+-----------+---------------------+-------------+-----------+
    14 rows in set (0.00 sec)
    
    -- 使用字段列表
    mysql> select s_id,s_name,birth,phone,addr from student;
    +-------+-----------+---------------------+-------------+-----------+
    | s_id  | s_name    | birth               | phone       | addr      |
    +-------+-----------+---------------------+-------------+-----------+
    | S2011 | 张晓刚    | 1999-12-03 00:00:00 | 13163735775 | 信阳市    |
    | S2012 | 刘小青    | 1999-10-11 00:00:00 | 13603732255 | 新乡市    |
    | S2013 | 曹梦德    | 1998-02-13 00:00:00 | 13853735522 | 郑州市    |
    | S2014 | 刘艳      | 1998-06-24 00:00:00 | 13623735335 | 郑州市    |
    | S2015 | 刘岩      | 1999-07-06 00:00:00 | 13813735225 | 信阳市    |
    | S2016 | 刘若非    | 2000-08-31 00:00:00 | 13683735533 | 开封市    |
    | S2021 | 董雯花    | 2000-07-30 00:00:00 | 13533735564 | 开封市    |
    | S2022 | 周华建    | 1999-05-25 00:00:00 | 13243735578 | 郑州市    |
    | S2023 | 特朗普    | 1999-06-21 00:00:00 | 13343735588 | 新乡市    |
    | S2024 | 奥巴马    | 2000-10-17 00:00:00 | 13843735885 | 信阳市    |
    | S2025 | 周健华    | 2000-08-22 00:00:00 | 13788736655 | 开封市    |
    | S2026 | 张学有    | 1998-07-06 00:00:00 | 13743735566 | 郑州市    |
    | S2031 | 李明博    | 1999-10-26 00:00:00 | 13643732222 | 郑州市    |
    | S2032 | 达芬奇    | 1999-12-31 00:00:00 | 13043731234 | 郑州市    |
    +-------+-----------+---------------------+-------------+-----------+
    14 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    二、查询所需的部分列

    把需要查询列依次写到 SELECT 后面,列名之间用逗号(,)隔开。

    例如:

    mysql> select s_id, s_name, birth from student;
    +-------+-----------+---------------------+
    | s_id  | s_name    | birth               |
    +-------+-----------+---------------------+
    | S2011 | 张晓刚    | 1999-12-03 00:00:00 |
    | S2012 | 刘小青    | 1999-10-11 00:00:00 |
    | S2013 | 曹梦德    | 1998-02-13 00:00:00 |
    | S2014 | 刘艳      | 1998-06-24 00:00:00 |
    | S2015 | 刘岩      | 1999-07-06 00:00:00 |
    | S2016 | 刘若非    | 2000-08-31 00:00:00 |
    | S2021 | 董雯花    | 2000-07-30 00:00:00 |
    | S2022 | 周华建    | 1999-05-25 00:00:00 |
    | S2023 | 特朗普    | 1999-06-21 00:00:00 |
    | S2024 | 奥巴马    | 2000-10-17 00:00:00 |
    | S2025 | 周健华    | 2000-08-22 00:00:00 |
    | S2026 | 张学有    | 1998-07-06 00:00:00 |
    | S2031 | 李明博    | 1999-10-26 00:00:00 |
    | S2032 | 达芬奇    | 1999-12-31 00:00:00 |
    +-------+-----------+---------------------+
    14 rows in set (0.00 sec)
    
    -- 列的顺序可以和表中列的顺序不一致
    mysql> select s_id, s_name, addr, phone from student;
    +-------+-----------+-----------+-------------+
    | s_id  | s_name    | addr      | phone       |
    +-------+-----------+-----------+-------------+
    | S2011 | 张晓刚    | 信阳市    | 13163735775 |
    | S2012 | 刘小青    | 新乡市    | 13603732255 |
    | S2013 | 曹梦德    | 郑州市    | 13853735522 |
    | S2014 | 刘艳      | 郑州市    | 13623735335 |
    | S2015 | 刘岩      | 信阳市    | 13813735225 |
    | S2016 | 刘若非    | 开封市    | 13683735533 |
    | S2021 | 董雯花    | 开封市    | 13533735564 |
    | S2022 | 周华建    | 郑州市    | 13243735578 |
    | S2023 | 特朗普    | 新乡市    | 13343735588 |
    | S2024 | 奥巴马    | 信阳市    | 13843735885 |
    | S2025 | 周健华    | 开封市    | 13788736655 |
    | S2026 | 张学有    | 郑州市    | 13743735566 |
    | S2031 | 李明博    | 郑州市    | 13643732222 |
    | S2032 | 达芬奇    | 郑州市    | 13043731234 |
    +-------+-----------+-----------+-------------+
    14 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    三、查询表达式

    1、常量

    mysql> select s_id,'name:' name, s_name from student;
    +-------+-------+-----------+
    | s_id  | name  | s_name    |
    +-------+-------+-----------+
    | S2011 | name: | 张晓刚    |
    | S2012 | name: | 刘小青    |
    | S2013 | name: | 曹梦德    |
    | S2014 | name: | 刘艳      |
    | S2015 | name: | 刘岩      |
    | S2016 | name: | 刘若非    |
    | S2021 | name: | 董雯花    |
    | S2022 | name: | 周华建    |
    | S2023 | name: | 特朗普    |
    | S2024 | name: | 奥巴马    |
    | S2025 | name: | 周健华    |
    | S2026 | name: | 张学有    |
    | S2031 | name: | 李明博    |
    | S2032 | name: | 达芬奇    |
    +-------+-------+-----------+
    14 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

    2、函数

    mysql> select s_id, s_name, birth, now() current_day from student;
    +-------+-----------+---------------------+---------------------+
    | s_id  | s_name    | birth               | current_day         |
    +-------+-----------+---------------------+---------------------+
    | S2011 | 张晓刚    | 1999-12-03 00:00:00 | 2022-07-20 15:47:17 |
    | S2012 | 刘小青    | 1999-10-11 00:00:00 | 2022-07-20 15:47:17 |
    | S2013 | 曹梦德    | 1998-02-13 00:00:00 | 2022-07-20 15:47:17 |
    | S2014 | 刘艳      | 1998-06-24 00:00:00 | 2022-07-20 15:47:17 |
    | S2015 | 刘岩      | 1999-07-06 00:00:00 | 2022-07-20 15:47:17 |
    | S2016 | 刘若非    | 2000-08-31 00:00:00 | 2022-07-20 15:47:17 |
    | S2021 | 董雯花    | 2000-07-30 00:00:00 | 2022-07-20 15:47:17 |
    | S2022 | 周华建    | 1999-05-25 00:00:00 | 2022-07-20 15:47:17 |
    | S2023 | 特朗普    | 1999-06-21 00:00:00 | 2022-07-20 15:47:17 |
    | S2024 | 奥巴马    | 2000-10-17 00:00:00 | 2022-07-20 15:47:17 |
    | S2025 | 周健华    | 2000-08-22 00:00:00 | 2022-07-20 15:47:17 |
    | S2026 | 张学有    | 1998-07-06 00:00:00 | 2022-07-20 15:47:17 |
    | S2031 | 李明博    | 1999-10-26 00:00:00 | 2022-07-20 15:47:17 |
    | S2032 | 达芬奇    | 1999-12-31 00:00:00 | 2022-07-20 15:47:17 |
    +-------+-----------+---------------------+---------------------+
    14 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3、表达式

    mysql> select s_id, s_name, birth, year(now())-year(birth) age from student;
    +-------+-----------+---------------------+------+
    | s_id  | s_name    | birth               | age  |
    +-------+-----------+---------------------+------+
    | S2011 | 张晓刚    | 1999-12-03 00:00:00 |   23 |
    | S2012 | 刘小青    | 1999-10-11 00:00:00 |   23 |
    | S2013 | 曹梦德    | 1998-02-13 00:00:00 |   24 |
    | S2014 | 刘艳      | 1998-06-24 00:00:00 |   24 |
    | S2015 | 刘岩      | 1999-07-06 00:00:00 |   23 |
    | S2016 | 刘若非    | 2000-08-31 00:00:00 |   22 |
    | S2021 | 董雯花    | 2000-07-30 00:00:00 |   22 |
    | S2022 | 周华建    | 1999-05-25 00:00:00 |   23 |
    | S2023 | 特朗普    | 1999-06-21 00:00:00 |   23 |
    | S2024 | 奥巴马    | 2000-10-17 00:00:00 |   22 |
    | S2025 | 周健华    | 2000-08-22 00:00:00 |   22 |
    | S2026 | 张学有    | 1998-07-06 00:00:00 |   24 |
    | S2031 | 李明博    | 1999-10-26 00:00:00 |   23 |
    | S2032 | 达芬奇    | 1999-12-31 00:00:00 |   23 |
    +-------+-----------+---------------------+------+
    14 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

    四、为列和表达式指定别名

    为一个列或者表达式指定别名,语法格式如下:

    格式一:列名|表达式 as 别名
    格式二:列名|表达式 别名
    
    • 1
    • 2

    例如:

    mysql> select s_id, s_name as stu_name, year(now())-year(birth) as age 
        -> from student;
    +-------+-----------+------+
    | s_id  | stu_name  | age  |
    +-------+-----------+------+
    | S2011 | 张晓刚    |   23 |
    | S2012 | 刘小青    |   23 |
    | S2013 | 曹梦德    |   24 |
    | S2014 | 刘艳      |   24 |
    | S2015 | 刘岩      |   23 |
    | S2016 | 刘若非    |   22 |
    | S2021 | 董雯花    |   22 |
    | S2022 | 周华建    |   23 |
    | S2023 | 特朗普    |   23 |
    | S2024 | 奥巴马    |   22 |
    | S2025 | 周健华    |   22 |
    | S2026 | 张学有    |   24 |
    | S2031 | 李明博    |   23 |
    | S2032 | 达芬奇    |   23 |
    +-------+-----------+------+
    14 rows in set (0.00 sec)
    
    mysql> select s_id, s_name stu_name, year(now())-year(birth) age 
        -> from student;
    +-------+-----------+------+
    | s_id  | stu_name  | age  |
    +-------+-----------+------+
    | S2011 | 张晓刚    |   23 |
    | S2012 | 刘小青    |   23 |
    | S2013 | 曹梦德    |   24 |
    | S2014 | 刘艳      |   24 |
    | S2015 | 刘岩      |   23 |
    | S2016 | 刘若非    |   22 |
    | S2021 | 董雯花    |   22 |
    | S2022 | 周华建    |   23 |
    | S2023 | 特朗普    |   23 |
    | S2024 | 奥巴马    |   22 |
    | S2025 | 周健华    |   22 |
    | S2026 | 张学有    |   24 |
    | S2031 | 李明博    |   23 |
    | S2032 | 达芬奇    |   23 |
    +-------+-----------+------+
    14 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    五、消除查询结果中的重复行

    使用 DISTINCT 关键词可以消除查询结果中重复的行。DISTINCT 关键词必须放到 SELECT 后面,字段列表之前。

    mysql> select addr from student;
    +-----------+
    | addr      |
    +-----------+
    | 信阳市    |
    | 新乡市    |
    | 郑州市    |
    | 郑州市    |
    | 信阳市    |
    | 开封市    |
    | 开封市    |
    | 郑州市    |
    | 新乡市    |
    | 信阳市    |
    | 开封市    |
    | 郑州市    |
    | 郑州市    |
    | 郑州市    |
    +-----------+
    14 rows in set (0.00 sec)
    
    mysql> select distinct addr from student;
    +-----------+
    | addr      |
    +-----------+
    | 信阳市    |
    | 新乡市    |
    | 郑州市    |
    | 开封市    |
    +-----------+
    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
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    项目实战(一) 瑞吉外卖
    申诉解决TeamViewer免费个人版被误判为商业使用
    SpringSecurity---内存认证和数据库认证
    JavaWeb(黑马程序员:Web核心介绍)
    携程OceanBase开源实践——索引统计功能实现
    【Hive】Hive元数据信息表详解
    【数据结构与算法】之深入解析“恢复数组”的求解思路与算法示例
    机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》
    设计模式:单例模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
    微机-------可编程并行接口8255A
  • 原文地址:https://blog.csdn.net/weixin_44377973/article/details/125894198