Mysql系列SQL查询语句书写顺序及执行顺序详解

关于"Mysql系列SQL查询语句书写顺序及执行顺序详解"的攻略,我们可以从以下几个方面进行介绍。

常见的查询语句书写顺序

为了方便理解,在学习查询语句的过程中,我们一般会按照以下的顺序来书写我们的查询语句:

  1. 选择需要查询的列,使用select关键字。
  2. 确定查询的表名或视图名,使用from关键字,并指定查询表或视图的名称。
  3. 指定额外的条件,使用where关键字,并使用比较运算符和逻辑运算符来进行数据筛选。
  4. 对查询结果进行分组,使用group by关键字。
  5. 进行分组后的筛选,使用having关键字。
  6. 对查询结果进行排序,使用order by关键字。

查询语句的执行顺序

在我们书写完查询语句以后,这些语句的执行顺序是非常重要的。我们来看一下常见的查询语句的执行顺序:

  1. from
  2. join
  3. on
  4. where
  5. group by
  6. having
  7. select
  8. distinct
  9. order by
  10. limit

示例说明

为了更好地理解上述的执行顺序和书写顺序,我们来看两个具体的示例。

示例一:

假设有如下的学生信息表:

id name age
1 Tom 18
2 Jack 20
3 Mary 19

我们现在想要查询年龄大于18岁的学生姓名,按照从小到大的顺序排列。

那么我们的查询语句可以写成:

select name from student where age > 18 order by age asc;

这个查询语句的执行顺序为:from -> where -> select -> order by。

即先从表中选择需要查询的行,然后对这些行进行筛选,再选择需要查询的列,在最后对所选列进行排序。最终我们会得到如下的结果:

name
Mary
Jack

示例二:

假设现在有两张表格,一张表包含商品信息,另一张表包含订单信息。表格信息如下:

商品信息表:

id name type
1 手机 电子
2 电视 家电
3 衣服 服装
4 餐具 生活用品

订单信息表:

id user product_id amount create_time
1 张三 2 1 2022/3/10 10:11:01
2 李四 1 2 2022/3/11 10:11:01
3 王五 3 3 2022/3/12 10:11:01

我们现在需要查询出每个商品的总销售量,并按照销售量从大到小排序。

那么我们的查询语句可以写成:

select product.name, sum(order.amount) as total_sales 
from order 
join product on order.product_id = product.id 
group by order.product_id 
order by total_sales desc;

这个查询语句的执行顺序为:from -> join -> group by -> select -> order by。

即首先我们要将两张表格进行联结,然后对新联结的表格进行分组,然后选择要查询的列,并利用聚合函数进行计算,最后对计算结果进行排序。最终我们会得到如下的结果:

name total_sales
衣服 9
手机 1
电视 1

以上就是"Mysql系列SQL查询语句书写顺序及执行顺序详解"的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql系列SQL查询语句书写顺序及执行顺序详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Oracle 中Contains 函数的用法

    Oracle 中 Contains 函数的用法 简介 Oracle 中的 Contains 函数是一种用于全文搜索的函数。该函数可以用来查找某个列中匹配指定条件的行。Contains 函数的使用需要结合 Oracle 提供的文本索引(text index)和文本查询(text query)功能,可以在包含文本的列上进行模糊搜索。 语法 Contains 函数…

    database 2023年5月22日
    00
  • golang进程在docker中OOM后hang住问题解析

    下面是详细讲解“golang进程在docker中OOM后hang住问题解析”的完整攻略。 问题描述 在使用 Docker 运行 Golang 应用时,有时会发现进程在被 oom 后 hang 住,不退出。这种情况在日常开发和生产中都可能遇到,会导致容器被占用,无法被正常删除或者重启。 问题原因 这个问题的原因是 Golang 在 OOM 时,由于其内存管理机…

    database 2023年5月22日
    00
  • python 连接数据库mysql解压版安装配置及遇到问题

    Python 连接 MySQL 解压版安装配置及遇到问题 安装MySQL 首先需要先下载 MySQL,网址为 https://www.mysql.com/downloads/ 。 在页面中选择“MySQL Community Server”,下载并解压到本地。 安装Python 如果还未安装 Python,可以前往 https://www.python.or…

    database 2023年5月21日
    00
  • 解析Mysql备份与恢复简单总结与tee命令的使用介绍

    下面是对“解析Mysql备份与恢复简单总结与tee命令的使用介绍”的详细讲解: 解析Mysql备份与恢复简单总结 Mysql备份 对于Mysql备份,我们可以采用两种方式进行备份,分别是逻辑备份和物理备份。 逻辑备份 逻辑备份指的是将数据库中的数据以INSERT语句的形式进行备份。逻辑备份不仅可以进行数据的备份,还可以进行数据的转储和传输,因此备份后的文件比…

    database 2023年5月21日
    00
  • MySQL中无过滤条件的count详解

    当我们使用MySQL数据库时,经常会碰到需要统计该表中数据总量的情况。这时候,MySQL提供了一个非常方便的函数——count()函数。 count()函数可以统计指定条件下的数据总量,其语法如下: SELECT COUNT(*) FROM table_name WHERE conditions; 其中,table_name是指要查询的数据表名,condit…

    database 2023年5月22日
    00
  • nodejs+socketio+redis实现前端消息实时推送

    nodejs+socketio+redis实现前端消息实时推送 1. 后端部分 发送redis消息 可以参考此篇实现(直接使用Jedis即可) http://www.cnblogs.com/binyue/p/4763352.html 2.后端部分: 接收redis消息 var redis; if(process.argv.length <= 2){ r…

    Redis 2023年4月11日
    00
  • redis(10)事务和锁机制秒杀

    Redis事务定义 Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队。   Multi、Exec、discard Redis 事务中有 Multi、Exec 和 discard 三个指令,在 Redis 中,…

    Redis 2023年4月10日
    00
  • CentOS 7.9服务器Java部署环境配置的过程详解

    下面是CentOS 7.9服务器Java部署环境配置的完整攻略: 准备工作 在开始安装之前,请确保你的服务器上已经安装有Java包。(如果没有安装,请参考下文“Java安装”章节) Tomcat安装 前往Tomcat官网,下载对应版本的二进制文件,存放到服务器指定目录,例如存放到/opt目录下,并解压压缩包。 启动Tomcat服务: bash cd /opt…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部