Menu
Coddy logo textTech

Шпаргалка по SQL

Последнее обновление

Выборка данных (SELECT)

Основа SQL: чтение строк из одной или нескольких таблиц.

ОперацияСинтаксис
Выбрать все столбцыSELECT * FROM users;
Выбрать определённые столбцыSELECT id, name FROM users;
Переименовать столбец (псевдоним)SELECT name AS full_name FROM users;
Уникальные значенияSELECT DISTINCT country FROM users;
Ограничить количество строкSELECT * FROM users LIMIT 10;
Пропустить, затем ограничить (постраничный вывод)SELECT * FROM users LIMIT 10 OFFSET 20;
Подсчитать строкиSELECT COUNT(*) FROM users;

Фильтрация строк (WHERE)

Сужает набор строк, которые возвращает запрос.

ОперацияСинтаксис
Равенство / сравнениеWHERE age >= 18
Несколько условийWHERE age >= 18 AND country = 'US'
Любое из условийWHERE role = 'admin' OR role = 'owner'
Вхождение в наборWHERE country IN ('US', 'CA', 'MX')
В диапазонеWHERE price BETWEEN 10 AND 50
Совпадение по шаблонуWHERE email LIKE '%@gmail.com'
Равно / не равно NULLWHERE deleted_at IS NULL
ОтрицаниеWHERE status NOT IN ('archived')

Сортировка и группировка

ОперацияСинтаксис
Сортировка по возрастанию (по умолчанию)ORDER BY created_at
Сортировка по убываниюORDER BY created_at DESC
Сортировка по нескольким столбцамORDER BY country, name DESC
Группировка строкSELECT country, COUNT(*) FROM users GROUP BY country;
Фильтрация группGROUP BY country HAVING COUNT(*) > 100

Соединения (JOIN)

Объединяет строки из двух таблиц по совпадающему столбцу.

Тип соединенияЧто возвращаетСинтаксис
INNER JOINТолько строки, которые совпадают в обеих таблицахFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINВсе строки слева + совпадения (иначе NULL)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINВсе строки справа + совпаденияFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINВсе строки с обеих сторонFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINВсе комбинации (декартово произведение)FROM sizes CROSS JOIN colors
СамосоединениеТаблица, соединённая сама с собойFROM employees e JOIN employees m ON e.manager_id = m.id

Агрегатные функции

Вычисляют одно значение по группе строк.

ФункцияЧто делает
COUNT(*)Количество строк
COUNT(col)Количество значений, не равных NULL
SUM(col)Сумма числового столбца
AVG(col)Среднее значение
MIN(col) / MAX(col)Наименьшее / наибольшее значение
STRING_AGG(col, ',')Объединение значений (Postgres; GROUP_CONCAT в MySQL)

Оконные функции

Вычисляют значения по набору строк, не схлопывая их в одну.

ФункцияСинтаксис
Номер строкиROW_NUMBER() OVER (ORDER BY score DESC)
Ранг (с пропусками)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Плотный рангDENSE_RANK() OVER (ORDER BY score DESC)
Нарастающий итогSUM(amount) OVER (ORDER BY created_at)
Предыдущая / следующая строкаLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Изменение данных (INSERT, UPDATE, DELETE)

ОперацияСинтаксис
Вставить строкуINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Вставить несколько строкINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Обновить строкиUPDATE users SET active = true WHERE id = 1;
Удалить строкиDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Определение таблиц (DDL)

ОперацияСинтаксис
Создать таблицуCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Добавить столбецALTER TABLE users ADD COLUMN age INTEGER;
Удалить столбецALTER TABLE users DROP COLUMN age;
Удалить таблицуDROP TABLE users;
Создать индексCREATE INDEX idx_users_email ON users (email);
Внешний ключFOREIGN KEY (user_id) REFERENCES users (id)

Каждый SQL-запрос, конструкция и соединение, которые вам нужны, на одной странице. Эта шпаргалка по SQL - быстрый справочник по выборке и изменению реляционных данных: конструкции SELECT, четыре типа JOIN, агрегация, а также DDL и DML для создания и обновления таблиц.

Здесь приведён стандартный синтаксис ANSI SQL, который работает в PostgreSQL, MySQL, SQLite и SQL Server, если не указано иное. Копируйте нужное или попробуйте каждый запрос вживую в playground для SQL - без установки базы данных.

Часто задаваемые вопросы по шпаргалке SQL

Эта шпаргалка по SQL бесплатна?
Да. Эта шпаргалка по SQL полностью бесплатна, регистрация не требуется. Добавьте её в закладки и возвращайтесь, когда нужно посмотреть конструкцию, соединение или функцию.
Работает ли это для MySQL, PostgreSQL и SQLite?
В основном да. Синтаксис SELECT, WHERE, JOIN, GROUP BY и DDL, показанный здесь, - это стандартный ANSI SQL, который одинаково работает в MySQL, PostgreSQL, SQLite и SQL Server. Несколько продвинутых возможностей отличаются по диалектам - чаще всего это upsert и агрегация строк - и в соответствующих строках это отмечено.
В чём разница между INNER JOIN и LEFT JOIN?
INNER JOIN возвращает только строки, у которых есть совпадение в обеих таблицах. LEFT JOIN возвращает каждую строку из левой (первой) таблицы, подставляя NULL в столбцы из правой таблицы, когда совпадения нет - удобно, когда нужны все пользователи, даже если у некоторых нет заказов.
Можно ли практиковать эти команды SQL онлайн?
Да. Откройте playground для SQL, чтобы выполнить любой запрос из этой шпаргалки на настоящей базе данных прямо в браузере - без установки. А если нужна структура, бесплатный интерактивный курс SQL от Coddy шаг за шагом проведёт вас от SELECT до соединений и оконных функций.
Подходит ли эта шпаргалка для начинающих?
Да. Она построена от самых распространённых операций (выборка и фильтрация) к продвинутым (оконные функции), так что верхние разделы можно использовать с первого дня и постепенно осваивать остальное.
Coddy programming languages illustration

Изучайте SQL с Coddy

НАЧАТЬ