Синтаксис SQL
Синтаксис SQL: как устроены инструкции, зачем нужна точка с запятой, регистр ключевых слов и комментарии — то, без чего не пишется ни один запрос.
SQL-инструкция — это последовательность ключевых слов, имён объектов и значений, которую сервер базы данных читает и выполняет как единое указание.
Структура инструкции
Инструкция начинается с глагола-команды (SELECT, INSERT, UPDATE…) и заканчивается точкой с запятой ;. Переносы строк и дополнительные пробелы игнорируются — их используют, чтобы сделать запрос читаемым.
-- Однострочная запись
SELECT emp_name, hire_date FROM employees WHERE salary > 5000;
-- То же самое, но в несколько строк — удобнее читать
SELECT emp_name, hire_date
FROM employees
WHERE salary > 5000;
Результат:
+--------------+------------+ | emp_name | hire_date | +--------------+------------+ | Tony Montana | 2002-07-15 | | Sarah Connor | 2005-10-18 | | Rick Deckard | 2007-01-03 | | Martin Blank | 2008-06-24 | +--------------+------------+
Регистр ключевых слов
SQL не чувствителен к регистру в ключевых словах: SELECT, select и Select — одно и то же. Имена таблиц и столбцов могут вести себя иначе — в Linux/Unix они регистрозависимы, в Windows — нет.
-- Все три варианта корректны и эквивалентны
SELECT emp_name FROM employees;
select emp_name from employees;
Select Emp_Name From Employees;
Соглашение. Принято писать ключевые слова SQL в ВЕРХНЕМ регистре, а имена таблиц и столбцов — в нижнем. Это делает запрос легче читаемым.
Комментарии
Комментарии помогают документировать запросы. Движок базы данных их полностью игнорирует.
Однострочный комментарий — --
-- Получаем имена сотрудников с зарплатой выше 5000
SELECT emp_name, salary
FROM employees
WHERE salary > 5000;
Многострочный комментарий — /* … */
/* Выбираем сотрудников,
нанятых после 2005 года,
у которых есть отдел */
SELECT emp_name, hire_date
FROM employees
WHERE hire_date > '2005-01-01'
AND dept_id IS NOT NULL;
Результат:
+--------------+------------+ | emp_name | hire_date | +--------------+------------+ | Rick Deckard | 2007-01-03 | +--------------+------------+
Порядок предложений SELECT
В операторе SELECT предложения всегда идут в строго определённом порядке:
Порядок | Предложение | Обязательное? |
1 |
| да |
2 |
| почти всегда |
3 |
| нет |
4 |
| нет |
5 |
| нет |
6 |
| нет |
7 |
| нет |
Частые ошибки новичков
- Забыть точку с запятой — в интерактивном клиенте запрос просто не выполнится.
- Перепутать порядок предложений — например, написать
WHEREпослеGROUP BY. Это синтаксическая ошибка. - Путать имена столбцов —
emp_Nameиemp_nameв Linux — разные идентификаторы.
Коротко
- SQL-инструкция заканчивается точкой с запятой
;. - Ключевые слова нечувствительны к регистру; имена объектов могут быть чувствительны на Linux.
- Комментарии:
--— однострочный,/* … */— многострочный. - Предложения
SELECT-запроса идут в строгом порядке: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT.