P
pro·school.ru
Каталог школ

Язык запросов к базам данных

💻 Информатика · 11 класс

Зачем нужны запросы

Запрос — это команда к базе данных, которая описывает, какие данные нужно получить или изменить. В реляционных СУБД для запросов используют специальный язык структурированных запросов, его кратко обозначают SQL. Запрос не описывает, как именно перебирать записи, — он лишь говорит, что требуется получить, а СУБД сама выбирает способ выполнения.

Выборка данных

Основная операция — выборка строк из таблицы. Она задаёт три вещи: какие поля показать, из какой таблицы и при каком условии. Рассмотрим таблицу учеников.

КодФамилияКлассБалл
1Иванов11А4.6
2Петрова11Б4.9
3Сидоров11А4.2
4Кузьмина11Б3.8

Чтобы показать фамилии и баллы всех учеников, пишут простой запрос:

SELECT Фамилия, Балл FROM Ученики;

Условия отбора

Чтобы выбрать не все строки, а только нужные, добавляют условие. Оно записывается после служебного слова WHERE и работает как логическое выражение для каждой записи: строка попадает в результат, если условие истинно.

SELECT Фамилия FROM Ученики WHERE Балл > 4.5;

Такой запрос вернёт Иванова и Петрову. В условиях можно сравнивать значения (>, <, =) и соединять их связками AND и OR:

SELECT Фамилия FROM Ученики WHERE Класс = '11Б' AND Балл > 4;

Сортировка и вычисления

Результат можно упорядочить по любому полю. За это отвечает указание ORDER BY; по умолчанию сортировка идёт по возрастанию.

SELECT Фамилия, Балл FROM Ученики ORDER BY Балл;

СУБД умеет считать итоги по группе записей с помощью агрегатных функций: количество COUNT, сумма SUM, среднее AVG, минимум и максимум.

SELECT AVG(Балл) FROM Ученики WHERE Класс = '11А';

Группировка записей

Часто нужно посчитать итоги не по всей таблице, а отдельно по каждой группе записей. Для этого служит указание GROUP BY: оно объединяет строки с одинаковым значением поля, а агрегатная функция считается внутри каждой группы. Чтобы узнать средний балл в каждом классе, пишут:

SELECT Класс, AVG(Балл) FROM Ученики GROUP BY Класс;

Результат содержит по одной строке на каждый класс с его средним баллом. Так одним запросом получают сводку по всем группам сразу.

Изменение данных

Запросы не только читают данные, но и изменяют их. Добавление новой записи выполняет команда INSERT, изменение существующих — UPDATE, удаление — DELETE. У команд изменения тоже есть условие отбора, чтобы операция затронула только нужные строки.

UPDATE Ученики SET Балл = 5 WHERE Код = 4;

Такая команда поставит балл 5 только ученику с кодом 4, не трогая остальных. Если забыть условие WHERE, изменение применится сразу ко всем записям таблицы.

Частая ошибка: путать условие отбора строк и сортировку. WHERE решает, какие записи останутся, а ORDER BY — в каком порядке их вывести. Это разные действия. Ещё опаснее забыть WHERE в команде изменения — тогда пострадает вся таблица.

Кратко о главном

  • Запрос описывает, какие данные нужно получить, а не как их перебирать.
  • Выборка задаёт поля, таблицу и условие отбора записей.
  • Условие после WHERE оставляет только строки, для которых оно истинно.
  • Сортировку задают через ORDER BY, итоги — агрегатными функциями.
  • Указание GROUP BY считает итоги по каждой группе записей отдельно.
  • Команды INSERT, UPDATE, DELETE изменяют данные; без WHERE они затронут всю таблицу.