Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

4. Примеры запросов (на учебной базе)

Пусть у нас есть база данных университета:

Таблица "Студенты"

id

имя

возраст

группа

средний_балл

1

Иван

20

ИС-21

4.5

2

Мария

19

ИС-21

4.8

3

Петр

21

БИ-22

3.9

4

Анна

20

БИ-22

4.7

5

Сергей

22

ИС-21

3.5

Важно: WHERE фильтрует строки до группировки, HAVING — группы после группировки.

Limit и offset (пагинация)

5. Join — соединение таблиц

Добавим вторую таблицу:

Таблица "Предметы"

id

название

часы

1

Базы данных

72

2

Алгоритмы

64

3

Математика

90

Таблица "Оценки"

id_студента

id_предмета

оценка

1

1

5

1

2

4

2

1

4

3

1

3

4

2

5

Inner join (внутреннее соединение)

Возвращает только те строки, где есть соответствие в обеих таблицах.

Результат:

имя

предмет

оценка

Иван

Базы данных

5

Иван

Алгоритмы

4

Мария

Базы данных

4

Петр

Базы данных

3

Анна

Алгоритмы

5

LEFT JOIN (левое внешнее соединение)

Возвращает все строки из левой таблицы, даже если нет соответствия в правой. Для отсутствующих значений будет NULL.

RIGHT JOIN (правое внешнее соединение)

Аналогично LEFT, но все строки из правой таблицы.

FULL OUTER JOIN (полное внешнее)

Все строки из обеих таблиц. Где нет соответствия — NULL.

6. Вложенные запросы (подзапросы)

Подзапрос в WHERE

Часть 2. Транзакции

1. Понятие транзакции

Транзакция — это логически неделимая последовательность операций с базой данных, которая переводит её из одного целостного состояния в другое.

Свойства транзакций (ACID) мы подробно разобрали в вопросе 8.

2. Управление транзакциями в SQL

Начало и завершение транзакции

Точки сохранения (SAVEPOINT)

Позволяют откатываться не к началу транзакции, а к промежуточной точке.

Уровни изоляции в SQL стандарте:

  1. READ UNCOMMITTED — можно читать незафиксированные изменения других транзакций ("грязное" чтение). В PostgreSQL этот уровень работает как READ COMMITTED.

  2. READ COMMITTED — видны только зафиксированные изменения. "Грязное" чтение невозможно, но возможны неповторяющееся чтение и фантомы.

  3. REPEATABLE READ — гарантирует, что повторные чтения в транзакции дадут тот же результат. В PostgreSQL на этом уровне невозможны и фантомы.

  4. SERIALIZABLE — самый строгий уровень. Транзакции выполняются так, как будто последовательно, одна за другой.