SQL: основы языка запросов
Таблица есть. Данные лежат. Вопрос: как достать «всех студентов группы 201 с оценкой выше 4» без ручного пролистывания? Для реляционных СУБД ответ почти всегда - SQL.
SQL (Structured Query Language) - язык запросов к реляционным базам данных: выборка, вставка, изменение, удаление данных и работа со структурой таблиц.
Базовое про БД и таблицы - в статье «Базы данных: понятие, виды, СУБД».
Зачем SQL, если есть фильтр в Excel
Фильтр удобен на одном листе. SQL заточен под большие таблицы, связи между ними и повторяемые запросы. Один текст запроса можно сохранить, встроить в сайт, запускать каждую ночь.
Основные группы команд
- SELECT - прочитать данные.
- INSERT - добавить строки.
- UPDATE - изменить.
- DELETE - удалить.
- CREATE/ALTER/DROP - создать или менять структуру (таблицы, поля).
На школьной контрольной чаще всего живут SELECT и немного JOIN-логики «на словах».
Каркас SELECT
Типичный скелет:
SELECT поля FROM таблица WHERE условие ORDER BY поле;
Пример смысла: выбрать ФИО и балл из оценок, где предмет = информатика, отсортировать по убыванию балла.
Операции сравнения: =, <>, >, >=, LIKE для шаблонов текста, AND/OR для склейки условий.
Связи и JOIN
Когда ФИО в одной таблице, а баллы в другой, без связи получите кашу. JOIN склеивает строки по ключу: ocenki.student_id = studenty.id.
В учебном ответе достаточно объяснить: «берём строки, где внешний ключ совпал с первичным».
Агрегаты
- COUNT - сколько строк
- SUM - сумма
- AVG - среднее
- MIN/MAX - крайние значения
Часто рядом GROUP BY: среднее по каждой группе, а не по всей таблице.
Опасные UPDATE и DELETE
Без WHERE обновление/удаление заденет все строки. В учебной СУБД это поржёт таблицу. В боевой - инцидент. Привыкайте мысленно проговаривать условие до запуска.
SQL и приложения
Сайт редко «говорит» с диском напрямую. Приложение на Python/Java формирует SQL (или использует ORM), СУБД отвечает строками. Ошибка «сайт не показывает заказы» часто сидит в запросе, а не в кнопке.
Ошибки
- Путают SQL и СУБД.
- Пишут SELECT без FROM.
- Забывают условие связи при двух таблицах.
- Считают, что порядок строк всегда «как вводили» - без ORDER BY порядок не гарантирован.
Шпаргалка
- SQL - язык запросов к реляционной БД.
- SELECT/INSERT/UPDATE/DELETE - база.
- WHERE фильтрует, ORDER BY сортирует, JOIN связывает.
- Агрегаты + GROUP BY для сводок.
- Без WHERE менять данные опасно.