Экспресс-курс · занятие 2 из 3

Введение в БД и SQL

О чём это занятие
От математических оснований — множеств, кортежей и декартова произведения — к реляционным таблицам и языку SQL: уровни DDL и DML, устройство запроса SELECT и проектирование учебной базы данных «Аэропорт», к которой на этой странице подключена живая SQL-песочница.
Аннотация
Занятие начинается с определений: база данных, СУБД, различие данных и информации по ГОСТ и четыре шага превращения информации в данные. Затем математический фундамент: множества по Кантору с операциями объединения, пересечения и разности, способы задания множеств, кортежи, мощность и декартово произведение — ровно те понятия, из которых построена реляционная модель. Таблица соответствий связывает термины теории с колонками и строками. Далее — язык SQL: его история и роль на рынке труда, уровни DDL и DML с примерами, шесть операторов классического запроса и разбор условий WHERE. Интерактивный конструктор проверяет знание порядка операторов, а SQL-песочница позволяет выполнять запросы к учебной базе «Аэропорт» прямо на странице. Завершает занятие практическое задание: проектирование пяти связанных таблиц в MS Access — от целей базы до итоговой схемы.
Пререквизиты
Занятие 1 — понятия отношения, атрибута, кортежа. Школьные представления о множествах.
Мотивация
SQL остаётся обязательным навыком вакансий, связанных с данными: SQL Developer, Data Analyst, Database Administrator, Business Intelligence Analyst. Но выучить синтаксис мало — важно понимать, что за каждым запросом стоит операция над множествами кортежей. Тогда WHERE перестаёт быть заклинанием и становится выборкой, а декартово произведение из учебника — основой JOIN, с которым мы встретимся на следующем занятии.

1. База данных и СУБД

База данных (БД) — это организованная коллекция структурированной информации, или данных, обычно хранящихся в электронном виде в компьютерной системе. База данных обычно управляется системой управления базами данных (СУБД). Вместе данные и СУБД, а также связанные с ними приложения называются системой баз данных, часто сокращённо — просто базой данных.

Данные в наиболее распространённых типах современных баз данных моделируются в виде строк и столбцов в ряде таблиц, чтобы сделать обработку и запрос данных эффективными. К данным можно легко получить доступ, управлять ими, изменять, обновлять, контролировать и организовывать. Большинство баз данных используют структурированный язык запросов (SQL) для записи и запроса данных.

1.1. Данные и информация

Прежде чем углубляться в мир данных, разберёмся в разнице между данными и информацией.

Определение · ГОСТ 33707-2016 (ISO/IEC 2382:2015)

Данные — представление информации в формализованном виде, пригодном для передачи, интерпретации или обработки людьми или компьютерами.

Определение · ГОСТ Р ИСО/МЭК 10746-2-2000

Данные — любой вид знаний о предметах, фактах, понятиях и т. д. проблемной области, которыми обмениваются пользователи информационной системы.

Чтобы информация стала данными, необходимо провести процесс формализации и кодирования:

  1. Сбор информации — собрать информацию, которую вы хотите преобразовать в данные.
  2. Формализация — структурировать и организовать информацию: разбить текст на заголовки, абзацы, списки; определить форматы данных (дата, число).
  3. Кодирование — перевести формализованную информацию в формат, понятный компьютерам: текст в байты кодировки UTF-8, изображение — в JPEG.
  4. Хранение данных — сохранить закодированные данные в хранилище: жёсткий диск, базу данных, облако.

2. Типы данных

Когда определение данных введено, следует задаться вопросом: как мы можем их хранить? В информатике выделяют два типа данных: скалярные (простые) и составные (структурированные).

Скалярные и структурированные типы данных

Структурированный тип данных — тип, характеристиками которого являются: множественность элементов, его структура, способ доступа к элементам, тип элементов и операции с данными этого типа. Множество значений такого типа определяется множеством значений его элементов и их количеством. Переменная или константа структурированного типа всегда имеет несколько компонент, каждая из которых, в свою очередь, может принадлежать структурированному типу — типы могут вкладываться.

2.1. Множество

Понятие множества является исходным, строго не определяемым понятием. Приведём определение, принадлежащее Георгу Кантору:

«Под многообразием, или множеством я понимаю вообще все многое, которое возможно мыслить как единое, т. е. такую совокупность определённых элементов, которая посредством одного закона может быть соединена в одно целое».

Г. Кантор

Множества хранят данные без определённого порядка и без повторяющихся значений. Помимо добавления и удаления элементов, есть несколько важных функций, работающих с двумя множествами одновременно. Особенность множества — высокая скорость проверки принадлежности элемента.

Множества и их элементы

Основные операции:

Операции над множествами

