Основные команды SQL
Выборка определенных данных
SELECT column1, column2 FROM table_name;
Выборка всех данных
SELECT * FROM table_name;
Добавление данных
INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2');
Обновление данных
UPDATE table_name SET column1 = 'value' WHERE condition;
Удаление данных
DELETE FROM table_name WHERE condition;
Фильтрация данных (WHERE, AND, OR, LIKE, IN, BETWEEN)
Возраст больше 18
SELECT * FROM users WHERE age > 18;
Два условия
SELECT * FROM users WHERE city = 'Москва' AND age > 18;
Начинается с ‘A’
SELECT * FROM users WHERE name LIKE 'A%';
Возраст от 18 до 30
SELECT * FROM users WHERE age BETWEEN 18 AND 30;
Город Москва или Питер
SELECT * FROM users WHERE city IN ('Москва', 'Санкт-Петербург');
Группировка и агрегатные функции (GROUP BY, HAVING, COUNT, SUM, AVG, MAX, MIN)
Количество пользователей в каждом городе
SELECT city, COUNT(*) FROM users GROUP BY city;
Средний возраст > 25
SELECT city, AVG(age) FROM users GROUP BY city HAVING AVG(age) > 25;
Максимальная зарплата
SELECT MAX(salary) FROM employees;
Сумма продаж с 2024 года
SELECT SUM(sales) FROM orders WHERE date >= '2024-01-01';
Сортировка (ORDER BY)
Сортировка по возрасту (по возрастанию)
SELECT * FROM users ORDER BY age ASC;
Сортировка по убыванию
SELECT * FROM users ORDER BY age DESC;
Соединение таблиц (JOIN)
Внутреннее соединение
SELECT users.name, orders.amount FROM users JOIN orders ON users.id = orders.user_id;
Левый JOIN (все из users)
SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
Правый JOIN (все из orders)
SELECT users.name, orders.amount FROM users RIGHT JOIN orders ON users.id = orders.user_id;
Создание и изменение таблиц (CREATE, ALTER, DROP)
Создание таблицы
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), age INT );
Добавление колонки
ALTER TABLE users ADD COLUMN email VARCHAR(100);
Удаление колонки
ALTER TABLE users DROP COLUMN email;
Удаление таблицы
DROP TABLE users;
Работа с индексами (INDEX)
Создание индекса
CREATE INDEX idx_users_name ON users(name);
Удаление индекса
DROP INDEX idx_users_name;
Ограничения (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT)
CREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INT REFERENCES users(id),- Внешний ключ amount DECIMAL(10,2) CHECK (amount > 0), - Ограничение CHECK created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - Значение по умолчанию );
Подзапросы (SUBQUERY)
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);
Транзакции (BEGIN, COMMIT, ROLLBACK)
BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; — Завершение транзакции ROLLBACK; — Откат изменений