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

yizhihongxing

关于"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日

相关文章

  • CentOS7.5 安装 Mysql8.0.19的教程图文详解

    下面是详细的攻略: CentOS7.5 安装 Mysql8.0.19的教程图文详解 环境准备 CentOS 7.5操作系统 足够的磁盘空间和内存空间 步骤一:下载 Mysql8.0.19 首先,需要到 MySQL 官网下载 Mysql8.0.19 的安装包。下载地址:https://dev.mysql.com/downloads/mysql/。 根据系统和版…

    database 2023年5月22日
    00
  • [Redis] Redis6 的RC版本更改日志

    Redis 6在许多关键方面对Redis进行了改进,并且是该项目历史上最大的Redis版本之一,因此,这里我们仅列出此版本中的最大功能: *模块系统现在具有许多新的API这使得模块作者可以完成过去无法实现的任务。可以将任意模块私有数据存储在RDB文件中,以挂接不同的服务器事件,捕获和重写命令执行,阻止key上的客户端等等。 *重新编写了Redis活动到期周期…

    Redis 2023年4月11日
    00
  • SQL 计算两个日期之间的天数

    计算两个日期之间的天数可以通过SQL中的DATEDIFF函数实现。具体操作如下: DATEDIFF函数语法:DATEDIFF(interval, date1, date2) 参数interval:时间间隔。可以是year(年),quarter(季度),month(月),day(日),hour(小时),minute(分钟),second(秒)等。 参数date…

    database 2023年3月27日
    00
  • Python中optionParser模块的使用方法实例教程

    下面是关于Python中optionParser模块的使用方法实例教程的完整攻略。 什么是optionParser模块? Python中的optionParser模块是一个命令行选项解析器,它可以帮助我们轻松地在命令行中解析参数。 如何使用optionParser模块? 步骤1:导入optionParser模块 我们需要先导入optionParser模块,使…

    database 2023年5月21日
    00
  • PHP安全性漫谈

    PHP安全性漫谈攻略 概述 PHP是一门广泛应用于Web开发的编程语言,但是也因为其语言本身以及使用方式的缺陷而面临安全问题。在本攻略中,我们将详细讲解PHP安全问题,并提供相应的解决方案。 常见安全问题 1. SQL注入 SQL注入是最常见的Web安全问题之一,攻击者通过在Web应用程序中注入恶意的SQL语句,从而获取敏感数据或者操作数据库。 以下是一些防…

    database 2023年5月21日
    00
  • MySQL中CURRENT_TIMESTAMP的使用方式

    下面是关于MySQL中CURRENT_TIMESTAMP的使用方式的详细攻略。 CURRENT_TIMESTAMP的作用 在MySQL中,CURRENT_TIMESTAMP是用来获取当前系统的时间戳的函数。 CURRENT_TIMESTAMP的使用方法 在MySQL中,可以使用两种方法获取当前系统的时间戳,即使用函数CURRENT_TIMESTAMP和关键字…

    database 2023年5月22日
    00
  • .Net Core之Redis插件对比【CSRedisCore】【ServiceStack.Redis】【StackExchange.Redis】

    先说结论:推荐使用 【CSRedisCore】 原因:①号称Redis官方推荐的插件 ②功能应该是最全的 ③注释完美 ——————————————————那么分割线来了———————————————————- 接…

    Redis 2023年4月11日
    00
  • Oracle用户密码含特殊字符时登陆失败问题

    问题描述: 在Oracle数据库中,当用户密码含有特殊字符(如#、$、&等)时,该用户在登录时会遇到“ORA-01017 invalid username/password; logon denied”错误,无法正常登录数据库。 解决方案: 开启密码区分大小写选项 修改Oracle数据库的密码区分大小写选项,可以解决用户密码含特殊字符时无法登录的问题…

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