Множество (set) — контейнер, который может хранить только уникальные значения; применяется для коллекций без дубликатов. Множество может вообще не содержать элементов — тогда его именуют пустым и обозначают ∅. Множество с конечным количеством элементов называют конечным, с бесконечным — бесконечным. Например, множество A = {0, 5, 6, −9} конечно (4 элемента), а множество натуральных чисел N бесконечно.

Способы задания множества

Считают, что множество определяется своими элементами: множество задано, если о любом объекте можно сказать, принадлежит он этому множеству или не принадлежит.

  1. Перечисление всех элементов. Если множество А состоит из чисел 3, 4, 5 и 6, запись с фигурными скобками: А = {3, 4, 5, 6}.
  2. Указание условия принадлежности (предикатный способ). A = {a | P(a)}, где P(a) — условие (предикат). Пример: множество положительных действительных чисел — A = {a | a > 0}.
  3. Порождающая процедура. A = {a | a = F}. Пример: множество из n нечётных положительных чисел — A = {a | a = 2k + 1, k = 0, 1, 2, …, n}.

Кортеж

Определение

Кортеж — упорядоченный набор фиксированной длины. Кортежем длины n из элементов множества А называется упорядоченная последовательность ⟨a₁, a₂, a₃, …, aₙ⟩ элементов этого множества.

Мощность множества

Под мощностью конечного множества понимают количество его элементов; мощность множества A обозначается |A|. Примеры:

  1. мощность объединения двух непересекающихся множеств (A ∩ B = ∅): |A ∪ B| = |A| + |B|;
  2. мощность объединения в общем случае: |A ∪ B| = |A| + |B| − |A ∩ B|.

Декартово произведение

Определение

Прямое, или декартово, произведение двух непустых множеств — множество, элементами которого являются все возможные упорядоченные пары элементов исходных множеств. Пусть даны множества A и B; образуем множество упорядоченных пар, у которых первый элемент принадлежит A, а второй — B. Полученное множество называется декартовым произведением и обозначается A × B.

Декартово произведение множеств

3. От множества к реляционной БД

Подробнее о типах БД можно узнать из лекционной части (занятие 1). Здесь остановимся на основных концепциях реляционных БД.

В реляционных базах данных кортеж — это элемент отношения. Для N-арного отношения кортеж представляет собой упорядоченный набор из N значений, по одному для каждого атрибута отношения, то есть запись (строку) таблицы, если использовать популярное представление отношения как таблицы.

ТерминОписание
Реляционная модель данныхтабличное представление
Отношениереляционная таблица
Атрибутимя столбца
Кортежстрока реляционной таблицы
Доменмножество допустимых значений для столбца
Степень отношениячисло столбцов реляционной таблицы
Мощность отношениячисло строк реляционной таблицы
Реляционная база данныхсовокупность взаимосвязанных таблиц

Реляционная модель данных — модель представления и организации данных в базе, где данные хранятся в виде таблиц из строк и столбцов. Каждая таблица имеет имя и структуру, определяемую набором столбцов и их типами данных.

Таблица — основной объект реляционной модели, хранящий данные в виде строк и столбцов; каждая строка — запись, каждый столбец — конкретное свойство (атрибут) объекта. Столбец — одно поле таблицы, хранящее данные одного типа, с уникальным именем. Строка — одна запись таблицы с данными для каждого столбца; каждая строка имеет уникальный идентификатор — ключ, который может быть составным (из нескольких столбцов).

3.1. В чём разница между базой данных и электронной таблицей?

Базы данных и электронные таблицы (например, Microsoft Excel) — удобные способы хранения информации. Основные различия между ними:

Электронные таблицы изначально разрабатывались для одного пользователя, и их характеристики отражают это: они отлично подходят для одного или небольшого числа пользователей, которым не нужно выполнять множество сложных манипуляций с данными. Базы данных, с другой стороны, предназначены для хранения гораздо больших коллекций организованной информации — иногда огромных объёмов. Базы данных позволяют нескольким пользователям одновременно быстро и безопасно получать доступ к данным и запрашивать их, используя сложную логику и язык.

4. SQL (Structured Query Language)

SQL — язык программирования, используемый почти всеми реляционными базами данных для запросов, манипулирования и определения данных, а также для контроля доступа. SQL был впервые разработан в IBM в 1970-х годах при участии Oracle, что привело к внедрению стандарта SQL ANSI. SQL послужил толчком к появлению множества расширений от таких компаний, как IBM, Oracle и Microsoft. Хотя SQL широко используется и сегодня, начинают появляться новые языки программирования.

SQL остаётся одним из самых популярных языков в области баз данных и аналитики. Знание SQL — обязательное требование вакансий, связанных с данными: SQL Developer, Data Analyst, Database Administrator, Business Intelligence Analyst и других. Изучение SQL полезно и тем, кто только начинает путь в ИТ, и опытным профессионалам.

