sql - SQL select 语句如何工作

标签 sql select oracle11g

我执行了以下查询并且它有效。我想了解它是如何工作的。

select 50+2 from employees

仅当“employees”表存在时才有效。如果我提到一个不存在的表,则会抛出错误。

如何为用户定义的表计算此类表达式?

最佳答案

MySQL 首先做的是使用解析器读取 SQL 语句并将其分成逻辑部分。解析器(不仅由 MySQL 使用,而且在编程中也经常使用)只是检索原始信息并将其转换为程序可以使用的内容的代码块。

对于MySQL,它将分开

SELECT 50+2 FROM employees

进入SELECT 50+2FROM员工

那么让我们分析一下这两者各自的作用。 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/

相关文章:

Sql UNION 具有附加原始列的相同表

mysql - 如何比较 SQL 查询结果中的行值?

jQuery .each 与 jQuery select追加冲突

java - 查找 Oracle 服务器中安装的 JDK 版本

sql - SQL 中的组合聚合和非聚合查询

mysql - 如何写Nhibernate Query C# .net Mysql

Oracle:10g oracle 客户端是否可以与 11g 服务器一起使用?

oracle - 根据计数总和将记录拆分为存储桶

javascript - 如何设置 dijit.form.Select 的宽度?

postgresql - Postgres 查询比较两个日期是否等于边距