Условие PostgreSQL WHERE

Читать первым в Telegram

Данная статья относится к циклу статей, посвященных 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

Поддержать проект

Социальные сети проекта:

Подпишись, чтобы ничего не пропустить!