SELECT и основы запросов
SELECT, WHERE и ORDER BY
SELECT извлекает строки из одной или нескольких таблиц. Всегда указывайте столбцы явно вместо * для производительности и ясности (изменения схемы не сломают ваше приложение). WHERE фильтрует строки перед группировкой. ORDER BY сортирует результаты (ASC по умолчанию, DESC по убыванию). LIMIT/OFFSET реали зуют пагинацию — для больших наборов данных предпочитайте пагинацию по ключу (WHERE id > last_id).
-- basic query: select specific columns
SELECT id, name, email
FROM users
WHERE age >= 18 AND status = 'active'
ORDER BY name ASC, created_at DESC
LIMIT 10 OFFSET 0;
-- select all columns (avoid in production)
SELECT * FROM products;
-- column aliases with AS
SELECT name AS product_name, price * 1.1 AS price_with_tax
FROM products;DISTINCT и алиасы
DISTINCT удаляет повторяющиеся строки из набора результатов. Он работает со всей строкой, а не с отдельными столбцами — SELECT DISTINCT city, country возвращает уникальные пары city+country. Алиасы таблиц (u, o) сокращают запросы и требуются при соединении таблицы с самой собой. Алиасы столбцов переименовывают выходные столбцы для читаемости.
-- unique values only
SELECT DISTINCT country FROM users;
SELECT DISTINCT city, country FROM users; -- unique combos
-- table aliases (essential for joins)
SELECT u.name, o.total
FROM users AS u
JOIN orders AS o ON u.id = o.user_id;
-- column alias (AS is optional)
SELECT name product_name, COUNT(*) count
FROM products
GROUP BY name;