Язык запросов к базам данных
💻 Информатика · 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они затронут всю таблицу.