Ответ
Основные типы SQL-запросов делятся на группы по языкам DDL (определение данных), DML (манипуляция данными), DQL (запрос данных) и DCL (управление доступом).
DML (Data Manipulation Language) — Манипуляция данными
SELECT — извлечение данных.
SELECT id, name, email FROM users WHERE active = TRUE ORDER BY created_at DESC;
INSERT — добавление новых записей.
INSERT INTO products (name, price, category_id) VALUES ('Keyboard', 99.99, 2);
UPDATE — изменение существующих записей.
UPDATE orders SET status = 'shipped', shipped_at = NOW() WHERE id = 1001;
DELETE — удаление записей.
DELETE FROM session_logs WHERE created_at < NOW() - INTERVAL '30 days';
DDL (Data Definition Language) — Определение структуры
CREATE TABLE— создание таблицы.ALTER TABLE— изменение структуры таблицы (добавление столбца, индекса).DROP TABLE— удаление таблицы.
Ключевые операторы для работы с данными
JOIN — объединение данных из нескольких таблиц.
SELECT u.name, o.order_date, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
GROUP BY с агрегатными функциями (COUNT, SUM, AVG, MAX, MIN) — группировка и агрегация.
SELECT department_id, COUNT(*) as emp_count, AVG(salary) as avg_salary
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Транзакции (BEGIN, COMMIT, ROLLBACK) — обеспечение атомарности группы операций.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- или ROLLBACK в случае ошибки Ответ 18+ 🔞
Да ты посмотри, какие категории выдумали, блядь! SQL-запросы, сука, поделили как в аптеке — по полочкам: DDL, DML, DQL, DCL. Ёпта, прямо как в армии: свой — чужой, стрелять — не стрелять.
Ну ладно, начнём с самого сочного — DML (Data Manipulation Language). Это типа наш рабочий инструмент, чтобы данные тырить, пихать, менять и выкидывать нахуй. Без этого нихуя не работает.
SELECT — это наш главный шпион, вытаскивает всё, что спрятано. Смотри, как просто:
SELECT id, name, email FROM users WHERE active = TRUE ORDER BY created_at DESC;
Вот сидит эта таблица users, а мы ей: «Давай-ка, сука, всех активных, да пофамильно, да с конца списка!». И она, такая покорная, вываливает.
INSERT — это когда надо запихнуть новую запись, как последнего пьяного в переполненную маршрутку.
INSERT INTO products (name, price, category_id) VALUES ('Keyboard', 99.99, 2);
Вот ты взял клавиатуру, ценник налепил — и хуяк, она уже в базе, как родная. Магия, блядь.
UPDATE — а это когда надо подрихтовать, поправить, потому что накосячили. Типа, «ой, заказ ещё не отправили, а надо бы».
UPDATE orders SET status = 'shipped', shipped_at = NOW() WHERE id = 1001;
Говорим базе: «Слушай сюда, сука, заказ номер 1001 — теперь «отправлен», и время проставь текущее». И база покорно делает, волнение ебать.
DELETE — это уже серьёзно, это как вызвать чистильщика. Удаляем всё, что старое и не нужно.
DELETE FROM session_logs WHERE created_at < NOW() - INTERVAL '30 days';
«Всё, что старше месяца — нахуй в корзину». Жёстко, но справедливо.
А это DDL (Data Definition Language) — это уже архитекторы, блядь. Они не с данными возятся, они сараи строят.
CREATE TABLE— фундамент залили, стены поставили.ALTER TABLE— «ой, забыли розетку в углу, давайте пристроим».DROP TABLE— «всё, пиздец, сносим эту хибарку к ебеням». Опасная команда, хуй с горы.
Дальше операторы, без которых нихуя не соберёшь.
JOIN — это когда данные из двух таблиц надо склеить, как два куска разбитой тарелки.
SELECT u.name, o.order_date, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
Смотри, users и orders — как муж и жена. INNER JOIN говорит: «Дайте мне только тех, кто в паре, одиночки нахуй не нужны». И мы получаем, кто и что заказал. Красота.
GROUP BY — это когда надо всех по стойкам «смирно» построить и посчитать.
SELECT department_id, COUNT(*) as emp_count, AVG(salary) as avg_salary
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Разбиваем всех работяг по отделам, считаем, сколько их, и среднюю зарплату выводим. А HAVING — это такой охранник: «Отделы, где меньше пяти человек — даже не показывай, мелочь пузатая».
И на сладкое — Транзакции. Это святое, блядь. Либо всё, либо нихуя.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- или ROLLBACK в случае ошибки
Представь: ты переводишь сто рублей с одного счёта на другой. BEGIN — начали операцию. Сперва списали, потом зачислили. Если всё прошло гладко — COMMIT, деньги перелетели. Если посередине свет вырубили — ROLLBACK, и всё откатывается назад, как будто ничего и не было. Атомарность, сука, в рот меня чих-пых! Без этого был бы пиздец, все друг друга обворовали бы.