SQL‑запрос и использование зарезервированных имен

Имя order конфликтует с ключевым словом SQL, поэтому без экранирования запрос обычно не выполнится. Сам скалярный подзапрос COUNT(*) допустим, но здесь лишний.

Короткий ответ

Что ответить на собеседовании

Имя order конфликтует с ключевым словом SQL, поэтому без экранирования запрос обычно не выполнится. Сам скалярный подзапрос COUNT(*) допустим, но здесь лишний.

Подробный разбор

Ответ с пояснениями

Условие

В базе данных присутствует таблица order(name, price). Возникает вопрос: корректно ли выполнится следующий запрос?

select (select count(*) from order) as qty

Ответ

Имя order конфликтует с ключевым словом SQL, поэтому без экранирования запрос обычно не выполнится. Сам скалярный подзапрос COUNT(*) допустим, но здесь лишний.

Для PostgreSQL проще:

SELECT COUNT(*) AS qty
FROM "order";

COUNT(*) возвращает одну строку даже для пустой таблицы, со значением 0. В исходном варианте после экранирования подзапрос также даст одно значение. Правила quoting и допустимость SELECT без внешнего FROM зависят от СУБД; безопаснее выбирать незарезервированные имена таблиц.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее