我的查询是这样的
select 5 from mytable_name;
然后输出就像列名 5 并且值是 5 打印该表中存在的最大行数。任何人都可以说出这个查询为什么会这样工作的原因吗?
我的查询是这样的
select 5 from mytable_name;
然后输出就像列名 5 并且值是 5 打印该表中存在的最大行数。任何人都可以说出这个查询为什么会这样工作的原因吗?
任何人都可以说出这个查询为什么会这样工作的原因吗?
您正在'5'
为表中的每一行选择一个字符串文字值:
select 5 from mytable_name;
这很好用。因为在SELECT
语句中你可以选择:
如标准 SQL 1所定义:
更新:
但是,如果您有一列的名称是一个数字,就像您的情况一样,您必须对其进行转义才能选择其中的值,如下所示:
SELECT `143` FROM Table1;
这将选择列中的所有行143
。
但是这个:
SELECT 143 FROM Table1;
将为表中找到的每一行选择字符串文字 143。
请注意:如果可能,尽量不要以这种方式命名这些列,建议和最佳实践不要这样做。
请注意,如果您选择143
or '143'
,甚至"143"
这将选择文字值143
而不是列日期。以下是相同的:
SELECT 143 FROM Table1;
SELECT '143' FROM Table1;
SELECT "143" FROM Table1;
所有这些SELECT
都不会选择列中的数据,它们将选择文字值143
而不是列数据。看这个演示:
您必须使用以下两个来转义列名:
``
像这样:
SELECT `143` FROM table1;
不是:
SELECT '143' FROM table1'
就像我在这里所做的那样:
1图片来自:对于普通人的 SQL 查询
from mytable
如果没有where
缩小该结果的条件,将从您的表中选择所有行。和
select 5
将为每条记录选择常数5
。如果您在部件中使用列名,select
那么将为每条记录选择该值。
数据库引擎将命名结果5
,因为它会自动生成一个列名,而 5 是它的逻辑名称。
你可能想要'SELECT * FROM mytable_name LIMIT 0,5'?
使用该命令select 5 ...
,您正在查看一个固定值。运行以下命令的相同操作:select "test"
,您将显示一个固定的字符串。
使用... from mytable_name
您正在查找此表的所有记录。
有了这个我们可以得出结论,对于表中的每条记录都mytable_name
显示了固定值"5"
。
由于您的 where 子句中没有任何内容,因此它正在选择表中的所有行。您没有选择任何列的事实是无关紧要的 - 您仍然会得到表中每一行的结果。