MySQL讲义第19讲—— select 查询之 select 语法

编程入门 行业动态 更新时间:2024-10-09 05:25:46

MySQL<a href=https://www.elefans.com/category/jswz/34/1760533.html style=讲义第19讲—— select 查询之 select 语法"/>

MySQL讲义第19讲—— select 查询之 select 语法

MySQL讲义第19讲——select 查询之 select 语法

文章目录

  • MySQL讲义第19讲——select 查询之 select 语法
    • 一、SELECT 语句的语法
    • 二、SELECT 语句各部分的说明
    • 三、查询数据准备
    • 四、查询举例
        • 1、查询 dept 表中的所有字段和所有数据
        • 2、查询身高超过 176 的学生的所有信息
        • 3、查询管理系的学生的学号和姓名
        • 5、查询男生信息,并且按身高降序排列
        • 6、查询身高前 3 名的学生的姓名和身高

MySQL 使用 SELECT 语句查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是 MySQL 中最重要的操作。

一、SELECT 语句的语法

SELECT DISTINCT<字段或表达式列表>
FROM<表名> <连接类型>
JOIN <表名> ON <连接条件>
WHERE<筛选条件>
GROUP BY<分组字段列表>
HAVING<分组筛选条件>
ORDER BY<排序字段>
LIMIT <m,n>

二、SELECT 语句各部分的说明

1、DISTINCT:消除重复行。
2、<字段或表达式列表>:表示所要查询字段的名称,可以使用(*)表示所有字段。
3、<连接类型>:可以使用 inner,left,right 分别表示内连接,左连接,右连接。
4、<连接条件>:一般使用两个表的共同字段进行构造连接条件。
5、<筛选条件>:限定查询数据必须满足该查询条件。
6、<分组字段列表>:按照指定的字段分组。
7、<分组筛选条件>:对分组进行筛选。
8、<排序字段>:对查询结果进行排序,可以进行升序(ASC)和降序(DESC)排列,默认是升序。
9、LIMIT <m,n>:分页显示数据。

三、查询数据准备

创建四张表(dept、stu、course、score)并插入数据,后续文章中查询的举例会使用到这些表中的数据。表结构及数据如下:

--//
--    dept表    
--//
mysql> desc dept;
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| dept_id   | char(3)  | NO   | PRI | NULL    |       |
| dept_name | char(20) | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)mysql> select * from dept;
+---------+--------------+
| dept_id | dept_name    |
+---------+--------------+
| D01     | 管理系       |
| D02     | 计算机系     |
| D03     | 数学系       |
| D04     | 法律系       |
| D05     | 艺术系       |
+---------+--------------+
5 rows in set (0.00 sec)
--//
--    stu表    /
--//
mysql> desc stu;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| stu_id   | char(9)      | NO   | PRI | NULL    |       |
| stu_name | char(20)     | YES  |     | NULL    |       |
| gender   | char(4)      | YES  |     | NULL    |       |
| birth    | datetime     | YES  |     | NULL    |       |
| height   | decimal(4,1) | YES  |     | NULL    |       |
| phone    | char(11)     | YES  |     | NULL    |       |
| dept_id  | char(3)      | YES  | MUL | NULL    |       |
+----------+--------------+------+-----+---------+-------+
7 rows in set (0.01 sec)mysql> select * from stu;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801104 | 宋丹风    | 女     | 1999-11-20 00:00:00 |  165.0 | 15937320444 | D02     |
| 201801201 | 王艳艳    | 女     | 1999-09-30 00:00:00 |  162.0 | 15937320888 | D03     |
| 201801202 | 赵牡丹    | 女     | 2001-08-10 00:00:00 |  160.0 | 15937320666 | D03     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901001 | 张洪涛    | 男     | 2001-01-22 00:00:00 |  172.0 | 15937320158 | D01     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
--//
--    course表    //
--//
mysql> desc course;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| c_id   | char(5)  | NO   | PRI | NULL    |       |
| c_name | char(20) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> select * from course;
+-------+-----------------------+
| c_id  | c_name                |
+-------+-----------------------+
| C0101 | 管理学原理            |
| C0102 | 政治经济学            |
| C0103 | 数据库系统原理        |
| C0104 | 企业管理概论          |
| C0201 | 数据结构              |
| C0202 | 计算机组成原理        |
| C0203 | 操作系统原理          |
| C0204 | 编译原理              |
| C0301 | 高等数学              |
| C0302 | 运筹学                |
| C0303 | 概率论                |
| C0401 | 经济法                |
| C0402 | 刑事诉讼法            |
| C0403 | 民法学                |
| C0404 | 著作权法              |
| C0501 | 音乐欣赏              |
| C0502 | 书法                  |
| C0503 | 油画                  |
+-------+-----------------------+
18 rows in set (0.00 sec)
--//
--    score表    ///
--//
mysql> desc score;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| stu_id | char(9) | NO   | PRI | NULL    |       |
| c_id   | char(5) | NO   | PRI | NULL    |       |
| score  | int(11) | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
3 rows in set (0.01 sec)mysql> select * from score;
+-----------+-------+-------+
| stu_id    | c_id  | score |
+-----------+-------+-------+
| 201801101 | C0201 |    80 |
| 201801102 | C0201 |    98 |
| 201801201 | C0301 |    80 |
| 201801201 | C0302 |    89 |
| 201801201 | C0303 |    98 |
| 201801202 | C0301 |    75 |
| 201801202 | C0302 |    69 |
| 201801202 | C0303 |    62 |
| 201801203 | C0301 |    89 |
| 201801203 | C0302 |    82 |
| 201801203 | C0303 |    64 |
| 201901002 | C0101 |    78 |
| 201901002 | C0102 |    92 |
| 201901002 | C0103 |    87 |
| 201901002 | C0104 |    74 |
+-----------+-------+-------+
15 rows in set (0.00 sec)

