SQL запрос: базовый синтаксис и примеры

Базовый синтаксис SQL-запросов, используемый в 80-90% случаев, включает основные элементы, рассматриваемые ниже. Примеры рекомендуется запускать в интерактивном редакторе.

Структура SQL запроса

Общая структура SQL-запроса:

SELECT [столбцы]
FROM [таблица]
WHERE [условие]
GROUP BY [столбец]
HAVING [условие]
ORDER BY [столбец]

SELECT и FROM — обязательные элементы, определяющие выбираемые столбцы и источник данных. Остальные — необязательные, используются для фильтрации, группировки и сортировки данных.

SELECT и FROM

  • SELECT * FROM customers: Выборка всех строк из таблицы customers. Звездочка (*) обозначает все столбцы.
  • SELECT customerID, customerName FROM customers: Выборка столбцов customerID и customerName из таблицы customers.

WHERE

WHERE — необязательный элемент для фильтрации данных. Часто используется с операторами IN, NOT IN, AND и OR.

  • SELECT * FROM customers WHERE City = ‘London’: Фильтрация по одному условию и одному значению.
  • SELECT * FROM customers WHERE City IN (‘London’, ‘Berlin’): Фильтрация по одному условию и нескольким значениям с использованием IN.
  • SELECT * FROM customers WHERE City NOT IN (‘Madrid’, ‘Berlin’, ‘Bern’): Фильтрация по одному условию и нескольким значениям с использованием NOT IN.
  • SELECT * FROM customers WHERE Country = ‘Germany’ AND City NOT IN (‘Berlin’, ‘Aachen’) AND customerID > 15: Фильтрация по нескольким условиям с использованием AND.
  • SELECT * FROM customers WHERE City IN (‘London’, ‘Berlin’) OR customerID > 4: Фильтрация по нескольким условиям с использованием OR.

GROUP BY

GROUP BY — необязательный элемент для агрегации данных по указанному столбцу. Требуется:

  1. Одинаковый перечень столбцов в SELECT и GROUP BY.
  2. Агрегатные функции (SUM, AVERAGE, COUNT, MAX, MIN) в SELECT для столбцов, по которым происходит группировка.
  • SELECT City, COUNT(customerID) FROM customers GROUP BY City: Группировка количества клиентов по городу.
  • SELECT Country, City, COUNT(customerID) FROM customers GROUP BY Country, City: Группировка количества клиентов по стране и городу.
  • SELECT productID, COUNT(orderID), SUM(quantity) FROM orderDetails GROUP BY productID: Группировка продаж по ID товара с разными агрегатными функциями.
  • SELECT City, COUNT(customerID) FROM customers WHERE Country = ‘Germany’ GROUP BY City: Группировка с фильтрацией исходной таблицы.
  • SELECT City, COUNT(customerID) AS NumberOfClients FROM customers GROUP BY City: Переименование столбца агрегации с помощью AS.

HAVING

HAVING — необязательный элемент для фильтрации сгруппированных данных. Аналогичен WHERE, но применяется после GROUP BY.

  • SELECT City, COUNT(customerID) FROM customers GROUP BY City HAVING COUNT(customerID) >= 5: Фильтрация сгруппированных данных, оставляя города с не менее чем 5 клиентами.
  • SELECT City, COUNT(customerID) AS NumberOfClients FROM customers GROUP BY City HAVING NumberOfClients >= 5: То же самое с переименованным столбцом.
  • SELECT City, COUNT(customerID) AS NumberOfClients FROM customers WHERE customerName NOT IN (…) GROUP BY City HAVING NumberOfClients >= 5: Пример запроса с WHERE и HAVING.

ORDER BY

ORDER BY — необязательный элемент для сортировки результатов.

  • SELECT * FROM customers ORDER BY City: Сортировка по одному столбцу (по возрастанию по умолчанию).
  • SELECT * FROM customers ORDER BY Country, City: Сортировка по нескольким столбцам.
  • SELECT * FROM customers ORDER BY customerID DESC: Обратная сортировка по одному столбцу (DESC — descending).
  • SELECT * FROM customers ORDER BY Country DESC, City: Обратная сортировка по одному столбцу и сортировка по умолчанию по второму.

JOIN

JOIN — необязательный элемент для объединения таблиц по общему ключу. Используется ON для указания условия соединения.

  • SELECT * FROM orders JOIN customers ON orders.customerID = customers.customerID: Соединение таблиц orders и customers по ключу customerID.

Различные типы JOIN (inner join, right join, left join) позволяют выполнять различные виды объединений. Подробности о типах JOIN — в следующих частях.

Рассмотрены основные элементы синтаксиса SQL-запросов. В следующих частях будут рассмотрены подзапросы, JOIN’ы и специальные операторы.

Что будем искать? Например,программа