4.1. Структура SQL

Реляционная алгебра — математический аппарат операций с отношениями: выборка, проекция, соединение, пересечение и другие операции над множествами данных (см. операции над множествами выше). SQL — язык, основанный на реляционной модели данных; он расширяет идеи реляционной алгебры, предоставляя более широкий спектр возможностей работы с данными.

Язык SQL отличается от реляционной алгебры, в которой есть лишь операции запросов, тем, что он считается полным языком: помимо операций запросов у него есть операторы, соответствующие DDL (Data Definition Language — язык описания данных), а также операторы административного управления базами данных.

Уровни SQL: DDL, DML, DCL

DDL (Data Definition Language)

Операторы DDL используются для создания, изменения и удаления структуры базы данных и её объектов: таблиц, индексов, представлений. Примеры операторов DDL: CREATE, ALTER, DROP, TRUNCATE, RENAME.

CREATE TABLE имя_таблицы (
    столбец1 ТИП_ДАННЫХ,
    столбец2 ТИП_ДАННЫХ
);
Операторы DDL

DML (Data Manipulation Language)

Операторы DML позволяют работать с данными внутри таблицы: выборка, вставка, обновление и удаление записей. Примеры операторов DML: INSERT, UPDATE, DELETE.

INSERT INTO имя_таблицы (столбец1, столбец2, ...)
VALUES (значение1, значение2, ...);
Операторы DML

4.2. Структура SQL-запроса

Классический SQL-запрос состоит из шести самых популярных операторов: два из них обязательные, а другие четыре используются по обстоятельствам:

SELECT имя_столбца1, имя_столбца2
FROM имя_таблицы
WHERE условие
GROUP BY имя_столбца
HAVING условие
ORDER BY имя_столбца ASC
Структура SQL-запроса

SELECT. Любая команда должна начинаться с ключевого слова — действия, которое должно произойти: выбрать строку, вставить новую, изменить старую или удалить таблицу целиком. SELECT выбирает отдельные столбцы или таблицу целиком, чтобы передать данные другим запросам на обработку.

FROM. Ставится после SELECT и указывает, из какой таблицы или источника данных приходит информация — здесь прописывается имя таблицы, с которой мы хотим работать.

WHERE. Фильтрует данные: после него указывается условие, которому должны удовлетворять строки, чтобы попасть в результат. Условия могут включать:

  1. сравнения: =, != (не равно), >, <, >=, <=. Например: age > 18, name = 'John';
  2. логические операторы: AND, OR, NOT для комбинирования условий. Например: age > 18 AND city = 'New York';
  3. IN и NOT IN — проверка на вхождение значения в список. Например: category IN ('A', 'B', 'C');
  4. LIKE — поиск по шаблону с символами подстановки: «?» обозначает один символ (в том числе пустой), «*» — большее количество символов;
  5. NULL и NOT NULL — проверка на наличие или отсутствие значений NULL. Например: column IS NULL;
  6. выражения с функциями — арифметика и функции в условиях. Например: price * quantity > 100.
Внимание: диалекты Спецсимволы шаблонов LIKE могут отличаться в разных диалектах SQL: вместо «?» и «*» стандартные PostgreSQL и большинство СУБД используют «_» (один символ) и «%» (любое число символов). В песочнице ниже работают % и _.

4.3. Конструктор: соберите запрос в правильном порядке

Порядок операторов в SQL фиксирован — SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Соберите его: щёлкайте по операторам в том порядке, в котором они должны идти в запросе. Ошибётесь — конструктор подскажет.

Тренажёр: порядок операторов SQL
Доступные операторы:
Ваш запрос:

5. SQL-песочница: база «Аэропорт»

Учебная база данных «Аэропорт» из практического задания уже загружена в песочницу (с небольшим тестовым наполнением). Выполняйте запросы прямо на странице: поддерживаются SELECT, WHERE, ORDER BY, GROUP BY, агрегаты и JOIN двух таблиц. Попробуйте пресеты и напишите собственный запрос с WHERE и LIKE — это пригодится в занятии 3.

SQL-песочница · учебная БД «Аэропорт»
Схема: DestinationAirports(AirportCode, AirportName) · Flights(FlightCode, FlightNumber, DepartureAirport, DestinationAirport, FlightDuration, TicketPrice) · Planes(PlaneCode, PlaneType, SeatCount, FlightRange) · Departures(DepartureCode, Flight, DepartureTime, Plane, CrewCommander) · Passengers(PassengerCode, Departure, SeatNumber, PassengerName, Passport) · данные тестовые (иллюстративные)

6. Практическое задание

6.1. Этапы работы

