我执行了以下查询并且它有效。我想了解它是如何工作的。
select 50+2 from employees
仅当“employees”表存在时才有效。如果我提到一个不存在的表,则会抛出错误。
如何为用户定义的表计算此类表达式?
最佳答案
MySQL 首先做的是使用解析器读取 SQL 语句并将其分成逻辑部分。解析器(不仅由 MySQL 使用,而且在编程中也经常使用)只是检索原始信息并将其转换为程序可以使用的内容的代码块。
对于MySQL,它将分开
SELECT 50+2 FROM employees
进入SELECT 50+2
和FROM员工
那么让我们分析一下这两者各自的作用。 SELECT
保留字用于标识用户希望从操作中获取什么。它通常包含一个列名。但是,如果您包含名为“hello”的字符串,MySQL 会解释为您要选择“hello”。在本例中,您想要选择 50+2
结果的数字。
现在FROM员工
的作用是通知MySQL您希望从哪个表中选择此信息。 50+2
不是一列,甚至不是表中的任何内容都没关系。 MySQL 不是人工智能系统,不会问你为什么决定这样做,它只是执行按照既定规则设计的命令。
现在MySQL将遍历整个表,并返回与查询的WHERE ...
部分中存在的条件一致的每行的选定列。如果查询没有 WHERE ...
部分,则假定您要返回所有行。
查询结果将是一列充满值52
的列,其行数与表的行数相同。如果您的表有 5 行,结果将是:
52
52
52
52
52
关于sql - SQL select 语句如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37370897/