V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
uselessVisitor
V2EX  ›  MySQL

MySQL 基础问题咨询

  •  
  •   uselessVisitor · 2021-01-14 15:52:38 +08:00 · 1062 次点击
    这是一个创建于 1169 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是复习 MySQL 基础知识

    看到这样一篇文章 由于是某 dn 这里只放截图

    微信截图_20210114154039.png

    按照他说的执行顺序,想到是不是 MySQL 执行时候代码验证也是这个顺序?

    做了下实验

    表结构如下

    表结构.png

    当 FROM 的表存在,但是字段不存在、并且 WHERE 条件的字段也是不存在是谁先报错
    select a
    from truck
    where b = '0';
    

    结果如图

    情况 1.png

    可以看到是先判断的field list

    那这样不就和执行顺序相违背了?

    这里想问一下,这里的判断是属于 SELECT还是FROM

    3 条回复    2021-02-05 17:11:36 +08:00
    love2020
        1
    love2020  
       2021-02-05 16:20:25 +08:00
    sql 执行流程中,有一步是 sql 解析,判断 sql 语法是否正确、字段是否正确。 你所说的顺序是执行 sql 的时候,肯定先 from 获取数据源,然后条件获取数据,最后在 select 。
    你要理解一条 sql 执行的流程是很多步的。建立链接、缓存、分析、优化、执行 --最后才到存储引擎。
    love2020
        2
    love2020  
       2021-02-05 16:21:07 +08:00
    你给的顺序的 sql 语法顺序而已。
    uselessVisitor
        3
    uselessVisitor  
    OP
       2021-02-05 17:11:36 +08:00
    @love2020 十分感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5867 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:21 · PVG 10:21 · LAX 19:21 · JFK 22:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.