SQL
SQL (Structured Query Language, язык структурированных запросов) - это специализированный язык программирования, предназначенный для управления данными в реляционных базах данных. SQL используется для создания, изменения и удаления структур баз данных, а также для вставки, обновления, удаления и выборки данных.
В интернет-маркетинге SQL применяется для анализа больших объёмов данных о клиентах, заказах и рекламных кампаниях, извлечения информации из баз данных для отчётов, а также для интеграции различных систем (CRM, аналитические платформы).
История SQL
[править]SQL был разработан в 1970-х годах в исследовательском центре IBM для работы с реляционными базами данных. В 1986 году стал стандартом ANSI, а в 1987 - ISO. С тех пор язык постоянно развивается, но его основные принципы остаются неизменными.
Основные категории команд
[править]Команды SQL делятся на несколько групп в зависимости от назначения.
DDL (Data Definition Language)
[править]Язык определения данных - команды для создания и изменения структуры базы данных.
- CREATE - создание объектов (баз данных, таблиц, индексов).
- ALTER - изменение структуры существующих объектов.
- DROP - удаление объектов.
- TRUNCATE - удаление всех данных из таблицы с сохранением структуры.
Примеры:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
created_at DATETIME
);
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
DROP TABLE users;
DML (Data Manipulation Language)
[править]Язык манипуляции данными - команды для работы с данными внутри таблиц.
- SELECT - выборка данных.
- INSERT - вставка новых записей.
- UPDATE - обновление существующих записей.
- DELETE - удаление записей.
Примеры:
INSERT INTO users (name, email, created_at) VALUES ('Иван Петров', 'ivan@example.com', NOW());
UPDATE users SET name = 'Пётр Иванов' WHERE id = 1;
DELETE FROM users WHERE id = 1;
SELECT * FROM users WHERE email LIKE '%@example.com';
DCL (Data Control Language)
[править]Язык управления доступом - команды для управления правами пользователей.
- GRANT - предоставление прав.
- REVOKE - отзыв прав.
TCL (Transaction Control Language)
[править]Язык управления транзакциями - команды для управления транзакциями.
- COMMIT - сохранение изменений в транзакции.
- ROLLBACK - отмена изменений в транзакции.
- SAVEPOINT - создание промежуточной точки сохранения.
Основные операции SELECT
[править]Команда SELECT - самая часто используемая в SQL. Её ключевые возможности:
Простая выборка
[править]SELECT * FROM users;
Выбирает все поля (*) из таблицы users.
Выборка с условием
[править]SELECT name, email FROM users WHERE age > 18 AND city = 'Москва';
Сортировка
[править]SELECT * FROM products ORDER BY price DESC, name ASC;
Ограничение результатов
[править]SELECT * FROM products LIMIT 10 OFFSET 20;
Группировка и агрегация
[править]SELECT category_id, COUNT(*) as product_count, AVG(price) as avg_price FROM products GROUP BY category_id HAVING product_count > 5;
Объединение таблиц (JOIN)
[править]SELECT orders.id, users.name, products.title FROM orders JOIN users ON orders.user_id = users.id JOIN products ON orders.product_id = products.id;
Типы JOIN
[править]- INNER JOIN - возвращает записи, которые есть в обеих таблицах.
- LEFT JOIN - возвращает все записи из левой таблицы и совпадающие из правой.
- RIGHT JOIN - возвращает все записи из правой таблицы и совпадающие из левой.
- FULL OUTER JOIN - возвращает записи, когда есть совпадение в любой из таблиц.
Подзапросы
[править]Подзапросы (subqueries) позволяют использовать результат 1 запроса внутри другого.
SELECT * FROM products
WHERE category_id IN (
SELECT id FROM categories WHERE active = 1
);
SELECT
name,
(SELECT COUNT(*) FROM orders WHERE orders.product_id = products.id) as order_count
FROM products;
Индексы и производительность
[править]Индексы в SQL - это специальные объекты, ускоряющие выполнение запросов. Однако они замедляют вставку и обновление данных.
CREATE INDEX idx_users_email ON users(email); CREATE INDEX idx_orders_user_id ON orders(user_id);
SQL-инъекции
[править]SQL-инъекции - это атаки, при которых злоумышленник внедряет вредоносный SQL-код в запрос. Защита от инъекций включает:
- Использование подготовленных выражений (prepared statements).
- Экранирование пользовательского ввода.
- Ограничение прав доступа к базе данных.
Диалекты SQL
[править]Хотя SQL стандартизирован, разные СУБД имеют свои диалекты и расширения:
- MySQL / MariaDB - популярные для веб-разработки.
- PostgreSQL - мощная открытая СУБД с расширенными возможностями.
- Oracle SQL - коммерческая СУБД для корпоративных решений.
- Microsoft SQL Server (T-SQL) - решение от Microsoft.
- SQLite - лёгкая встраиваемая база данных.
