SQL Select 语句背后的逻辑

Logic Behind SQL Select Statement

让我们从这样一个基本的 SQL 语句开始:

SELECT 来自客户的客户姓名、城市、国家/地区;

我们得到这样的结果:

CustomerName City Country
Alex Berlin Germany

现在,如果我在同一个 table 上执行此语句: SELECT 'a' 来自客户;

它给了我这个结果:

a
a
a
a

这是为什么?没有名为 a 的标识符。实际上,我可以将任何内容放在单引号中,它会向我重复多次 table.

中的行数

声明:

select ... 来自客户;

始终 return 为您的 table 客户中的每一行设置一行(您在 ... 部分中输入的内容不会影响您将获得多少行)。

现在,谈到 ... 部分,这通常是一个逗号分隔的列列表和要为每一行显示的表达式。如果您使用列名,则该行该列中的值将被 returned。如果您使用表达式,将为该行计算表达式,结果为 returned。您放置了一个字符串文字(字母 'a')作为表达式,因此该表达式的结果是字符串文字 'a',对三行中的每一行进行了计算和 returned。

通常您会编写更详细的表达式:例如,如果您的其中一个列称为 Distance,并且您的每个列中都有值,例如 56,250、1200三行,那么你可能想检索这些并组合(连接)一个单位符号,比如一个字母 'm'。在这种情况下你可以写:

SELECT Distance+'m' as DistanceFromSea from Customers

会return: |与海洋的距离| |------:| |56米| |250米| |1250米| .

这里表达式中的 'm' 不是微不足道的,因为它意味着什么。 '+' 号是连接运算符)。

虽然您的 'a' 本身可能没有任何意义,但有时您可能希望在一列中只显示一个字符:它可能是一个分隔符,例如,像 ' |'.

本例中的DistanceFromSea成为列'alias',即表达式构建的列值的名称。如果您不为表达式提供名称,许多数据库产品会为您提供一个 made-up/default 列名称,通常是使用表达式的前几部分(但不提供是正确的)。