Собсно, сабж. Что мешает SQL'ю выполнять запросы вида
SELECT From FROM User WHERE ...
В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение? Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку?
PS
Про квадратные скобки в курсе, но я не хочу превращать запросы в придурковатый заборчик с именами. Хочу человеческий синтаксис (как он и задумывался при проектировании SQL).
Здравствуйте, Kolesiki, Вы писали:
K>Собсно, сабж. Что мешает SQL'ю выполнять запросы вида K>
K>SELECT From FROM User WHERE ...
K>
K>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение?
Если в одном запросе может быть очевидно где ключевое слово, а где имя, не значит, что так же будет в других запросах.
K> Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку?
Напишите свою. Вообще наверное можно ослабить это требование в языке, но только зачем? Ради различных извращений?
K>PS K>Про квадратные скобки в курсе, но я не хочу превращать запросы в придурковатый заборчик с именами. Хочу человеческий синтаксис (как он и задумывался при проектировании SQL).
Да, sql и задумывался как человеческий язык для манипулирования данными. Были также попытки создания "человеческих" языков программирования, но все они умирали либо становились инструментом только для специалистов. Такова реальность.
Здравствуйте, Kolesiki, Вы писали:
K>Собсно, сабж. Что мешает SQL'ю выполнять запросы вида K>
K>SELECT From FROM User WHERE ...
K>
K>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение? Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку? K>PS K>Про квадратные скобки в курсе, но я не хочу превращать запросы в придурковатый заборчик с именами. Хочу человеческий синтаксис (как он и задумывался при проектировании SQL).
Варианты синтаксиса, когда ключевые слова явно выделены, а идентификаторы — нет, активно пробовались ещё в середине 60-х, получалось что-то вроде
'if' x > y 'then'
max := x
'else'
max := y
'end' 'if'
и по совокупности результатов в виде отзывов программистов были отброшены на много лет. Возможно, зря.
Только в C# (из мейнстримных) ввели универсальный суффикс "это не ключевое слово" в виде символа @, хотя я бы взял что-то за пределами ascii — например, ¤.
И, наоборот, отдельный набор слов, которые работают как ключевые только со спец-префиксом, можно §.
Здравствуйте, Kolesiki, Вы писали:
K>Собсно, сабж. Что мешает SQL'ю выполнять запросы вида K>
K>SELECT From FROM User WHERE ...
K>
K>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение?
Пока не способен. Если вам легко написать такого рода парсер, обратитесь в Майрософт с предложением, может примут и внедрят в следующей версии.
Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку?
Грамматика вполне нормальная. А вот поля c именами типа User и From трудно назвать нормальными, так они не несут никакого смысла. Обычно поля называеются UserId или UserNamе, а что такое просто User? Поэтому и не особо стоит тратить силы на написание парсера для полей, которые большиство толковых архитекторов никогда использовать не станут.
K>PS K>Про квадратные скобки в курсе, но я не хочу превращать запросы в придурковатый заборчик с именами.
А вам программирование вообще как? Двойные кавычки вокруг строк, escape-последовательности? Не очень утомляет? А то может пойти куда-нить в маркетинг, где всегда человеческий язык используют?
Здравствуйте, Kolesiki, Вы писали:
K>Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку?
Покажите мне здесь, где место имен, где ключевое слово:
select name, surname, from from, user
Если Вы считаете, что грамматика кривая, то предложите улучшенную грамматику "с человеческим синтаксисом, как он и
задумывался при проектировании" с описанием, как его парсить. И с учетом этой грамматики напишите вышеизложенное.
Re[2]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Qulac, Вы писали:
K>>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение? Q>Если в одном запросе может быть очевидно где ключевое слово, а где имя, не значит, что так же будет в других запросах.
Это замечание мне никак не помогает. Мне нужен либо конкретный пример, где вообще никак нельзя разрулить запрос без занесения имени в скобки, либо объяснение, нафига ключевые слова запрещены.
K>> Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку? Q>Напишите свою. Вообще наверное можно ослабить это требование в языке, но только зачем? Ради различных извращений?
О, да! Захотел назвать таблицу пользователей User — каков грязный ублюдок! (50 оттенков программиста)
В общем, пока по существу — ничего.
Re[2]: Почему имена не могут быть ключевыми словами?
Здравствуйте, netch80, Вы писали:
N>Варианты синтаксиса, когда ключевые слова явно выделены, а идентификаторы — нет, активно пробовались ещё в середине 60-х
Вы не о том. В век подсветки синтаксиса прямо в редакторе, нет вообще никакой предпосылки помечать ключевые слова ещё и символами! Достаточно иметь однозначную грамматику.
Re[2]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Milena, Вы писали:
M>Здравствуйте, Kolesiki, Вы писали:
K>>Собсно, сабж. Что мешает SQL'ю выполнять запросы вида K>>
K>>SELECT From FROM User WHERE ...
K>>
K>>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение? M>Пока не способен. Если вам легко написать такого рода парсер, обратитесь в Майрософт с предложением, может примут и внедрят в следующей версии.
Я спрашиваю не чем мне заняться, а принципиальный вопрос синтаксиса. Вы вообще понимаете тему? Вопрос про то, можно ли в SQL обойтись БЕЗ запрета ключевых слов как имён.
M>Грамматика вполне нормальная. А вот поля c именами типа User и From трудно назвать нормальными, так они не несут никакого смысла.
Ну да, особенно User — вообще бессмыслица какая-то, да? Подумаешь, что в 99% БД это необходимая сущность!
M> Обычно поля называеются UserId
Будем учить кого и как называть? Я вообще-то и таблицу могу назвать User — именно она и фигурирует в оригинальном сообщении. Вот только использовать я её могу только через квадратные скобки.
M>А вам программирование вообще как?
Ясно. Русский быдлятник, бессмысленный и беспощадный.
Re[2]: Почему имена не могут быть ключевыми словами?
Здравствуйте, _ABC_, Вы писали:
_AB>Здравствуйте, Kolesiki, Вы писали:
K>>Или (второй вариант) грамматика самого SQL настолько кривая, что ключевые слова в месте имён могут его сбить с толку? _AB>Покажите мне здесь, где место имен, где ключевое слово: _AB>
_AB>select name, surname, from from, user
_AB>
Очевидно же, что запрос кривой! Начало вот такое: "SELECT name, surname, from FROM" а дальше ошибочная запятая.
_AB>Если Вы считаете, что грамматика кривая, то предложите...
Опять, я не спрашиваю вас чем мне заниматься. Я спрашиваю, знаете ли вы из своей поверхностной практики запросы, которые могут привести к неоднозначности, если будет использовано ключевое слово как имя. Что, у нас и русские вопросы теперь с трудом парсятся??
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
N>>Варианты синтаксиса, когда ключевые слова явно выделены, а идентификаторы — нет, активно пробовались ещё в середине 60-х
K>Вы не о том. В век подсветки синтаксиса прямо в редакторе, нет вообще никакой предпосылки помечать ключевые слова ещё и символами! Достаточно иметь однозначную грамматику.
Предложите эту однозначную грамматику. Пока что, насколько я знаю, все попытки, включая от спецов мирового масштаба, провалились. Может, у вас будет оригинальный подход?
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
_AB>>Покажите мне здесь, где место имен, где ключевое слово: _AB>>
_AB>>select name, surname, from from, user
_AB>>
K>Очевидно же, что запрос кривой! Начало вот такое: "SELECT name, surname, from FROM" а дальше ошибочная запятая.
Без учета ключевых слов в качестве имен колонок, запрос абсолютно корректный.
select is_visible, is_published from sys.objects, sys.assemblies
K>Я спрашиваю, знаете ли вы из своей поверхностной практики запросы
Есть мнение, что кто-то не зная SQL, обвиняет других в поверхностной практике...
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
_AB>>Покажите мне здесь, где место имен, где ключевое слово: _AB>>select name, surname, from from, user
K>Очевидно же, что запрос кривой! Начало вот такое: "SELECT name, surname, from FROM" а дальше ошибочная запятая.
Очевидно же, что вы ошибаетесь. Второе from это назначение алиаса для колонки результата.
Re[4]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
K>Что, у нас и русские вопросы теперь с трудом парсятся??
Забьем на хамство. В общем-то, оно характерно для людей, возомнивших себя гениями, видящими то, что
не видят другие (в основном из-за незнания предмета, конечно).
Вот это "человеческий синтаксис, который изначально задумывался"? Как будем парсить? Я имею в виду,
алгоритм конкретный.
select from from from where where where is null order by union select from from group by
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
K>Здравствуйте, netch80, Вы писали:
N>>Варианты синтаксиса, когда ключевые слова явно выделены, а идентификаторы — нет, активно пробовались ещё в середине 60-х
K>Вы не о том. В век подсветки синтаксиса прямо в редакторе, нет вообще никакой предпосылки помечать ключевые слова ещё и символами! Достаточно иметь однозначную грамматику.
Да точно! Нужно было в грамматику добавить два вида символов: цветные(нужный цвет) для ключевых слов, бесцветные — для всего остального и было бы прекрасно. Только потом на rsdn кто ни будь бы спрашивал: Почему я не могу обозвать таблицу именем из "цветных" символов?
Здравствуйте, Kolesiki, Вы писали:
K>Про квадратные скобки в курсе, но я не хочу превращать запросы в придурковатый заборчик с именами. Хочу человеческий синтаксис (как он и задумывался при проектировании SQL).
Нужно быть очень большим извращенцем, чтобы давать имена совпадающие с ключевыми словами. Относится к любому языку. В том числе и не компьютерному.
Течёт вода Кубань-реки куда велят большевики.
Re[2]: Почему имена не могут быть ключевыми словами?
Здравствуйте, alpha21264, Вы писали:
A>Нужно быть очень большим извращенцем, чтобы давать имена совпадающие с ключевыми словами. Относится к любому языку. В том числе и не компьютерному.
На следующий день вдруг введут в язык новое ключевое слово, и оно совпадёт с твоим названием переменной.
Например, category. И что, от этого ты мгновенно станешь извращенцем? Ну, впрочем, наверно, станешь, раз так настаиваешь
А у нормальных языков есть средства описать, что какой-то идентификатор — гарантированно не ключевое слово, даже если совпало.
Жаль, что среди языков программирования таких мало — C# (префикс — @class), Erlang (синтаксис квотинга атома — 'if' вместо if)...
Надеюсь, скоро таких будет больше.
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, netch80, Вы писали:
N>А у нормальных языков есть средства описать, что какой-то идентификатор — гарантированно не ключевое слово, даже если совпало.
У SQL тоже есть, только ТС они не устраивают.
Re[3]: Почему имена не могут быть ключевыми словами?
Здравствуйте, Kolesiki, Вы писали:
K>Здравствуйте, Milena, Вы писали:
M>>Здравствуйте, Kolesiki, Вы писали:
K>>>Собсно, сабж. Что мешает SQL'ю выполнять запросы вида K>>>
K>>>SELECT From FROM User WHERE ...
K>>>
K>>>В MS SQL что user, что from — ключевые слова и он постоянно ругается "ошибка синтаксиса". Он что, неспособен распарсить элементарное выражение? M>>Пока не способен. Если вам легко написать такого рода парсер, обратитесь в Майрософт с предложением, может примут и внедрят в следующей версии.
K>Я спрашиваю не чем мне заняться, а принципиальный вопрос синтаксиса. Вы вообще понимаете тему? Вопрос про то, можно ли в SQL обойтись БЕЗ запрета ключевых слов как имён.
Я ответила на ваш вопрос — смотрите выше жирным. Ключевое слово тут "Пока", хотя я сильно сомневаюсь в необходимость вкладывать сотни человекочасов в то, что нужно единицам.
M>>Грамматика вполне нормальная. А вот поля c именами типа User и From трудно назвать нормальными, так они не несут никакого смысла. K>Ну да, особенно User — вообще бессмыслица какая-то, да? Подумаешь, что в 99% БД это необходимая сущность!
Ну как сказать. У меня и в прошлой компании, и в этой таблица такого типа называется Users — о боже, и как-то нам даже не приходится квадратные скобки писать!
M>> Обычно поля называеются UserId K>Будем учить кого и как называть? Я вообще-то и таблицу могу назвать User — именно она и фигурирует в оригинальном сообщении. Вот только использовать я её могу только через квадратные скобки.
Забавно, что вы готовы истратить огромное количество времени на страдания о том, как трудно писать код с квадратными скобками и какой он нечеловеческий, хотя за это время можно было эти самые скобки везде проставить и жить счастливо. Будьте проще — есть то, что есть. 10-15 лет назад был SQL Server 2000, который не поддерживал IntelliSense, хотя в ORACLE это все работало без проблем, а теперь SQL позволяет писать даже запросы к Hadoop. Так не забить ли на эту мелочь с синтаксисом и не переключиться ли на решение реальных проблем вместо борьбы с квадратными скобками?