我正在使用mysql服务器进行sql。Select * from products some_garbage_value;
和
Select * from products;
生成相同的值。为什么?
在some_garbage_value位置输入任何内容,仍会产生相同的查询结果。
我创建了一个表单来输入查询,该表单由 servlet 处理,创建连接后,我将在该 servlet 上生成查询结果。
这对我的表格来说是坏事吗,如果是,那么告诉我,如何摆脱这个错误?这是一个错误吗?可以是SQL注入的情况吗?
in
Select * from products some_garbage_value;
some_garbage_value
不是垃圾,它是一个别名。从技术上讲,这意味着对于查询范围,您已将products
表的出现"重命名"为some_garbage_value
。如果您需要消除同一表的两个匹配项之间的歧义(例如在自连接中(,或者使您的查询更具可读性/不言自明(或更短(,这将非常有用。
它相当于
Select * from products as some_garbage_value;
另请参阅select
的MySQL参考:
FROM table_references
子句指示来自的一个或多个表。 检索行。如果命名多个表,则 执行联接。有关联接语法的信息,请参阅部分 13.2.9.2, "连接语法"。对于指定的每个表,可以选择指定别名。tbl_name [[AS] alias] [index_hint]
这不适用于任何值:它必须是语法上有效的标识符。