В этой статье приведены примеры простых запросов SQL, которые начинающие программисты могут использовать для получения записей из своих баз данных.
Данная статья является переводом. Ссылка на оригинал.
Базовый запрос SELECT
Вот пример одного из самых распространенных запросов SQL:
Результат:
Этот запрос выбирает все столбцы во всех записях таблицы Pets. Символ звездочка (*) является шаблоном и обозначает, что мы хотим получить все столбцы из таблицы.
Для повышения производительности запросов обычно выбирают не все имеющиеся в таблице столбцы, а только те, которые нужны в данный момент. Вот пример:
Результат:
Фильтруем выборку данных
Чтобы получить только те строки, которые нам нужны, мы можем добавить в запрос операторWHERE.
Результат:
Вот еще один пример фильтрации выборки. На этот раз мы будем использовать операцию «больше» (>), чтобы получить записи с днем рождения питомца позже определенной даты (DOB, date of birth – дата рождения).
Результат:
Вы можете заменить операцию «больше» на любую другую, например, на «больше либо равно (>=), «меньше» (<) или «меньше либо равно» (<=).
Для получения значений, попадающих в некоторый диапазон, можно использовать оператор BETWEEN (например, день между датой начала и конца интервала).
Чтобы отсортировать записи, возвращаемые запросом, мы можем добавить в запрос оператор ORDER BY.
Сортировка в порядке возрастания
Для сортировки записей в порядке возрастания необходимо использовать ключевое слово ASC(ascending – возрастание). Такой порядок используется по умолчанию, поэтому ключевое слово в запросе можно не указывать.
или короче
Результат:
Сортировка в порядке убывания
Для получения результата запроса в порядке убывания нужно использовать ключевое слово DESC.
Результат:
Сортировка по нескольким столбцам
Чтобы отсортировать записи по нескольким столбцам, их имена нужно перечислить через запятую.
Результат:
Обратите внимание, что две записи с именем питомца Fluffyрасположены в разном порядке (это видно по значению в поле PetId). Это произошло потому, что в запросах сортировка производится сначала по столбцу PetName, а затем уже по столбцу PetId.
Сортировка по скрытым столбцам
Вы можете отсортировать результат запроса по столбцам, которые не входят в список выборки, расположенный после оператора SELECT.
Результат:
По этой выборке мы можем сделать вывод, что Tweet– самый младший питомец, а Meow– самый старший, потому что мы отсортировали записи по дате рождения (DOB) в порядке убывания.
Чтобы убедиться давайте, выполним запрос, добавив столбец DOB в список SELECT.
Результат:
Теперь мы видим, что дата рождения у питомцев Meowи Bark имеет значение NULL, поэтому на самом деле мы не знаем кто из них двоих младше.
Этот пример показывает, что значение NULLявляется наименьшим из всех возможных. Об этом нужно помнить, составляя запросы.
Для отбора записей по текстовому шаблону мы используем оператор LIKE.
Результат:
В приведенном примере мы выбрали всех питомцев, чьи имена начинаются с буквы F. Знак процента (%) используется как шаблонный символ, показывающий, что дальше может идти строка из любого количества знаков, в том числе и пустая. Такой шаблонный символ может использоваться в начале строки, в конце её или даже в середине.
Вот еще один пример:
Результат:
Выбор из списка
Оператор INпозволяет определить, что указанное значение входит в список или результат подзапроса. Рассмотрим пример.
Результат:
Подзапросы
Вы можете использовать оператор IN вместе с подзапросами (запросами, вложенными внутрь другого запроса). Например:
Результат:
Этот запрос возвращает только те виды питомцев из таблицы PetTypes, которые используются в таблице Pets. Чтобы продемонстрировать это более наглядно, ниже показано содержание этих двух таблиц.
Таблица PetTypes
Таблица Pets
Мы видим, что таблица PetTypes содержит вид Rabbit, но ни одному из домашних животных в таблице Pets не был присвоен этот тип (то есть в столбце PetTypeId таблицы Pets нет значения 4).
Можно спорить о том, считаются ли SQL-соединения «базовыми» SQL-запросами, но я все же решил включить их сюда.
В завершение этой статьи приведем пример внутреннего соединения.
Результат:
В этом запросе мы использовали внутреннее соединение (INNER JOIN) чтобы получить имена всех питомцев с указанием вида каждого из них. После оператора ON описано условие соединения (предикат), которое вычисляется для каждой пары соединяемых записей. В нашем случае столбец p.PetTypeId является внешним ключом в таблице Pets, а столбец pt.PetTypeId – первичным ключом в таблице PetTypes. Чтобы сделать код более красивым и лаконичным мы применили псевдонимы для имен таблиц.