Короткий ответ
SELECT выбирает данные из базы: возвращаемые данные помещаются в результирующую таблицу (result-set). Вместе с ним используются WHERE для фильтрации записей, ORDER BY для сортировки, GROUP BY с агрегатными функциями для сводных результатов, HAVING для фильтрации групп и DISTINCT для уникальных записей.
Как это работает подробнее
SELECT — один из стандартных операторов языка SQL, а перечисленные предложения уточняют, какие строки и в каком виде вернёт запрос.
- WHERE. Фильтрует записи по конкретным условиям, например
WHERE graduation_year = 2019. - ORDER BY. Сортирует записи по одному или нескольким полям в возрастающем или убывающем порядке:
ORDER BY studentID DESC. - GROUP BY. Группирует записи с одинаковыми значениями и применяется вместе с агрегатными функциями для сводных результатов.
- HAVING. Фильтрует уже сгруппированные записи и, в отличие от WHERE, может накладывать условия на агрегаты.
- DISTINCT. Возвращает уникальные записи:
SELECT DISTINCT StudentID, StudentName FROM Student.
Пример кода
Выборка с фильтром и сортировкой
SELECT * FROM myDB.students;
SELECT * FROM myDB.students
WHERE graduation_year = 2019
ORDER BY studentID DESC;
SELECT DISTINCT StudentID, StudentName FROM Student;Что использовать на практике
- Нужные столбцы. Перечисляй конкретные столбцы вместо
*, когда это возможно. - Ранняя фильтрация. Сужай выборку через
WHERE, чтобы не тянуть лишние строки. - Порядок обработки. Помни последовательность: фильтрация, группировка, фильтрация групп, затем сортировка результата.
Подводные камни
- Порядок предложений. Путаница в последовательности WHERE, GROUP BY, HAVING и ORDER BY — частая ошибка в запросах.
- DISTINCT по набору колонок. Ключевое слово учитывает все перечисленные столбцы, а не один, поэтому дубликаты оцениваются по их комбинации.
- Условия на агрегаты. Отфильтровать агрегированное значение через
WHEREнельзя — для этого служитHAVING.
Как отвечать на собеседовании
- Дай определение SELECT и result-set → перечисли основные предложения и их назначение → приведи пример с WHERE и ORDER BY → упомяни GROUP BY, HAVING и DISTINCT.