🗄️ Основные команды SQL: Шпаргалка для работы с базами

Кратко: SQL (Structured Query Language) — это язык, на котором говорят с базами данных. Вы хотите получить данные, изменить их, удалить или создать новую таблицу — всё это через SQL-запросы. Собрал основные команды, которые покрывают 90% повседневных задач разработчика, аналитика и администратора БД.

📂 Работа с таблицами (DDL — Data Definition Language) CREATE TABLE — Создать новую таблицу. CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(255) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

ALTER TABLE — Изменить структуру существующей таблицы (добавить/удалить столбец, изменить тип). ALTER TABLE users ADD COLUMN age INT; ALTER TABLE users DROP COLUMN age;

DROP TABLE — Удалить таблицу целиком (вместе с данными). DROP TABLE users;

TRUNCATE TABLE — Очистить таблицу от всех данных, но оставить структуру. Быстрее, чем DELETE. TRUNCATE TABLE users;

CREATE INDEX — Создать индекс для ускорения поиска по столбцу. CREATE INDEX idx_users_email ON users(email);

📥 Выборка данных (DQL — Data Query Language) SELECT — Основная команда для чтения данных. SELECT * FROM users; SELECT id, name FROM users; SELECT DISTINCT country FROM users;

WHERE — Фильтрация строк по условию. SELECT * FROM users WHERE age > 18; SELECT * FROM users WHERE name = ‘Иван’ AND city = ‘Москва’; SELECT * FROM users WHERE age BETWEEN 18 AND 30; SELECT * FROM users WHERE name LIKE ‘Ив%’; – начинается с “Ив” SELECT * FROM users WHERE city IN (‘Москва’, ‘СПб’);

ORDER BY — Сортировка результатов. SELECT * FROM users ORDER BY age ASC; – по возрастанию SELECT * FROM users ORDER BY age DESC; – по убыванию

LIMIT / TOP — Ограничить количество возвращаемых строк. SELECT * FROM users LIMIT 10; SELECT TOP 10 * FROM users;

GROUP BY + агрегатные функции — Группировка и подсчёт. SELECT city, COUNT(*) as user_count FROM users GROUP BY city; SELECT city, AVG(age) as avg_age FROM users GROUP BY city HAVING COUNT(*) > 5; — фильтр для групп

Агрегатные функции: COUNT(), SUM(), AVG(), MIN(), MAX().

JOIN — Объединение данных из нескольких таблиц. – INNER JOIN: только совпадающие строки SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id; – LEFT JOIN: все строки из левой таблицы + совпадения из правой SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id; – RIGHT JOIN: все строки из правой таблицы – FULL JOIN: все строки из обеих таблиц

UNION — Объединить результаты двух запросов (уникальные строки). SELECT name FROM users UNION SELECT name FROM admins;

UNION ALL — То же, но с дубликатами.

✏️ Изменение данных (DML — Data Manipulation Language) INSERT INTO — Вставить новые строки. INSERT INTO users (id, name, email) VALUES (1, ‘Иван’, ‘ivan@mail.ru’);

Множественная вставка INSERT INTO users (name, email) VALUES (‘Пётр’, ‘petr@mail.ru’), (‘Анна’, ‘anna@mail.ru’);

UPDATE — Обновить существующие строки. UPDATE users SET age = 30, city = ‘СПб’ WHERE id = 1;

⚠️ Важно: без WHERE обновятся все строки в таблице!

DELETE — Удалить строки. DELETE FROM users WHERE id = 1; ⚠️ Важно: без WHERE удалятся все строки!

🔐 Управление доступом (DCL — Data Control Language) GRANT — Выдать права пользователю. GRANT SELECT, INSERT ON users TO analyst; GRANT ALL PRIVILEGES ON database.* TO admin;

REVOKE — Отозвать права. REVOKE INSERT ON users FROM analyst;

CREATE USER — Создать нового пользователя БД. CREATE USER ‘newuser’@‘localhost’ IDENTIFIED BY ‘password’;

📊 Полезные команды администратора SHOW DATABASES — Список всех баз данных (MySQL). USE database_name — Переключиться на базу. SHOW TABLES — Список таблиц в текущей базе. DESCRIBE users — Показать структуру таблицы (столбцы, типы). EXPLAIN — Показать план выполнения запроса (для оптимизации). SHOW PROCESSLIST — Показать активные соединения и запросы (MySQL). pg_stat_activity — Аналог для PostgreSQL.

#sql #базыданных #mysql #postgresql

🗄️ Основные команды SQL: Шпаргалка для работы с базами | Сетка — социальная сеть от hh.ru