我正在将mysql服务器用于sql。
Select * from products some_garbage_value;
和
Select * from products;
得出相同的值。为什么?
在some_garbage_value处输入任何内容,仍会得到相同的查询结果。
我已经创建了一个用于输入查询的表单,该表单由servlet处理,并且在创建连接后,我得到了该servlet上的查询结果。
这对我的表单来说是一件坏事吗?如果是,那么告诉我,如何摆脱此错误?这是错误吗?可以是SQL注入吗?
答案 0 :(得分:2)
在
Select * from products some_garbage_value;
some_garbage_value
不是垃圾,它是一个别名。从技术上讲,这意味着对于查询范围,您已经将products
表的这种出现重新命名为some_garbage_value
。如果您需要消除同一表的两次出现之间的歧义(例如,在自我联接中),或者使查询更具可读性/不言自明(或更短),这将非常有用。
等效于
Select * from products as some_garbage_value;
另请参阅MySQL reference for select
:
FROM table_references
子句表示一个或多个表 检索行。如果您命名一个以上的表,那么您就是 执行联接。有关连接语法的信息,请参见 13.2.9.2,“ JOIN语法”。对于指定的每个表,您可以选择指定别名。tbl_name [[AS] alias] [index_hint]
这不能与任何值一起使用:它必须是语法上有效的标识符。