Skip to main content

Язык SQL (SELECT, WHERE, (LEFT) JOIN, GROUP BY, HAVING).

DDL и DML — подмножество языка SQL

DDL (Data Definition Language, язык описания данных) служит для создания и модификации структуры БД, т.е. для создания/изменения/удаления таблиц и связей.

DML (Data Manipulation Language, язык манипулирования данными) позволяет осуществлять манипуляции с данными таблиц, т.е. с ее строками. Он позволяет делать выборку данных из таблиц, добавлять новые данные в таблицы, а также обновлять и удалять существующие данные.


SQL

язык запросов для управления данными в РСУБД.


SELECT

оператор для выбора данных из одной или нескольких таблицы

SELECT <columns> FROM <table>

WHERE

оператор для фильтрации результатов

SELECT <columns> FROM <table> WHERE <condition>

GROUP BY

оператор для группировки по определенному столбцу

SELECT <columns> FROM <table> GROUP BY <column>
SELECT Department, COUNT(*) as EmployeeCount FROM Employees GROUP BY Department

HAVING

позволяет ставить условия на группы, которые были получены после GROUP BY.

Это как WHERE, но для сгруппированных данных

SELECT Country, COUNT(*) AS cnt
FROM Customers
GROUP BY Country
HAVING COUNT(*) > 10;

WHERE — фильтрует исходные строки перед группировкой. HAVING — фильтрует уже сгруппированные результаты.

LEFT JOIN

выводит все строки из левой таблицы, даже если в правой нет совпадений. Если нет совпадающих данных — связанные поля будут NULL.

SELECT c.CustomerName, o.OrderID
FROM Customers c
LEFT JOIN Orders o
  ON c.CustomerID = o.CustomerID;

Последовательность логической обработки SQL-запроса

FROM / JOIN → WHERE → GROUP BY → HAVING → SELECT

То есть:

  • сначала выбираются таблицы и объединяются,
  • потом фильтруются строки,
  • затем группируются,
  • после фильтруются группы,
  • и только потом выдается результат.