SQL的执行流程

1. SQL的语句结构

1.1 SQL92 语法

SELECT DISTINCT ...,...,...(存在聚合函数)
FROM ...,...,...

WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件
GROUP BY ... (WITH ROLLUP)
HAVING 包含聚合函数的过滤条件
ORDER BY ... (ASC/DESC)
LIMIT ...,...

1.2 SQL99 语法

SELECT DISTINCT ...,...,...(存在聚合函数)
FROM ...

(LEFT/RIGHT) JOIN ... ON 多表的连接条件
(LEFT/RIGHT) JOIN ... ON ...

WHERE 不包含聚合函数的过滤条件
GROUP BY ... (WITH ROLLUP)
HAVING 包含聚合函数的过滤条件
ORDER BY ... (ASC/DESC)
LIMIT ...,...

2. SQL的执行过程

FROM -> ON -> (LEFT/RIGHT) JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

说明:

  1. 对于不包含聚合函数的过滤条件,推荐声明在 WHERE中,这样查询效率较高。
  2. SELECT中声明的 字段别名不能在 WHERE中使用,但可以在 HAVINGGROUP BY中使用。

3. SQL的分类

  • DDL(数据定义语言): CREATEALTERDROPRENAMETRUNCATE
  • DML(数据操作语言): INSERTDELETEUPDATESELECT
  • DCL(数据控制语言): COMMITROLLBACKSAVEPOINTGRANTREVOKE

DDL与DML的说明

  • DDL的操作一旦执行,就不可回滚。
  • DML的操作在默认情况下也是不可回滚的。但若在操作执行前执行了 SET autocommit = FALSE,则操作可以实现回滚。

Original: https://www.cnblogs.com/bpf-1024/p/15924639.html
Author: 步平凡
Title: SQL的执行流程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612351/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Go-channel

    (1)channel本质就是一个数据结构——队列 (2)数据先进先出 (3)线程安全,多goroutine访问时,不需要加锁,channel本身就是线程安全的 (4)channel…

    Linux 2023年6月8日
    0109
  • Redis处理高并发 加锁

    在程序开发过程中,通常会遇到需要独占式的访问一些资源的情形,比如商品秒杀时扣减库存。这时就需要对资源加锁。实现锁的方式有很多,比如数据库锁、文件锁等等。本文简单介绍PHP中使用re…

    Linux 2023年5月28日
    088
  • bash获取机器IP后缀

    1.先获取部分数据 ip_0=ip a | grep inet | grep -v inet6 | grep ens | awk ‘NR==1{print $2}’ | cut -…

    Linux 2023年6月7日
    098
  • java程序使用ssl证书连接mysql

    bash;gutter:false; 1. 在mysql服务器上生成证书 openssl genrsa 2048 > ca-key.pem openssl req -new …

    Linux 2023年6月7日
    0101
  • 最小二乘法

    背景:我们有一系列的点(x,y),如下图所示,实际上这就是一个y=10*x的一元一次曲线,再加上一个随机误差得到的数据。 我们想用一个线性方程来拟合它y=a*x+b为了达到最好的拟…

    Linux 2023年6月15日
    0123
  • django.template.exceptions.TemplateDoesNotExist: django_filters/rest_framework/form.html

    django.template.exceptions.TemplateDoesNotExist: django_filters/rest_framework/form.htmlER…

    Linux 2023年6月14日
    0157
  • CentOS系统磁盘目录空间调整

    前几天装了几台linux服务器,安装操作系统的时候,选择了默认磁盘分区,结果导致后面主目录分区空间不够用了,需要把其他分区的空间划分给主分区一点。 下面以CentOS6.5演示: …

    Linux 2023年6月6日
    0103
  • Linux实用命令(更新中)

    参数 描述 样例 样例说明 -l 详细文件信息 -t 修改时间排序 -r 倒序排列 -h 可读的文件大小单位 -a 显示隐藏文件 常用用法 ls -ltr zip 参数 描述 样例…

    Linux 2023年5月27日
    097
  • MySQL常见问题以及解决方法

    MySQL常见问题以及解决方法 数据损坏或丢失 serverid不唯一 主从节点存在复制延迟 主从节点数据不一致 数据表主键冲突 数据损坏或丢失 Master:采用MHA+semi…

    Linux 2023年6月7日
    0109
  • [20211213]提示precompute_subquery.txt

    [20211213]提示precompute_subquery.txt –//学习了提示precompute_subquery,提示很明显就是先计算子查询的结果集,直接…

    Linux 2023年6月13日
    099
  • 【Linux进程间通信】共享内存的使用

    背景 最近需要开发一个测试程序,接受Tester端的测试指令,执行一条条外设的测试用例,执行完成后将测试数据的结果上报,上报方式未定,考虑到耦合和配套问题,决定采用共享内存机制,设…

    Linux 2023年6月13日
    0106
  • Windows下使用ffmpeg录制摄像头+录屏+录系统音+录麦克风音,生成本地视频或推流

    实操: 录屏: ffmpeg.exe -r 1 -f gdigrab -i desktop -vcodec libx264 out.mp4 录制麦克风声音和摄像头的视频: ffmp…

    Linux 2023年6月7日
    091
  • kubeadm搭建单master k8s集群

    kubeadm搭建单master k8s集群 一、 准备环境 软件环境: 软件 版本 操作系统 CentOS7.9_x64 内核 kernel-ml-5.17.3-1.el7 Do…

    Linux 2023年6月13日
    0124
  • 《拉钩课程 — 分布式技术原理与实战》学习笔记

    1、分布式系统是用来解决集中式架构的性能瓶颈问题,其核心是可扩展性,其特点包括:不出现单点故障、无状态等。依照 CAP 理论,分布式系统只能在 CP 和 AP 之间做取舍。 2、B…

    Linux 2023年6月16日
    0140
  • 01-MySQL连接查询、聚合函数

    1、连接查询 1.1、左连接 以左表为基准进行查询,左表数据回全部显示出来 右表中如果匹配连接条件的数据则显示相应字段的数据,如果不匹配,则显示为NULL 1.2、右连接 以右表为…

    Linux 2023年6月7日
    0129
  • 模拟重装Kubernetes(k8s)集群:删除k8s集群然后重装

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球