SELECT, WHERE, ORDER BY и LIMIT

Освежаем основу выборки: фильтр, сортировка и постраничный вывод — на живых примерах.

SELECT читает строки из таблиц; WHERE фильтрует их, ORDER BY сортирует, LIMIT ограничивает количество.

Каркас запроса

Порядок частей в запросе фиксирован: SELECT … FROM … WHERE … ORDER BY … LIMIT …. Все эти части переносимы и работают в песочнице. Создадим данные для экспериментов:

CREATE TABLE employees (
  id INTEGER PRIMARY KEY,
  name TEXT,
  department TEXT,
  salary INTEGER
);

INSERT INTO employees (name, department, salary) VALUES
  ('Анна', 'IT', 120000),
  ('Борис', 'IT', 90000),
  ('Вера', 'HR', 80000),
  ('Глеб', 'Sales', 110000),
  ('Дина', 'Sales', 95000);

SELECT name, salary FROM employees WHERE salary > 90000 ORDER BY salary DESC;

Вывод:

name   salary
Анна   120000
Глеб   110000
Дина   95000

Условия в WHERE

В WHERE можно комбинировать условия операторами AND, OR, NOT и использовать IN, BETWEEN, LIKE (поиск по шаблону), IS NULL.

CREATE TABLE employees (
  id INTEGER PRIMARY KEY,
  name TEXT,
  department TEXT,
  salary INTEGER
);

INSERT INTO employees (name, department, salary) VALUES
  ('Анна', 'IT', 120000),
  ('Борис', 'IT', 90000),
  ('Вера', 'HR', 80000),
  ('Глеб', 'Sales', 110000);

SELECT name, department
FROM employees
WHERE department IN ('IT', 'Sales') AND salary >= 100000;

Вывод:

name  department
Анна  IT
Глеб  Sales

LIMIT и OFFSET — постранично

LIMIT n берёт первые n строк, OFFSET m — пропускает первые m. Это основа пагинации: страница 2 по 2 записи — LIMIT 2 OFFSET 2.

CREATE TABLE employees (
  id INTEGER PRIMARY KEY,
  name TEXT,
  salary INTEGER
);

INSERT INTO employees (name, salary) VALUES
  ('Анна', 120000), ('Глеб', 110000), ('Дина', 95000),
  ('Борис', 90000), ('Вера', 80000);

SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 2 OFFSET 2;

Вывод:

name   salary
Дина   95000
Борис  90000

Мы отсортировали по убыванию зарплаты, пропустили двух самых высокооплачиваемых и взяли следующих двух — это «третье и четвёртое места».

Итог

  • Порядок частей: SELECT → FROM → WHERE → ORDER BY → LIMIT.
  • WHERE фильтрует; условия комбинируются через AND/OR, IN, BETWEEN, LIKE.
  • ORDER BY сортирует (ASC по возрастанию, DESC по убыванию).
  • LIMIT + OFFSET — основа постраничного вывода.
Проверьте себя
1. Что сделает запрос с LIMIT 2 OFFSET 2 после ORDER BY?
Aвернёт две первые строки
Bпропустит две строки и вернёт следующие две
Cвернёт все строки кроме двух
Dвернёт ровно две случайные строки
2. Какой оператор ищет значение в списке вариантов?
ABETWEEN
BLIKE
CIN
DIS NULL
3. Как отсортировать результат по убыванию?
AORDER BY ... ASC
BORDER BY ... DESC
CSORT BY ... DOWN
DGROUP BY ...
Поддержать проект