Лекция 6: SQL - язык структурированных запросов
SQL (Structured Query Language) — это стандартизированный язык программирования, предназначенный для управления реляционными базами данных и работы с данными. SQL позволяет создавать, читать, обновлять и удалять данные (CRUD-операции), а также управлять структурой самой базы данных. В современной разработке SQL является фундаментальным навыком для любого специалиста, работающего с данными, от backend-разработчиков до аналитиков.
Основные категории SQL-команд
1. DDL (Data Definition Language) — язык определения данных:
- CREATE — создание объектов базы данных (таблиц, индексов, представлений)
- ALTER — изменение структуры существующих объектов
- DROP — удаление объектов
- TRUNCATE — удаление всех данных из таблицы с сохранением структуры
2. DML (Data Manipulation Language) — язык манипулирования данными:
- SELECT — выборка данных
- INSERT — вставка новых записей
- UPDATE — обновление существующих записей
- DELETE — удаление записей
3. DCL (Data Control Language) — язык управления данными:
- GRANT — предоставление прав доступа
- REVOKE — отзыв прав доступа
4. TCL (Transaction Control Language) — язык управления транзакциями:
- COMMIT — фиксация транзакции
- ROLLBACK — откат транзакции
- SAVEPOINT — создание точки сохранения внутри транзакции
Создание и изменение структуры базы данных (DDL)
Создание таблиц
CREATE TABLE employees (
id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE DEFAULT CURRENT_DATE,
salary DECIMAL(10,2) CHECK (salary > 0),
department_id INT REFERENCES departments(id)
);
Изменение таблиц
-- Добавление нового столбца
ALTER TABLE employees ADD COLUMN phone VARCHAR(15);
-- Удаление столбца
ALTER TABLE employees DROP COLUMN phone;
-- Изменение типа данных столбца
ALTER TABLE employees ALTER COLUMN salary TYPE DECIMAL(12,2);
-- Добавление ограничения
ALTER TABLE employees ADD CONSTRAINT salary_check CHECK (salary < 1000000);
-- Удаление ограничения
ALTER TABLE employees DROP CONSTRAINT salary_check;
Работа с данными (DML)
Вставка данных (INSERT)
-- Вставка с указанием всех столбцов
INSERT INTO employees (id, first_name, last_name, email, hire_date, salary, department_id)
VALUES (1, 'John', 'Doe', 'john.doe@example.com', '2020-01-15', 75000.00, 1);
Выборка данных (SELECT)
-- Простейший запрос
SELECT * FROM employees;
-- Выбор конкретных столбцов
SELECT first_name, last_name, salary FROM employees;
-- Фильтрация строк
SELECT * FROM employees WHERE salary > 70000;
Обновление данных (UPDATE)
-- Обновление всех строк
UPDATE employees SET salary = salary * 1.05;
-- Обновление с условием
UPDATE employees SET salary = salary * 1.10 WHERE department_id = 1;
Удаление данных (DELETE)
-- Удаление всех строк (осторожно!)
DELETE FROM employees;
-- Удаление с условием
DELETE FROM employees WHERE salary < 50000;
Сложные запросы SELECT
Агрегатные функции
SELECT
COUNT(*) AS employee_count,
AVG(salary) AS avg_salary,
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees;
Соединения таблиц (JOIN)
-- INNER JOIN
SELECT
e.first_name,
e.last_name,
d.name AS department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
Подзапросы
-- Подзапрос в WHERE
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
Заключение
SQL — мощный и выразительный язык для работы с реляционными базами данных, который включает в себя средства для определения структуры данных (DDL), манипулирования данными (DML), управления доступом (DCL) и контроля транзакций (TCL). Основные команды SQL — SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP — позволяют выполнять все необходимые операции с данными.