Синтаксис 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

SELECT

да

2

FROM

почти всегда

3

WHERE

нет

4

GROUP BY

нет

5

HAVING

нет

6

ORDER BY

нет

7

LIMIT

нет

Частые ошибки новичков

  • Забыть точку с запятой — в интерактивном клиенте запрос просто не выполнится.
  • Перепутать порядок предложений — например, написать WHERE после GROUP BY. Это синтаксическая ошибка.
  • Путать имена столбцовemp_Name и emp_name в Linux — разные идентификаторы.

Коротко

  • SQL-инструкция заканчивается точкой с запятой ;.
  • Ключевые слова нечувствительны к регистру; имена объектов могут быть чувствительны на Linux.
  • Комментарии: -- — однострочный, /* … */ — многострочный.
  • Предложения SELECT-запроса идут в строгом порядке: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT.
Проверьте себя
1. Какой символ завершает SQL-инструкцию?
AДвоеточие (:)
BТочка с запятой (;)
CТочка (.)
DПеренос строки
2. Что из перечисленного верно относительно регистра ключевых слов в SQL?
AКлючевые слова обязательно писать в верхнем регистре — иначе ошибка
BКлючевые слова не чувствительны к регистру: SELECT и select — одно и то же
CКлючевые слова чувствительны к регистру: SELECT и select — разные команды
DРегистр важен только для имён таблиц, но не для ключевых слов
3. Как правильно написать однострочный комментарий в SQL?
A// Это комментарий
B# Это комментарий
C/* Это комментарий */
D-- Это комментарий
4. Какой запрос написан корректно с точки зрения синтаксиса SQL?
ASELECT emp_name FROM employees WHERE salary > 5000;
BSELECT emp_name FROM employees WHERE salary > 5000;
CSELECT emp_name FROM employees WHERE salary > 5000;
DВсе три варианта корректны