Основы SQL и примеры запросов

Раскрой силу SQL: от простых SELECT до сложных JOIN. Гайд без воды для тех, кто хочет управлять данными, а не просто читать про них.

Бесплатная консультация юриста

+7 (800) -01-07-30

Реклама jurik.ru

Система управления базами данных (СУБД) – это программный комплекс‚ позволяющий хранить‚ изменять и получать данные из структурированных хранилищ. Наиболее популярным языком взаимодействия с СУБД является 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 – базовое извлечение

Самый простой запрос выглядит так:

SELECT * FROM teachers;

Он возвращает все столбцы и все строки таблицы teachers.

2.2 Фильтрация данных (WHERE)

SELECT name‚ zarplata FROM teachers
WHERE zarplata > 12000;

Вернёт имена и зарплаты учителей‚ получающих более 12 000 руб.

2.3 Сортировка (ORDER BY)

SELECT name‚ zarplata FROM teachers
ORDER BY zarplata DESC;

Сортирует результат по убыванию зарплаты.

2.4 Ограничение количества строк (LIMIT)

SELECT name FROM teachers
ORDER BY zarplata DESC
LIMIT 5;

Покажет топ‑5 самых высокооплачиваемых учителей.

Запросы на изменение данных

3.1 INSERT

INSERT INTO teachers (id‚ name‚ code‚ zarplata‚ premia) VALUES
(5‚ ‘Смирнова’‚ 1‚ 13000‚ 600);

3.2 UPDATE

UPDATE teachers
SET premia = premia + 200

WHERE zarplata >= 15000;

3.3 DELETE

DELETE FROM teachers
WHERE id = 4;

Объединение таблиц (JOIN)

Для получения связанных данных используют JOIN. Пример соединения учителей и их занятий:

SELECT t.name‚ l.course‚ l.date
FROM teachers AS t
INNER JOIN lessons AS l ON t.id = l.tid;

Группировка и агрегатные функции

SELECT t.code‚ COUNT(*) AS cnt‚ AVG(t.zarplata) AS avg_zarplata
FROM teachers t
GROUP BY t.code
HAVING cnt > 1;

Считает количество учителей и среднюю зарплату в каждом «code»;

Подзапросы и CTE (Common Table Expressions)

6.1 Подзапрос в UPDATE

UPDATE teachers
SET premia = (SELECT AVG(premia) FROM teachers)
WHERE zarplata < 12000;

6.2 CTE

WITH TopTeachers AS (
  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. Пример создания таблицы и заполнения её данными (из исходных данных):

CREATE TABLE teachers (
  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 при возможности.

Часто задаваемые вопросы

  1. Как узнать‚ какие таблицы есть в базе? – SHOW TABLES;
  2. Как получить структуру таблицы? – DESCRIBE teachers; или в phpMyAdmin – вкладка «Структура».
  3. Как экспортировать данные? – В 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 (мск)
  • Вс: выходной

Отделы:

  1. Отдел разработки СУБД
  2. Отдел технической поддержки
  3. Отдел обучения и документации
  4. Отдел продаж и лицензирования

Руководство:

  • Генеральный директор – Иван Петрович Сидоров
  • Технический директор – Елена Викторовна Кузнецова
  • Директор по обучению – Алексей Николаевич Морозов

Отзывы клиентов:

«Отличный продукт‚ прост в освоении‚ а поддержка реагирует мгновенно!» – ООО «ТехноСервис»
«Благодаря CTE‑запросам сократили время отчётов вдвое.» – Аналитический отдел «ФинЭксперт»