Создание базы данных и написание SQL-запросов обычно включает несколько этапов:

  1. Планирование: определение целей и требований к базе данных; разработка структуры данных и связей; выбор таблиц, полей, типов данных и индексов.
  2. Создание схемы БД: SQL или специальные инструменты для создания структуры (таблицы, связи, ограничения, индексы).
  3. Наполнение данными: добавление начальных данных в таблицы.
  4. Написание SQL-запросов: выборка (SELECT), вставка (INSERT), обновление (UPDATE), удаление (DELETE); запросы DDL для создания и изменения таблиц; запросы DML для управления данными.
  5. Тестирование: проверка корректности запросов и соответствия ожидаемым результатам; тестирование производительности.
  6. Оптимизация: анализ и улучшение производительности запросов и структуры базы; добавление индексов.
  7. Администрирование: регулярное обслуживание, резервное копирование, обновление и обеспечение безопасности данных.

6.2. Учебная БД «Аэропорт»

Цели базы данных:

База данных состоит из пяти таблиц со следующей структурой:

Ниже рассмотрено создание данной БД в СУБД MS Access 2016:

  1. Откройте Microsoft Access 2016.
  2. Создайте новую базу данных или откройте уже существующую.
  3. Вкладка «Создание» → «Конструктор запросов» → «Запросы».
  4. Щёлкните правой кнопкой мыши по запросу и перейдите в режим SQL.
Режим SQL в MS Access

Далее последовательно создайте таблицы по ТЗ.

Таблица «Аэропорты назначения»:

CREATE TABLE DestinationAirports (
    AirportCode COUNTER PRIMARY KEY,
    AirportName TEXT(30)
);

Таблица «Рейсы»:

CREATE TABLE Flights (
    FlightCode COUNTER PRIMARY KEY,
    FlightNumber LONG,
    DepartureAirport TEXT(20),
    DestinationAirport INTEGER,
    FlightDuration BYTE,
    TicketPrice CURRENCY,
    FOREIGN KEY (DestinationAirport) REFERENCES DestinationAirports(AirportCode)
);

Таблица «Самолёты» (заполните типы самостоятельно; например, PlaneCode COUNTER PRIMARY KEY):

CREATE TABLE Planes (
    PlaneCode ДОПИШИТЕ_ТИП,
    PlaneType ДОПИШИТЕ_ТИП,
    SeatCount ДОПИШИТЕ_ТИП,
    FlightRange ДОПИШИТЕ_ТИП
);

Таблица «Вылеты»:

CREATE TABLE Departures (
    DepartureCode COUNTER PRIMARY KEY,
    Flight INTEGER,
    DepartureTime DATETIME,
    Plane INTEGER,
    CrewCommander TEXT(20),
    FOREIGN KEY (Flight) REFERENCES Flights(FlightCode),
    FOREIGN KEY (Plane) REFERENCES Planes(PlaneCode)
);

Таблица «Пассажиры» (заполните сами типы и ключи):

CREATE TABLE Passengers (
    PassengerCode ДОПИШИТЕ_ТИП,
    Departure ДОПИШИТЕ_ТИП,
    SeatNumber ДОПИШИТЕ_ТИП,
    PassengerName ДОПИШИТЕ_ТИП,
    Passport ДОПИШИТЕ_ТИП,
    FOREIGN KEY (НАПИШИТЕ_ИМЯ_КОЛОНКИ) REFERENCES Departures(НАПИШИТЕ_ИМЯ_КОЛОНКИ)
);

Итоговая схема БД:

Схема учебной базы данных Аэропорт

7. Хорошие книги для изучения SQL

  1. «SQL для чайников» Алана Бьюли — популярная книга для начинающих: основы SQL и практические примеры.
  2. «SQL — язык запросов к базам данных» А. А. Степанова — основы SQL и примеры запросов.
  3. «SQL. Полное руководство» Александра Кузнецова — обширное руководство: основы языка, запросы, проектирование баз данных и оптимизация производительности.
  4. «SQL. Сборник рецептов», 2-е изд., Роберт де Грааф и Энтони Молинаро — готовые рецепты для практических задач в СУБД Oracle, DB2, SQL Server, MySQL и PostgreSQL.

Контрольные вопросы

Источники

  1. ГОСТ 33707-2016 (ISO/IEC 2382:2015). Информационные технологии. Словарь. — М. : Стандартинформ, 2016.
  2. Бьюли, А. Изучаем SQL / А. Бьюли. — СПб. : Символ-Плюс, 2007. — 312 с.
  3. Молинаро, Э. SQL. Сборник рецептов / Э. Молинаро, Р. де Грааф. — 2-е изд. — СПб. : БХВ-Петербург, 2021. — 576 с.
  4. PostgreSQL 15 Documentation. The SQL Language : [сайт]. — URL: https://www.postgresql.org/docs/15/sql.html (дата обращения: 18.08.2026).