SQL

Материал из Энциклопедия интернет-маркетинга MarketWiki

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 - лёгкая встраиваемая база данных.

Связанные термины

[править]