WHERE: Фильтрация данных

PostgreSQL WHERE: Фильтрация данных

Добро пожаловать на наш следующий урок по PostgreSQL! Сегодня мы изучим оператор WHERE, основной компонент, используемый для фильтрации данных в ваших запросах на PostgreSQL. Освоив оператор WHERE, вы сможете извлекать именно ту информацию, которая вам нужна из ваших баз данных.

Введение в оператор WHERE

В PostgreSQL оператор WHERE используется для задания условий, которые фильтруют записи, возвращаемые запросом. Применяя условия, вы можете сузить результат до строк, которые соответствуют вашим критериям.

Базовый синтаксис

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • SELECT: Указывает столбцы для извлечения.
  • FROM: Определяет таблицу для запроса.
  • WHERE: Определяет условие для фильтрации строк.

Фильтрация данных в PostgreSQL

Давайте рассмотрим различные способы использования оператора WHERE для эффективной фильтрации данных.

1. Использование операторов сравнения

Операторы сравнения сравнивают значения столбцов с заданным выражением.

  • =: Равно
  • <> или !=: Не равно
  • <: Меньше
  • >: Больше
  • <=: Меньше или равно
  • >=: Больше или равно

Пример: Получить книги, цена которых выше $10

SELECT title, price
FROM books
WHERE price > 10;

Просмотреть инициализацию схемы

2. Фильтрация с использованием строковых шаблонов

Использование оператора LIKE

Оператор LIKE позволяет выполнять сопоставление по шаблону с использованием подстановочных символов.

  • %: Представляет ноль или более символов
  • _: Представляет один символ

Пример: Найти авторов, имена которых начинаются с 'J'

SELECT name
FROM authors
WHERE name LIKE 'J%';

3. Использование логических операторов

Логические операторы позволяют объединять несколько условий.

  • AND: Все условия должны быть истиной
  • OR: Хотя бы одно условие должно быть истиной
  • NOT: Инвертирует результат условия

Пример: Получить книги Джейн Остен, цена которых ниже $10

SELECT title, author, price
FROM books
WHERE author = 'Jane Austen' AND price < 10;

4. Оператор BETWEEN

Оператор BETWEEN выбирает значения в заданном диапазоне.

Пример: Найти книги, количество страниц которых от 200 до 400

SELECT title, pages
FROM books
WHERE pages BETWEEN 200 AND 400;

5. Оператор IN

Оператор IN проверяет, соответствует ли значение любому из значений в списке.

Пример: Получить книги определенных авторов

SELECT title, author
FROM books
WHERE author IN ('George Orwell', 'Harper Lee');

6. Обработка значений NULL

IS NULL и IS NOT NULL

Используйте эти операторы, чтобы проверить значения NULL (неизвестные значения).

Пример: Найти книги без указанной цены

SELECT title
FROM books
WHERE price IS NULL;

7. Объединение условий с помощью скобок

Скобки помогают сгруппировать условия и управлять логическим потоком.

Пример: Сложная фильтрация

SELECT title, author, price
FROM books
WHERE (author = 'George Orwell' OR author = 'J.D. Salinger') AND price < 10;

8. Использование функций в операторе WHERE

Функции PostgreSQL могут манипулировать данными внутри оператора WHERE.

Пример: Найти книги, где длина названия превышает 15 символов

SELECT title
FROM books
WHERE LENGTH(title) > 15;

9. Оператор EXISTS

Проверяет, возвращает ли подзапрос какие-либо строки.

Пример: Найти авторов, у которых есть книги с ценой ниже $8

SELECT name
FROM authors
WHERE EXISTS (
    SELECT 1
    FROM books
    WHERE books.author = authors.name AND price < 8
);

10. Подзапросы в операторе WHERE

Используйте подзапросы для выполнения более продвинутой фильтрации.

Пример: Найти книги авторов, у которых больше одной книги

SELECT title, author
FROM books
WHERE author IN (
    SELECT author
    FROM books
    GROUP BY author
    HAVING COUNT(*) = 1
);

Заключение

Оператор WHERE является мощным инструментом в PostgreSQL для фильтрации данных в соответствии с заданными условиями. Используя различные операторы и функции, вы можете извлекать значимые данные из вашей базы.

Ключевые моменты:

  • Используйте операторы сравнения для фильтрации числовых и текстовых данных.
  • Применяйте LIKE и ILIKE для сопоставления строк по шаблону.
  • Объединяйте несколько условий с помощью логических операторов.
  • Используйте BETWEEN и IN для фильтрации по диапазонам и спискам.
  • Учитывайте значения NULL при фильтрации данных.

Продолжайте практиковаться с различными сценариями, чтобы улучшить свои навыки в работе с оператором WHERE в PostgreSQL.


Schema Initialization

Чтобы запустить примеры, убедитесь, что ваша база данных PostgreSQL содержит следующую схему:

-- Создание таблицы книг
CREATE TABLE books (
    title VARCHAR(255),
    author VARCHAR(255),
    price NUMERIC(10, 2),
    pages INTEGER
);
 
-- Вставка примеров данных в таблицу книг
INSERT INTO books (title, author, price, pages) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 10.99, 180),
('To Kill a Mockingbird', 'Harper Lee', 7.99, 281),
('1984', 'George Orwell', 8.99, 328),
('Pride and Prejudice', 'Jane Austen', 6.99, 279),
('The Catcher in the Rye', 'J.D. Salinger', 9.99, 214),
('Moby-Dick', 'Herman Melville', 11.99, 635),
('War and Peace', 'Leo Tolstoy', 12.99, 1225);
 
-- Создание таблицы авторов
CREATE TABLE authors (
    name VARCHAR(255)
);
 
-- Вставка примеров данных в таблицу авторов
INSERT INTO authors (name) VALUES
('F. Scott Fitzgerald'),
('Harper Lee'),
('George Orwell'),
('Jane Austen'),
('J.D. Salinger'),
('Herman Melville'),
('Leo Tolstoy');
 
-- Создание таблицы фильмов
CREATE TABLE movies (
    title VARCHAR(255)
);
 
-- Вставка примеров данных в таблицу фильмов
INSERT INTO movies (title) VALUES
('The Shawshank Redemption'),
('The Godfather'),
('The Dark Knight'),
('Pulp Fiction'),
('The Lord of the Rings');

Не стесняйтесь изучать и изменять примеры, чтобы углубить свои знания по оператору WHERE в PostgreSQL. Приятного запросостроительства!