Условие WHERE в SQL

В этой статье вы научитесь выбирать данные из таблицы с определенным условием с помощью WHERE.

В предыдущей статье мы узнали, как получить все записи из таблицы или столбцов таблицы. Но в реальном мире обычно нужно выбрать, обновить или удалить только те записи, которые удовлетворяют определенным условиям. Например, могут понадобиться только пользователи, принадлежащие к определенной возрастной группе, живущие в определенной стране и т.д.

Условие WHERE используется с операторами SELECT, UPDATE и DELETE. В этой статье мы остановимся на использовании WHERE с SELECT.

Синтаксис

Условие WHERE используется с оператором SELECT для извлечения только тех записей, которые удовлетворяют заданным условиям.

Базовый синтаксис выглядит так:

SELECT список_столбцов FROM имя_таблицы WHERE условие;

список_столбцов — это имена столбцов/полей, таких как имя, возраст, страна и т.д. таблицы базы данных, значения которых вы хотите получить.

Если вам нужны значения из всех столбцов, имеющихся в таблице, можете использовать следующий синтаксис:

SELECT * FROM имя_таблицы WHERE условие;

Операторы для условий

Для условий используются операторы сравнения: =!=><>= и <=.

Оператор Описание Пример
= Равно WHERE id = 2
> Больше чем WHERE age > 30
< Меньше чем WHERE age < 18
>= Больше или равно WHERE rating >= 4
<= Меньше или равно WHERE price <= 100
LIKE Сопоставление паттерна WHERE name LIKE 'An'
IN Проверяет, совпадает ли указанное значение с любым значением в списке или подзапросе WHERE country IN ('RUSSIA', 'BELARUS')
BETWEEN Проверяет, находится ли указанное значение в данном диапазоне значений WHERE rating BETWEEN 3 AND 5

Используем WHERE

В прошлой статье мы тренировались на датасете Austin_Animal_Center_Intakes.csv (Google Disc →). Скачайте и установите таблицу в свою СУБД.

Допустим, мы хотим узнать все месяцы, в которых было принято более 1 000 особей одного вида животных. Это поможет сделать следующий SQL-запрос:

 SELECT year,
        month,
        animal_type,
        count
   FROM austin_animal_center_intakes_by_month
  WHERE COUNT > 1000

Результат:

year month animal_type count
2016 5 Dog 1,020
2015 5 Cat 1,009
2015 6 Cat 1,103
2015 6 Dog 1,014

Вы также можете использовать WHERE с = и != для ограничения результатов для текстовых полей. Например, если нужно просмотреть информацию только о кошках, взятых в центр животных Остина, можно выполнить такой запрос:

SELECT year,
       month,
       count,
       animal_type
  FROM austin_animal_center_intakes_by_month
 WHERE animal_type = "Cat"

Примечаение. Для числовых значений сравниваемое число (1000 в первом примере) не заключено в кавычки. При сравнении текстовых строк сравниваемый текст должен быть заключен в двойные кавычки ("Cat" во втором примере). Запросы с текстовыми строками также чувствительны к регистру. Если выполнить второй запрос с "cat" вместо "Cat", то SQL ничего не найдет.

Результат:

year month count animal_type
2013 10 542 Cat
2015 11 488 Cat
2015 12 320 Cat
2016 1 304 Cat
2016 2 279 Cat
2014 1 335 Cat
2016 3 333 Cat

Примечание. Результаты запросов с использованием символов >, <, >= и <= для столбцов со строковыми значениями могут оказаться неожиданными. Текстовые строки рассматриваются как числа с алфавитным порядком — больше строка или меньше определяется именно по нему. Если мы выполним запрос к таблице Intakes для всех типов животных > "Cat", результаты будут включать всех собак ("Dog" > "Cat"), диких животных ("Wildlife" > "Cat") и других животных ("Other" > "Cat"), но не кошек ("Cat" > "Cat" → false, т. к. "Cat" = "Cat").

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©