四、查询举例

1、查询 dept 表中的所有字段和所有数据
mysql> SELECT-> * -> FROM-> dept;
+---------+--------------+
| dept_id | dept_name    |
+---------+--------------+
| D01     | 管理系       |
| D02     | 计算机系     |
| D03     | 数学系       |
| D04     | 法律系       |
| D05     | 艺术系       |
+---------+--------------+
5 rows in set (0.00 sec)
2、查询身高超过 176 的学生的所有信息
mysql> SELECT-> *-> FROM -> stu-> WHERE-> height > 176;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
3 rows in set (0.00 sec)
3、查询管理系的学生的学号和姓名
mysql> SELECT-> s.stu_id,-> s.stu_name-> FROM-> stu s inner join dept d on s.dept_id = d.dept_id-> WHERE -> d.dept_name = '管理系';
+-----------+-----------+
| stu_id    | stu_name  |
+-----------+-----------+
| 201901002 | 王宏伟    |
| 201901003 | 张静静    |
| 201901004 | 李刚      |
| 201901005 | 刘鹏      |
+-----------+-----------+
4 rows in set (0.01 sec)

4、查询每个系的系名及学生人数

mysql> SELECT -> d.dept_name,-> count(*) as count_stu-> FROM -> stu s right join dept d on s.dept_id = d.dept_id-> GROUP BY -> d.dept_id;
+--------------+-----------+
| dept_name    | count_stu |
+--------------+-----------+
| 管理系       |         4 |
| 计算机系     |         4 |
| 数学系       |         3 |
| 法律系       |         1 |
| 艺术系       |         1 |
+--------------+-----------+
5 rows in set (0.04 sec)
5、查询男生信息,并且按身高降序排列
mysql> SELECT-> *-> FROM-> stu-> WHERE-> gender = '男'-> ORDER BY height desc;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
6 rows in set (0.00 sec)
6、查询身高前 3 名的学生的姓名和身高
mysql> SELECT-> stu_name,-> height-> FROM-> stu-> ORDER BY-> height desc-> LIMIT-> 3;
+-----------+--------+
| stu_name  | height |
+-----------+--------+
| 王宏伟    |  180.0 |
| 李刚      |  178.0 |
| 王占峰    |  177.0 |
+-----------+--------+
3 rows in set (0.00 sec)

更多推荐

MySQL讲义第19讲—— select 查询之 select 语法

本文发布于:2024-02-13 08:46:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757610.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:讲义   语法   MySQL   select

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!