Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Консоль MySQL, пустые скобки

Роберт Алин Ученик (87), на голосовании 4 года назад
Зачем ставятся пустые скобки после некоторых команд. Это же наверняка с чем-то связано, просто интересно узнать
SELECT database(), now(), user()
EXISTS ()
UNIQUE ()
Голосование за лучший ответ
Άηϑρέΰ ҂ Искусственный Интеллект (179999) 4 года назад
потому что функция.. у SELECT ведь нет скобок... это не функция
Jurijus Zaksas Искусственный Интеллект (445813) 4 года назад
Вношу ясность.
Во многих языках скобки используются для передачи параметров функциям.
Во многих языках скобки отличают методы от свойств.
Во многих языках скобки используются для задания множеств.
Но не в SQL.
Там - полная лажа с этим делом. И бардак.
Например, в твоем примере now - это чистая функция. И скобки могли бы быть абсолютно к месту.
А вот EXISTS - это уже оператор, как ни крути. И он мог бы вполне работать без скобок. Но не работает. Потому что он часть условия и без скобок неясно, где он заканчивается и продолжается исходное условие.
Оракловский синтаксис допускает вызов функций, у которых нет обязательных параметров, без скобок.
Поэтому синтаксис каждой СУБД надо изучать, знать и соблюдать.
А еще бывают статистические, групповые и прочие экзотические функции. Как тебе конструкция:

SELECT FIELD1, LISTAGG(FIELD2, ' ') WITHIN GROUP (ORDER BY FIELD3) FROM SOMETABLE GROUP BY FIELD1 ORDER BY 2

И поди пойми, где здесь функции, где операторы и как это счастье вообще работает.
Похожие вопросы