Перейти к содержанию

Базовые конструкции SQL

Пример запроса:

SELECT name, age  
FROM users  
WHERE age >= 18  
ORDER BY age DESC  
LIMIT 10;

SELECT — выбрать столбцы

Команда SELECT используется для выборки данных из таблицы. С помощью SELECT указывается, какие столбцы данных нужно извлечь. Например:

SELECT name, age
Здесь мы выбираем столбцы name (имя) и age (возраст) из таблицы.

FROM — из какой таблицы

Ключевое слово FROM указывает, из какой таблицы нужно извлечь данные. Это обязательная часть запроса.

FROM users
Здесь мы указываем таблицу users, из которой будем извлекать данные.

WHERE — фильтрация данных

WHERE позволяет задавать условия, которые должны быть выполнены для отбора данных. Например, чтобы выбрать только тех пользователей, возраст которых 18 лет и больше:

WHERE age >= 18
В этом примере мы отбираем пользователей, чей возраст больше или равен 18.

ORDER BY — сортировка

ORDER BY используется для сортировки результатов. Он позволяет отсортировать данные по одному или нескольким столбцам. При этом можно указать направление сортировки: по возрастанию (ASC) или по убыванию (DESC).

ORDER BY age DESC
Здесь мы сортируем данные по столбцу age в порядке убывания.

LIMIT — ограничение количества строк

LIMIT задаёт максимальное количество строк, которые будут возвращены в результате запроса. Это полезно, если нужно получить только часть данных (например, первые 10 записей).

LIMIT 10

Этот запрос ограничивает количество результатов 10 строками.

DISTINCT — убрать дубликаты

Если необходимо исключить повторяющиеся значения, можно использовать DISTINCT. Например:

SELECT DISTINCT name
FROM users

Этот запрос вернёт уникальные значения в столбце name (без дублирования).

IN, BETWEEN, LIKE, IS NULL — фильтрация по условиям

Эти операторы позволяют задавать различные условия для фильтрации данных.

IN

Позволяет указать несколько значений, одно из которых должно соответствовать столбцу. Например:

WHERE age IN (18, 20, 25)
Этот запрос вернёт пользователей с возрастом 18, 20 или 25 лет.

BETWEEN

Используется для фильтрации данных в диапазоне значений. Например:

WHERE age BETWEEN 18 AND 30
Этот запрос выберет пользователей с возрастом от 18 до 30 лет (включая границы).

LIKE

Используется для поиска значений, которые соответствуют паттерну. Например:

WHERE name LIKE 'A%'
Этот запрос выберет всех пользователей, чьи имена начинаются с буквы “A”.

IS NULL

Используется для поиска записей, где столбец имеет значение NULL (отсутствие значения). Например:

WHERE age IS NULL
Этот запрос выберет все записи, где возраст не указан (равен NULL).

AS — задать псевдоним столбцу

Команда AS позволяет задать псевдоним (псевдоним столбца или таблицы) для более удобного обращения. Например:

SELECT name AS user_name
FROM users

В этом запросе столбец name будет представлен как user_name в результирующем наборе данных.
Это особенно полезно при работе с вычисляемыми столбцами или длинными названиями.

Пример подробного SQL-запроса

SELECT DISTINCT name AS user_name, age  
FROM users  
WHERE age BETWEEN 18 AND 30
  AND name LIKE 'A%'
ORDER BY age DESC
LIMIT 10;

Этот запрос выбирает уникальные имена и возраст пользователей, чьи имена начинаются с буквы “A” и чей возраст находится в диапазоне от 18 до 30 лет. Результаты сортируются по возрасту в порядке убывания, и ограничиваются первыми 10 записями.

Порядок написания запроса

SELECT <столбцы или выражения> FROM <таблицы или подзапросы> JOIN <таблицы> ON <условия> -- если есть соединения WHERE <условие фильтрации строк> GROUP BY <группировка> HAVING <условие для агрегированных данных> ORDER BY <сортировка> LIMIT <ограничение на количество строк>

Порядок выполнения (логический)

  1. FROM / JOIN – выбираются таблицы, подготавливаются данные для работы.
  2. WHERE – фильтрация строк (но ещё без агрегатных функций).
  3. GROUP BY – группировка строк.
  4. HAVING – фильтрация уже сгруппированных данных.
  5. SELECT – выбираются нужные столбцы и вычисляются выражения.
  6. DISTINCT – убираются дубликаты (если есть).
  7. ORDER BY – сортировка результата.
  8. LIMIT / OFFSET – ограничение количества возвращаемых строк.