В sql-запросе есть данные мусора, но они все еще выполняются, хотя и не влияют на результаты. Зачем? - PullRequest
0 голосов
/ 05 июля 2018

Я использую MySQL сервер для SQL.
Select * from products some_garbage_value; и

Select * from products;

в результате того же значения. Почему?

Ввод чего-либо в месте some_garbage_value, все равно приводит к тому же результату запроса.

Я создал форму для ввода запроса, и эта форма обрабатывается сервлетом, и после создания соединения я получаю результат запроса для этого сервлета.

Это плохо для моей формы, если да, то скажите мне, как избавиться от этой ошибки? Это ошибка? Может ли это быть случай SQL-инъекции?

1 Ответ

0 голосов
/ 05 июля 2018

В

Select * from products some_garbage_value;

some_garbage_value это не мусор, это псевдоним. Технически это означает, что для области запроса вы «переименовали» это вхождение таблицы products в some_garbage_value. Это может быть очень полезно, если вам необходимо устранить неоднозначность между двумя вхождениями одной и той же таблицы (например, при самостоятельном объединении) или сделать ваш запрос более читабельным / не требующим пояснений (или просто более коротким).

Это эквивалентно

Select * from products as some_garbage_value;

См. Также справку MySQL для select:

Предложение FROM table_references указывает таблицу или таблицы из который для извлечения строк. Если вы называете более одной таблицы, вы выполняя соединение. Информацию о синтаксисе соединения смотрите в разделе 13.2.9.2, «Синтаксис JOIN». Для каждой указанной таблицы вы можете указать псевдоним.

tbl_name [[AS] alias] [index_hint]

Это не будет работать только с любым значением: это должен быть синтаксически допустимый идентификатор.

...