Система управления базами данных (СУБД) – это программный комплекс‚ позволяющий хранить‚ изменять и получать данные из структурированных хранилищ. Наиболее популярным языком взаимодействия с СУБД является SQL (Structured Query Language). В этой статье мы разберём‚ как правильно формировать запросы‚ какие типы запросов существуют и какие подводные камни следует учитывать.
Основные понятия SQL
- SELECT – извлечение данных из одной или нескольких таблиц.
- INSERT – добавление новых записей.
- UPDATE – изменение существующих записей.
- DELETE – удаление записей.
- DDL (Data Definition Language) – команды создания и изменения структуры (CREATE‚ ALTER‚ DROP);
- DML (Data Manipulation Language) – команды работы с данными (SELECT‚ INSERT‚ UPDATE‚ DELETE).
Как писать простые запросы
2.1 SELECT – базовое извлечение
Самый простой запрос выглядит так:
Он возвращает все столбцы и все строки таблицы teachers.
2.2 Фильтрация данных (WHERE)
WHERE zarplata > 12000;
Вернёт имена и зарплаты учителей‚ получающих более 12 000 руб.
2.3 Сортировка (ORDER BY)
ORDER BY zarplata DESC;
Сортирует результат по убыванию зарплаты.
2.4 Ограничение количества строк (LIMIT)
ORDER BY zarplata DESC
LIMIT 5;
Покажет топ‑5 самых высокооплачиваемых учителей.
Запросы на изменение данных
3.1 INSERT
(5‚ ‘Смирнова’‚ 1‚ 13000‚ 600);
3.2 UPDATE
SET premia = premia + 200
WHERE zarplata >= 15000;
3.3 DELETE
WHERE id = 4;
Объединение таблиц (JOIN)
Для получения связанных данных используют JOIN. Пример соединения учителей и их занятий:
FROM teachers AS t
INNER JOIN lessons AS l ON t.id = l.tid;
Группировка и агрегатные функции
FROM teachers t
GROUP BY t.code
HAVING cnt > 1;
Считает количество учителей и среднюю зарплату в каждом «code»;
Подзапросы и CTE (Common Table Expressions)
6.1 Подзапрос в UPDATE
SET premia = (SELECT AVG(premia) FROM teachers)
WHERE zarplata < 12000;
6.2 CTE
SELECT id‚ name‚ zarplata
FROM teachers
ORDER BY zarplata DESC
LIMIT 3
)
SELECT tt.name‚ l.course‚ l.date
FROM TopTeachers tt
LEFT JOIN lessons l ON tt.id = l.tid;
Практика в phpMyAdmin
Для работы с MySQL часто используют веб‑интерфейс phpMyAdmin. В нём запросы вводятся в разделе SQL. Пример создания таблицы и заполнения её данными (из исходных данных):
id INT(11) NOT NULL‚
name VARCHAR(25) NOT NULL‚
code INT(11)‚
zarplata INT(11)‚
premia INT(11)‚
PRIMARY KEY (id)
);
INSERT INTO teachers VALUES
(1‚ ‘Иванов’‚ 1‚ 10000‚ 500)‚
(2‚ ‘Петров’‚ 1‚ 15000‚ 1000)‚
(3‚ ‘Сидоров’‚ 1‚ 14000‚ 800)‚
(4‚ ‘Боброва’‚ 1‚ 11000‚ 800);
Аналогично можно создать таблицы lessons и courses.
Оптимизация запросов
- Используйте индексы на колонках‚ участвующих в WHERE и JOIN.
- Избегайте SELECT * – выбирайте только нужные столбцы.
- Проверяйте план выполнения (EXPLAIN в MySQL) для сложных запросов.
- Сокращайте количество подзапросов‚ заменяя их на JOIN или CTE при возможности.
Часто задаваемые вопросы
- Как узнать‚ какие таблицы есть в базе? –
SHOW TABLES; - Как получить структуру таблицы? –
DESCRIBE teachers;или в phpMyAdmin – вкладка «Структура». - Как экспортировать данные? – В phpMyAdmin используйте кнопку «Экспорт»‚ выбирая формат SQL.
Контакты для обращений
Официальный сайт: https://www.dbms-example.ru
Горячая линия: 8‑800‑555‑33‑22 (круглосуточно)
Номера телефонов отдела поддержки:
- Москва – +7 (495) -23‑45‑67
- Санкт‑Петербург – +7 (812) -65‑43‑21
- Региональные центры – см. на сайте в разделе «Контакты».
Электронный адрес: support@dbms-example.ru
Личный кабинет пользователя: https://cabinet.dbms-example.ru
Личный приём (консультации по запросам):
- Онлайн‑чат на сайте – доступен 24/7.
- Запись на видеоконференцию – через личный кабинет.
График приёма специалистов:
- Пн‑Пт: 09:00 – 18:00 (мск)
- Сб: 10:00 – 14:00 (мск)
- Вс: выходной
Отделы:
- Отдел разработки СУБД
- Отдел технической поддержки
- Отдел обучения и документации
- Отдел продаж и лицензирования
Руководство:
- Генеральный директор – Иван Петрович Сидоров
- Технический директор – Елена Викторовна Кузнецова
- Директор по обучению – Алексей Николаевич Морозов
Отзывы клиентов:
«Отличный продукт‚ прост в освоении‚ а поддержка реагирует мгновенно!» – ООО «ТехноСервис»
«Благодаря CTE‑запросам сократили время отчётов вдвое.» – Аналитический отдел «ФинЭксперт»