Данная статья относится к циклу статей, посвященных PostgreSQL. В предыдущей статье мы говорили об операторе PostgreSQL SELECT DISTINCT. Теперь мы углубимся в изучение условия WHERE, используемое для фильтрации строк, возвращаемых оператором SELECT.
Итак, как уже было сказано, в одном из предыдущих уроков мы узнали, как использовать оператор SELECT для запроса данных из таблицы. Но что делать, если вы хотите запросить только определённые строки из таблицы, которые удовлетворяют определённому условию? В таком случае вам нужно использовать условие WHERE.
Введение в условие PostgreSQL WHERE
Давайте обратим внимание на синтаксис условия PostgreSQL WHERE:
SELECT select_list
FROM table_name
WHERE condition;
Условие WHERE появляется сразу после условия FROM оператора SELECT. Условие WHERE использует condition (условие) для фильтрации строк, возвращаемых оператором SELECT.
Условие (condition) должно оцениваться как истинное, ложное или неизвестное. Оно может быть как булевым (логическим) выражением, так и комбинацией булевых (логических) выражений с использованием операторов AND и OR.
Запрос возвращает строки, которые удовлетворяют condition в условии WHERE. Говоря иначе, в набор результатов будут включены только те строки, которые приводят к тому, что condition эквивалентен true.
Помимо оператора SELECT, вы можете использовать условие WHERE в операторах UPDATE и DELETE, чтобы указать строки, которые необходимо обновить или удалить соответственно.
В таблице, приведённой ниже, описываются стандартные операторы сравнения:
Оператор | Описание |
---|---|
= | Оператор равенства |
> | Больше чем |
< | Меньше чем |
>= | Больше или равно |
<= | Меньше или равно |
<> или != | Оператор неравенства |
AND | Логический оператор И |
OR | Логический оператор ИЛИ |
Примеры условия PostgreSQL WHERE
Давайте попрактикуемся с некоторыми примерами использования условия WHERE с различными операторами. Для этого мы будем использовать таблицу customer (покупателей) из примера базы данных.
1) Пример использования условия WHERE с оператором равенства (=)
Если вам необходимо получить всех тех покупателей, чьи имена Jamie, вы можете использовать условие WHERE с оператором равенства, как показано ниже:
SELECT
last_name,
first_name
FROM
customer
WHERE
first_name = 'Jamie';
2) Пример использования условия WHERE с оператором AND
В следующем примере мы будем искать покупателей с именем Jamie И фамилией Rice, используя логический оператор AND для объединения двух логических выражений:
SELECT
last_name,
first_name
FROM
customer
WHERE
first_name = 'Jamie'
AND last_name = 'Rice';
3) Пример использования условия WHERE с оператором OR
В этом примере мы будем искать покупателей с фамилией Rodriguez ИЛИ именем Adam, используя оператор OR.
SELECT
first_name,
last_name
FROM
customer
WHERE
last_name = 'Rodriguez' OR
first_name = 'Adam';
4) Пример использования условия WHERE с оператором IN
Если вам необходимо сопоставить строку с любой строкой в списке, то вы можете использовать оператор IN. Например, следующий оператор возвращает покупателей, чьё имя или Ann, или Anne, или Annie.
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name IN ('Ann','Anne','Annie');
5) Пример использования условия WHERE с оператором LIKE
Чтобы найти строку, которая соответствует указанному шаблону, необходимо использовать оператор LIKE. В следующем примере возвращаются все покупатели, имена которых начинаются с Ann:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE 'Ann%'
Здесь % называется подстановочным знаком, который соответствует любой строке. Шаблон ‘Ann%’ соответствует любой строке, которая начинается с ‘Ann’.
6) Пример использования условия WHERE с оператором BETWEEN
В следующем примере мы будем искать покупателей, чьи имена начинаются с буквы A, и длина которых находится в диапазоне от 3 до 5 символов с помощью оператора BETWEEN. Обратите внимание, что оператор BETWEEN возвращает true, если значение находится в диапазоне значений.
SELECT
first_name,
LENGTH(first_name) name_length
FROM
customer
WHERE
first_name LIKE 'A%' AND
LENGTH(first_name) BETWEEN 3 AND 5
ORDER BY
name_length;
В этом примере мы использовали функцию LENGTH(), возвращающую количество символов входной строки.
7) Использование условия WHERE с оператором неравенства (<>)
В этом примере будем искать покупателей, имена которых начинаются с Bra, а фамилия не Motley:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE 'Bra%' AND
last_name <> 'Motley';
Обратите внимание, что вы можете использовать оператор != вместо оператора <>. Они абсолютно идентичны друг другу.
А мы двигаемся дальше, изучив условие WHERE, позволяющее фильтровать строки, получаемые из оператора SELECT, переходим к условию LIMIT.
Источник: PostgreSQL Tutorial from Scratch