Продолжаем изучение английского SQL начатое там и тут. Если вы прочитали эти статьи и выполнили тесты здесь то вы уже знаете пять слов из лексикона дата-инженеров. Вспомним их:
- SELECT - выбрать
- FROM - из таблицы
- ORDER BY - отсортировать по
- ASC - возрастанию
- DESC - убыванию
Используя этот ограниченный лексикон вы можете извлекать данные из таблиц базы данных в нужном вам порядке. В этой статье введём еще одно слово - LIMIT - ограничение. Данное ключевое слово позволяет нам ограничить количество строк возвращаемых запросом. Снова обратимся к нашей таблице студентов и напишем следующий запрос:
SELECT * FROM students LIMIT 1;
Выполнив его мы получим следующий результат:
Как видите сервер вернул нам одну строку из таблицы. Почему именно эту? Мы не указали в нашем запросе ничего относительно того какую строку нам нужно и сервер сделал это на свое усмотрение. Возможно в следующий раз этот же запрос вернёт другую запись и тоже будет прав. Ведь в случае если запрос не формулирует чёткого требования к серверу он волен поступать по своему разумению (точнее по разумению разработчиков серверной программы).
Что можно сделать чтобы быть уверенным в результате такого запроса? Можно скомбинировать команду LIMIT с уже известной вам командой сортировки ORDER BY.
SELECT * FROM students ORDER BY score ASC LIMIT 1;
Этот запрос сначала отсортирует ВСЕ ЗАПИСИ в таблице по возрастанию оценок и затем вернет нам одну (первую) запись из этого списка. То есть мы получим запись студента с минимальной оценкой. Если таких студентов несколько то результатом всё равно будет одна строка. Применив это новое слово вы сможете пройти этот тест
Что бы найти трёх лучших по успеваемости студентов нужно выполнить запрос:
SELECT * FROM students ORDER BY score DESC LIMIT 3;
а для поиска трёх отстающих - нужно поменять порядок сортировки на противоположный:
SELECT * FROM students ORDER BY score ASC LIMIT 3;
Вы можете свободно экспериментировать с SQL запросами на площадке SQLize.online а если возникли вопросы спросить профессионалов в нашем чате
Если вопросов нет, то можно переходить к следующему уроку