Разработчик баз данных SQL (Начальный уровень)
Учебная программа курса «Разработчик баз данных SQL (Начальный уровень)» включает:
— Введение в базы данных и СУБД;
— Основы языка SQL: запросы, фильтрация, сортировка;
— Работа с таблицами: создание, редактирование, связи;
— Агрегатные функции и группировка данных;
— Практика написания простых SELECT-запросов.
После прохождения курса обучающиеся будут уметь:
— Создавать и редактировать таблицы;
— Выполнять базовые SQL-запросы;
— Обрабатывать и анализировать данные.
Обучающиеся будут знать:
— Основные понятия баз данных;
— Синтаксис и структуру SQL-запросов.
Формат: лекции + практические задания + тесты.
-
Что такое база данных?
База данных — это организованная структура для хранения, управления и извлечения информации. Обычно представляет собой набор таблиц, связанных между собой. -
Какие типы СУБД существуют?
Существуют реляционные (например, MySQL, PostgreSQL), нереляционные (NoSQL: MongoDB, Redis), объектно-ориентированные и другие виды систем управления базами данных. -
Что такое SQL?
SQL (Structured Query Language) — это язык программирования, используемый для работы с реляционными базами данных. Позволяет создавать, изменять и запрашивать данные. -
Для чего используется команда SELECT?
Команда SELECT используется для выборки данных из одной или нескольких таблиц базы данных. -
Как выбрать все записи из таблицы?
Для этого используется запрос: SELECT * FROM имя_таблицы;. -
Что означает символ * в SQL-запросе?
Символ * означает "все столбцы". Он указывает, что нужно выбрать все доступные поля из указанной таблицы. -
Как выполнить фильтрацию данных?
Фильтрация выполняется с помощью ключевого слова WHERE: SELECT * FROM таблица WHERE условие;. -
Как отсортировать результаты запроса?
Для сортировки используется ORDER BY: SELECT * FROM таблица ORDER BY столбец ASC/DESC;. -
Что такое первичный ключ?
Первичный ключ — это уникальный идентификатор каждой записи в таблице. Не может содержать дубликатов или значений NULL. -
Как добавить новую запись в таблицу?
Новая запись добавляется с помощью команды INSERT INTO: INSERT INTO таблица (столбцы) VALUES (значения);. -
Как удалить запись из таблицы?
Для удаления используется DELETE: DELETE FROM таблица WHERE условие;. -
Как обновить данные в таблице?
Обновление производится с помощью UPDATE: UPDATE таблица SET столбец = значение WHERE условие;. -
Что такое агрегатные функции?
Агрегатные функции (COUNT, SUM, AVG, MAX, MIN) позволяют выполнять вычисления над группами строк и возвращать одно значение. -
Как подсчитать количество записей в таблице?
Для этого используется функция COUNT: SELECT COUNT(*) FROM таблица;. -
Что такое оператор GROUP BY?
GROUP BY используется для группировки строк по одному или нескольким столбцам, часто вместе с агрегатными функциями. -
В чём разница между WHERE и HAVING?
WHERE фильтрует строки до группировки, HAVING — после, применяется к результатам агрегации. -
Что такое внутреннее соединение (INNER JOIN)?
INNER JOIN объединяет строки из двух таблиц на основе совпадения значений в указанных столбцах. -
Как создать таблицу в SQL?
Создание таблицы осуществляется с помощью CREATE TABLE: CREATE TABLE имя (столбцы и их типы);. -
Как изменить структуру таблицы?
Для изменения используется ALTER TABLE, например: ALTER TABLE имя ADD COLUMN новый_столбец тип;. -
Что такое внешний ключ?
Внешний ключ — это поле в одной таблице, которое ссылается на первичный ключ другой таблицы, обеспечивая целостность данных. -
Как удалить таблицу?
Таблица удаляется командой DROP TABLE: DROP TABLE имя;. -
Что такое индекс в базах данных?
Индекс — это структура, которая ускоряет выполнение запросов за счёт создания быстрого пути к данным. -
Что такое нормализация баз данных?
Нормализация — это процесс организации данных в таблицах таким образом, чтобы минимизировать дублирование и повысить целостность. -
Какие типы данных существуют в SQL?
Часто используемые типы: INTEGER, VARCHAR, DATE, BOOLEAN, FLOAT, TEXT и другие, в зависимости от СУБД. -
Что такое транзакция?
Транзакция — это последовательность операций над базой данных, которая выполняется как единое целое: либо все операции успешны, либо ни одна не выполнена.
-
Какой оператор используется для выборки данных из таблицы?
A) INSERT
B) UPDATE
C) SELECT
D) DELETE
Правильный ответ: C) SELECT -
Какой символ обозначает "все столбцы" в SQL-запросе?
A) *
B) #
C) %
D) &
Правильный ответ: A) *
-
Какой оператор используется для добавления новых записей в таблицу?
A) ADD
B) APPEND
C) INSERT
D) CREATE
Правильный ответ: C) INSERT -
Какое ключевое слово применяется для фильтрации записей в запросе?
A) ORDER
B) SORT
C) FILTER
D) WHERE
Правильный ответ: D) WHERE -
Какой оператор удаляет записи из таблицы?
A) REMOVE
B) CLEAR
C) ERASE
D) DELETE
Правильный ответ: D) DELETE -
Какой оператор изменяет существующие данные в таблице?
A) MODIFY
B) CHANGE
C) UPDATE
D) ALTER
Правильный ответ: C) UPDATE -
Что такое первичный ключ (Primary Key)?
A) Поле, которое может содержать дубликаты
B) Уникальный идентификатор строки, не может быть NULL
C) Обычный столбец без ограничений
D) Столбец, который всегда содержит текст
Правильный ответ: B) Уникальный идентификатор строки, не может быть NULL -
Какая команда создаёт новую таблицу?
A) NEW TABLE
B) MAKE TABLE
C) CREATE TABLE
D) BUILD TABLE
Правильный ответ: C) CREATE TABLE -
Какой тип данных обычно используется для хранения текста переменной длины?
A) INT
B) DATE
C) VARCHAR
D) BOOLEAN
Правильный ответ: C) VARCHAR -
Какой оператор группирует результаты по одному или нескольким столбцам?
A) GROUP BY
B) SORT BY
C) ORDER BY
D) CLUSTER BY
Правильный ответ: A) GROUP BY -
Какой оператор используется для сортировки результата запроса?
A) SORT BY
B) ARRANGE BY
C) ORDER BY
D) LIST BY
Правильный ответ: C) ORDER BY -
Какая функция подсчитывает количество записей?
A) SUM
B) COUNT
C) AVG
D) MAX
Правильный ответ: B) COUNT -
Какая функция возвращает среднее значение столбца?
A) SUM
B) COUNT
C) AVG
D) MIN
Правильный ответ: C) AVG -
Какая функция возвращает максимальное значение столбца?
A) TOP
B) HIGH
C) MAX
D) BIGGEST
Правильный ответ: C) MAX -
Какой оператор объединяет две таблицы по совпадению значений?
A) OUTER JOIN
B) FULL JOIN
C) INNER JOIN
D) SELF JOIN
Правильный ответ: C) INNER JOIN -
Какой оператор выбирает все записи из левой таблицы и соответствующие из правой?
A) RIGHT JOIN
B) INNER JOIN
C) LEFT JOIN
D) FULL JOIN
Правильный ответ: C) LEFT JOIN -
Какое ключевое слово используется для уникальных значений?
A) DISTINCT
B) UNIQUE
C) SINGLE
D) ONLY
Правильный ответ: A) DISTINCT -
Какое значение представляет отсутствие данных?
A) EMPTY
B) ZERO
C) NULL
D) VOID
Правильный ответ: C) NULL -
Какой оператор добавляет ограничение на столбец при создании таблицы?
A) CONSTRAINT
B) RULE
C) LIMIT
D) CHECK
Правильный ответ: A) CONSTRAINT -
Какой тип связи указывает на связь между первичным и внешним ключом?
A) Many-to-many
B) One-to-all
C) One-to-many
D) Foreign-primary
Правильный ответ: C) One-to-many -
Какой оператор возвращает только уникальные значения из списка?
A) IN
B) LIKE
C) BETWEEN
D) NOT IN
Правильный ответ: A) IN -
Какой оператор проверяет, находится ли значение в заданном диапазоне?
A) IN
B) LIKE
C) BETWEEN
D) CONTAINS
Правильный ответ: C) BETWEEN -
Какой оператор используется для создания псевдонимов столбцов?
A) NAME
B) ALIAS
C) AS
D) RENAME
Правильный ответ: C) AS -
Какой оператор позволяет выполнить условную логику в запросе?
A) IF
B) CASE
C) WHEN
D) CHOOSE
Правильный ответ: B) CASE -
Какой оператор ограничивает количество возвращаемых строк?
A) LIMIT
B) COUNT
C) RESTRICT
D) CUT
Правильный ответ: A) LIMIT
-
Какой тип данных подходит для хранения даты и времени?
A) DATE
B) DATETIME
C) TIMESTAMP
D) Все перечисленные
Правильный ответ: D) Все перечисленные -
Какая функция возвращает текущую дату в MySQL?
A) NOW()
B) CURRENT_DATE()
C) GETDATE()
D) TODAY()
Правильный ответ: A) NOW() -
Какая функция возвращает количество дней между двумя датами?
A) DATE_ADD
B) DATEDIFF
C) DATE_SUB
D) DAY
Правильный ответ: B) DATEDIFF -
Какое ключевое слово используется для удаления таблицы вместе с её структурой?
A) DELETE
B) TRUNCATE
C) DROP
D) REMOVE
Правильный ответ: C) DROP -
Какой оператор удаляет все данные из таблицы, но сохраняет её структуру?
A) DELETE FROM
B) TRUNCATE TABLE
C) DROP TABLE
D) CLEAR TABLE
Правильный ответ: B) TRUNCATE TABLE -
Какое ограничение гарантирует, что значения в столбце не будут повторяться?
A) PRIMARY KEY
B) FOREIGN KEY
C) UNIQUE
D) CHECK
Правильный ответ: C) UNIQUE -
Какое ограничение указывает, что столбец не может содержать NULL-значения?
A) NOT NULL
B) DEFAULT
C) UNIQUE
D) CHECK
Правильный ответ: A) NOT NULL -
Какой оператор добавляет новое ограничение к существующей таблице?
A) ADD CONSTRAINT
B) ALTER TABLE
C) MODIFY TABLE
D) UPDATE CONSTRAINT
Правильный ответ: B) ALTER TABLE -
Какой тип соединения возвращает все записи обеих таблиц?
A) INNER JOIN
B) LEFT JOIN
C) RIGHT JOIN
D) FULL JOIN
Правильный ответ: D) FULL JOIN -
Какой оператор используется для создания представления (view)?
A) CREATE FUNCTION
B) CREATE PROCEDURE
C) CREATE VIEW
D) CREATE INDEX
Правильный ответ: C) CREATE VIEW -
Что такое подзапрос?
A) Запрос внутри другого запроса
B) Множественный запрос
C) Условие в WHERE
D) Функция SQL
Правильный ответ: A) Запрос внутри другого запроса -
Какой оператор выбирает значения из заданного списка?
A) IN
B) BETWEEN
C) LIKE
D) CONTAINS
Правильный ответ: A) IN -
Какой оператор используется для поиска совпадений по шаблону?
A) IN
B) BETWEEN
C) LIKE
D) MATCH
Правильный ответ: C) LIKE -
Какой символ заменяет любое количество символов в операторе LIKE?
A) _
B) %
C) *
D) ?
Правильный ответ: B) % -
Какой символ заменяет один символ в операторе LIKE?
A) _
B) %
C) *
D) ?
Правильный ответ: A) _ -
Какая функция возвращает первое ненулевое значение из списка?
A) ISNULL
B) COALESCE
C) IFNULL
D) NVL
Правильный ответ: B) COALESCE -
Какая функция округляет число до указанного количества знаков после запятой?
A) TRUNC
B) ROUND
C) FLOOR
D) CEIL
Правильный ответ: B) ROUND -
Какая функция возвращает длину строки?
A) LENGTH
B) SIZE
C) COUNT
D) WIDTH
Правильный ответ: A) LENGTH -
Какая функция преобразует строку в верхний регистр?
A) LOWER
B) UPPER
C) CAPITALIZE
D) TITLE
Правильный ответ: B) UPPER -
Какая функция удаляет лишние пробелы с начала и конца строки?
A) TRIM
B) LTRIM
C) RTRIM
D) STRIP
Правильный ответ: A) TRIM -
Какой оператор объединяет результаты двух SELECT-запросов без дубликатов?
A) UNION ALL
B) INTERSECT
C) UNION
D) EXCEPT
Правильный ответ: C) UNION -
Какой оператор объединяет результаты двух SELECT-запросов, включая дубликаты?
A) UNION
B) UNION ALL
C) INTERSECT
D) EXCEPT
Правильный ответ: B) UNION ALL -
Какой оператор возвращает только те строки, которые есть в обоих запросах?
A) UNION
B) INTERSECT
C) EXCEPT
D) DIFFERENCE
Правильный ответ: B) INTERSECT -
Какой оператор возвращает строки первого запроса, которых нет во втором?
A) INTERSECT
B) EXCEPT
C) DIFFERENCE
D) MINUS
Правильный ответ: B) EXCEPT -
Какой тип индекса ускоряет поиск и не допускает повторяющихся значений?
A) Простой
B) Составной
C) Уникальный
D) Хэш
Правильный ответ: C) Уникальный
-
Что такое нормализация баз данных?
A) Увеличение количества дублирующихся данных
B) Процесс упрощения таблиц для уменьшения избыточности
C) Объединение всех данных в одну таблицу
D) Создание резервных копий данных
Правильный ответ: B) Процесс упрощения таблиц для уменьшения избыточности -
Какой уровень нормализации устраняет повторяющиеся группы?
A) 1НФ (первая нормальная форма)
B) 2НФ (вторая нормальная форма)
C) 3НФ (третья нормальная форма)
D) 4НФ
Правильный ответ: A) 1НФ (первая нормальная форма) -
Что означает 2НФ?
A) Все столбцы зависят от первичного ключа частично
B) Все столбцы полностью зависят от первичного ключа
C) Нет зависимостей между неключевыми атрибутами
D) Таблица не содержит повторяющихся строк
Правильный ответ: B) Все столбцы полностью зависят от первичного ключа -
Что представляет собой внешний ключ?
A) Ключ, который может быть NULL
B) Поле в одной таблице, ссылающееся на первичный ключ другой таблицы
C) Составной ключ из нескольких полей
D) Уникальное значение в текущей таблице
Правильный ответ: B) Поле в одной таблице, ссылающееся на первичный ключ другой таблицы -
Какое ограничение гарантирует, что значение соответствует заданному условию?
A) DEFAULT
B) CHECK
C) UNIQUE
D) NOT NULL
Правильный ответ: B) CHECK -
Какое значение по умолчанию присваивается полю при использовании DEFAULT?
A) NULL
B) Значение, указанное при создании таблицы
C) Первое значение из другой таблицы
D) Пустая строка
Правильный ответ: B) Значение, указанное при создании таблицы -
Какой тип связи предполагает, что одна запись из первой таблицы связана с несколькими из второй?
A) Многие ко многим
B) Один к одному
C) Один ко многим
D) Многие к одному
Правильный ответ: C) Один ко многим -
Какой тип связи предполагает, что каждая запись из одной таблицы связана только с одной записью из другой?
A) Один ко многим
B) Один к одному
C) Многие ко многим
D) Многие к одному
Правильный ответ: B) Один к одному -
Что такое индекс в базе данных?
A) Вспомогательная таблица
B) Структура, ускоряющая выполнение запросов
C) Ограничение целостности
D) Функция обработки данных
Правильный ответ: B) Структура, ускоряющая выполнение запросов -
Что такое транзакция в SQL?
A) Одна команда SELECT
B) Последовательность операций, выполняемых как единое целое
C) Удаление данных из таблицы
D) Изменение структуры таблицы
Правильный ответ: B) Последовательность операций, выполняемых как единое целое -
Какой оператор используется для начала транзакции?
A) START TRANSACTION
B) BEGIN QUERY
C) INITIATE
D) OPEN TRANSACTION
Правильный ответ: A) START TRANSACTION -
Какой оператор фиксирует изменения в рамках транзакции?
A) ROLLBACK
B) SAVE
C) COMMIT
D) APPLY
Правильный ответ: C) COMMIT -
Какой оператор откатывает изменения в рамках транзакции?
A) RESTORE
B) UNDO
C) ROLLBACK
D) REVERT
Правильный ответ: C) ROLLBACK -
Что такое представление (view)?
A) Физическая таблица
B) Виртуальная таблица, основанная на запросе
C) Таблица с временными данными
D) Резервная копия таблицы
Правильный ответ: B) Виртуальная таблица, основанная на запросе -
Что происходит при удалении таблицы, на которую ссылается внешний ключ?
A) Таблица удаляется без проверок
B) Удаление запрещено, если есть связанные данные
C) Удаляются все связанные записи автоматически
D) Связанные записи становятся NULL
Правильный ответ: B) Удаление запрещено, если есть связанные данные -
Что означает ACID в контексте транзакций?
A) Доступность, Целостность, Безопасность, Отказоустойчивость
B) Атомарность, Согласованность, Изолированность, Долговечность
C) Анализ, Корректировка, Интеграция, Разработка
D) Активность, Компактность, Интерфейс, Документация
Правильный ответ: B) Атомарность, Согласованность, Изолированность, Долговечность -
Что делает функция SUBSTR()?
A) Объединяет строки
B) Возвращает часть строки
C) Удаляет пробелы
D) Преобразует регистр
Правильный ответ: B) Возвращает часть строки -
Как получить первую букву строки 'Привет'?
A) SUBSTR('Привет', 1, 1)
B) SUBSTR('Привет', 0, 1)
C) SUBSTR('Привет', 1, 2)
D) SUBSTR('Привет', 2, 1)
Правильный ответ: A) SUBSTR('Привет', 1, 1) -
Какая функция возвращает длину строки 'Тестирование'?
A) LENGTH('Тестирование')
B) SIZE('Тестирование')
C) COUNT('Тестирование')
D) WIDTH('Тестирование')
Правильный ответ: A) LENGTH('Тестирование') -
Какая функция преобразует число в строку?
A) CAST()
B) STR()
C) TO_CHAR()
D) Все перечисленные
Правильный ответ: D) Все перечисленные -
Какая функция возвращает абсолютное значение числа -5?
A) ABS(-5)
B) MOD(-5)
C) FLOOR(-5)
D) CEIL(-5)
Правильный ответ: A) ABS(-5) -
Какая функция возвращает остаток от деления?
A) DIV
B) MOD
C) REM
D) RES
Правильный ответ: B) MOD -
Какой оператор добавляет новую колонку в существующую таблицу?
A) ADD COLUMN
B) INSERT COLUMN
C) ALTER TABLE
D) MODIFY TABLE
Правильный ответ: C) ALTER TABLE -
Какой оператор изменяет тип данных существующего столбца?
A) MODIFY COLUMN
B) ALTER COLUMN
C) UPDATE TYPE
D) CHANGE TYPE
Правильный ответ: A) MODIFY COLUMN -
Какой оператор используется для создания индекса?
A) CREATE INDEX
B) MAKE INDEX
C) BUILD INDEX
D) GENERATE INDEX
Правильный ответ: A) CREATE INDEX
Экзаменационный билет №1
Теоретическая часть
- Что такое SQL и для чего он используется?
- Какие основные типы соединений (JOIN) вы знаете и в чём их отличие?
Ответы на теоретическую часть:
- SQL (Structured Query Language) — это язык программирования, используемый для управления и обработки данных в реляционных базах данных. С его помощью можно создавать, изменять, удалять и запрашивать данные.
- Основные типы JOIN:
- INNER JOIN — возвращает только совпадающие строки из обеих таблиц.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие из правой; если совпадений нет, то NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но с правой таблицей.
- FULL JOIN (FULL OUTER JOIN) — возвращает все строки из обеих таблиц, объединяя по условию.
Практическая часть
Создайте таблицу students
с полями:
id
(целое число, первичный ключ),name
(строка длиной до 50 символов, не может быть пустым),age
(целое число).
Затем добавьте запись: имя — "Алексей", возраст — 18.
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INTEGER
);
INSERT INTO students (id, name, age) VALUES (1, 'Алексей', 18);
Экзаменационный билет №2
Теоретическая часть
- Что такое первичный ключ и зачем он нужен?
- В чём разница между DELETE и TRUNCATE?
Ответы на теоретическую часть:
- Первичный ключ — это уникальный идентификатор каждой записи в таблице. Он гарантирует уникальность значений и не может содержать NULL.
- DELETE — удаляет конкретные строки из таблицы (можно использовать WHERE), при этом логируется каждая операция. TRUNCATE — удаляет все данные из таблицы без возможности отбора, работает быстрее и не записывает изменения в журнал.
Практическая часть
Дана таблица employees
со следующими полями:
id
name
salary
Напишите запрос, который выберет всех сотрудников с зарплатой больше 30000 рублей.
SELECT * FROM employees WHERE salary > 30000;
Экзаменационный билет №3
Теоретическая часть
- Что такое агрегатные функции? Приведите примеры.
- Как работают операторы GROUP BY и HAVING?
Ответы на теоретическую часть:
- Агрегатные функции — это функции, которые выполняют вычисления над группами строк и возвращают одно значение. Примеры: COUNT(), SUM(), AVG(), MAX(), MIN().
- GROUP BY группирует данные по одному или нескольким столбцам. HAVING фильтрует группы после выполнения агрегации, в отличие от WHERE, который фильтрует данные до группировки.
Практическая часть
Есть таблица orders
с полями:
product_id
quantity
Напишите запрос, который посчитает общее количество товаров по каждому product_id
.
SELECT product_id, SUM(quantity) AS total_quantity
FROM orders
GROUP BY product_id;
Экзаменационный билет №4
Теоретическая часть
- Что такое внешний ключ и какова его роль?
- Что такое транзакция и какие свойства она имеет?
Ответы на теоретическую часть:
- Внешний ключ — это поле в одной таблице, которое ссылается на первичный ключ другой таблицы. Он обеспечивает целостность данных и связи между таблицами.
- Транзакция — это последовательность операций, которая выполняется как единое целое. Её свойства (ACID):
- A tomacity (Атомарность)
- C onsistency (Согласованность)
- I solation (Изолированность)
- D urability (Долговечность)
Практическая часть
Напишите SQL-скрипт, который начинает транзакцию, добавляет новую запись в таблицу users
(поля id
, name
) и фиксирует изменения.
START TRANSACTION;
INSERT INTO users (id, name) VALUES (1, 'Мария');
COMMIT;
Экзаменационный билет №5
Теоретическая часть
- Что такое представление (VIEW)?
- Какие ограничения (constraints) вы знаете и для чего они нужны?
Ответы на теоретическую часть:
- Представление (VIEW) — это виртуальная таблица, основанная на результате SQL-запроса. Она не хранит данные физически, а предоставляет удобный способ доступа к данным других таблиц.
- Ограничения (constraints) — это правила, накладываемые на данные в таблицах. Примеры: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT. Они обеспечивают целостность и корректность данных.
Практическая часть
Создайте представление young_students
, которое будет показывать студентов младше 20 лет из таблицы students
(id
, name
, age
).
CREATE VIEW young_students AS
SELECT id, name, age
FROM students
WHERE age < 20;
Экзаменационный билет №6
Теоретическая часть
- Что такое нормализация баз данных и зачем она нужна?
- В чём разница между UNION и UNION ALL?
Ответы на теоретическую часть:
- Нормализация — это процесс упорядочивания структуры таблиц с целью устранения избыточности и повышения целостности данных. Она помогает избежать аномалий при вставке, обновлении и удалении записей.
- UNION объединяет результаты двух запросов и удаляет дубликаты, тогда как UNION ALL выводит все строки, включая повторяющиеся.
Практическая часть
Напишите SQL-запрос, который выбирает уникальные имена студентов из таблицы students
и сортирует их по алфавиту.
SELECT DISTINCT name
FROM students
ORDER BY name ASC;
Экзаменационный билет №7
Теоретическая часть
- Что такое индекс в базе данных и для чего он используется?
- Как работают функции COUNT(*), COUNT(столбец) и в чём их различие?
Ответы на теоретическую часть:
- Индекс — это структура, которая ускоряет выполнение запросов за счёт создания быстрого доступа к данным. Он работает аналогично указателю в книге.
- COUNT(*) считает все строки, включая NULL, а COUNT(столбец) — только непустые значения в указанном столбце.
Практическая часть
Есть таблица products
с полями id
, name
, price
. Напишите запрос, который выведет имя продукта и его цену, если цена больше 500.
SELECT name, price
FROM products
WHERE price > 500;
Экзаменационный билет №8
Теоретическая часть
- Что такое CASE и как он может использоваться в SQL?
- Что означает оператор LIKE и какие подстановочные символы используются?
Ответы на теоретическую часть:
- CASE — это условный оператор, позволяющий выполнять логические проверки в запросах и возвращать разные значения в зависимости от условия. Используется внутри SELECT, WHERE и других частей запроса.
- LIKE используется для поиска значений по шаблону. Подстановочные символы:
%
(любое количество символов) и_
(один символ).
Практическая часть
Дана таблица users
со столбцами id
, name
, email
. Напишите запрос, который выберет всех пользователей, чей email содержит слово "gmail".
SELECT *
FROM users
WHERE email LIKE '%gmail%';
Экзаменационный билет №9
Теоретическая часть
- Что такое подзапрос и где он может применяться?
- Что такое строковые функции в SQL и приведите примеры их использования?
Ответы на теоретическую часть:
- Подзапрос — это запрос, вложенный внутрь другого запроса. Может использоваться в WHERE, FROM, SELECT и других частях.
- Строковые функции — это функции, которые позволяют манипулировать текстовыми данными. Примеры:
UPPER()
,LOWER()
,SUBSTR()
,TRIM()
.
Практическая часть
Дана таблица employees
со столбцом full_name
. Напишите запрос, который выведет имена сотрудников в верхнем регистре.
SELECT UPPER(full_name)
FROM employees;
Экзаменационный билет №10
Теоретическая часть
- Что такое AUTOINCREMENT и в каких случаях он применяется?
- Как работают функции работы с датами: NOW(), DATE_ADD(), DATEDIFF()?
Ответы на теоретическую часть:
- AUTOINCREMENT — это автоматическое увеличение значения первичного ключа при добавлении новой записи. Применяется для удобного управления уникальными идентификаторами.
- NOW() — возвращает текущую дату и время.
- DATE_ADD(date, INTERVAL N DAY) — добавляет N дней к указанной дате.
- DATEDIFF(date1, date2) — возвращает разницу между двумя датами в днях.
Практическая часть
Создайте таблицу orders
с полями:
id
(AUTOINCREMENT, первичный ключ),product_name
(строка, не может быть пустой),order_date
(дата заказа, по умолчанию текущая дата).
Добавьте запись с названием товара "Клавиатура".
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_name VARCHAR NOT NULL,
order_date DATE DEFAULT CURRENT_DATE
);
INSERT INTO orders (product_name) VALUES ('Клавиатура');
Экзаменационный билет №11
Теоретическая часть
- Что такое NULL и как он обрабатывается в SQL?
- Какие типы данных чаще всего используются в SQL и для чего они нужны?
Ответы на теоретическую часть:
- NULL — это отсутствие значения. В SQL NULL не равен ни себе, ни любому другому значению. Для проверки используется
IS NULL
илиIS NOT NULL
. - Основные типы данных:
- INTEGER — целые числа
- VARCHAR(n) — строка переменной длины
- DATE — дата
- BOOLEAN — логическое значение (истина/ложь)
- FLOAT / REAL — дробные числа
Практическая часть
Напишите SQL-запрос, который выводит список студентов без указания возраста из таблицы students
.
SELECT name
FROM students
WHERE age IS NULL;
Экзаменационный билет №12
Теоретическая часть
- Что такое оператор BETWEEN и как он используется?
- Что такое ограничение DEFAULT и как оно применяется?
Ответы на теоретическую часть:
- BETWEEN используется для выборки записей, где значение находится в указанном диапазоне:
WHERE столбец BETWEEN значение1 AND значение2
. - DEFAULT задаёт значение по умолчанию для столбца при отсутствии явного значения в запросе INSERT.
Практическая часть
Создайте таблицу users
с полями:
id
(целое число, первичный ключ),username
(строка, не может быть пустой),created_at
(дата создания, по умолчанию текущая дата).
Добавьте нового пользователя с именем "user1".
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username VARCHAR NOT NULL,
created_at DATE DEFAULT CURRENT_DATE
);
INSERT INTO users (id, username) VALUES (1, 'user1');
Экзаменационный билет №13
Теоретическая часть
- Что такое SELF JOIN и когда он применяется?
- Что такое функция COALESCE и как она работает?
Ответы на теоретическую часть:
- SELF JOIN — это соединение таблицы самой с собой. Применяется, например, для работы с иерархическими структурами (например, сотрудники и их руководители).
- COALESCE возвращает первое ненулевое значение из списка аргументов. Используется для замены NULL на дефолтное значение.
Практическая часть
Есть таблица employees
(id
, name
, manager_id
). Напишите запрос, который выведет имя сотрудника и имя его менеджера (или ‘Без менеджера’, если manager_id = NULL).
SELECT e.name AS employee_name,
COALESCE(m.name, 'Без менеджера') AS manager_name
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;
Экзаменационный билет №14
Теоретическая часть
- Что такое оператор HAVING и чем он отличается от WHERE?
- Что такое представление (VIEW)? Какие преимущества оно даёт?
Ответы на теоретическую часть:
- HAVING фильтрует данные после группировки (GROUP BY), тогда как WHERE фильтрует до неё.
- VIEW — это виртуальная таблица, созданная на основе SQL-запроса. Преимущества: упрощает сложные запросы, скрывает детали реализации, обеспечивает безопасность.
Практическая часть
Дана таблица orders
(order_id
, customer_id
, amount
). Напишите запрос, который покажет суммарную сумму заказов по каждому клиенту и отфильтрует тех, у кого сумма больше 5000.
SELECT customer_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 5000;
Экзаменационный билет №15
Теоретическая часть
- Что такое триггер и в каких случаях он может использоваться?
- Как работают функции UPPER(), LOWER() и TRIM()?
Ответы на теоретическую часть:
- Триггер — это хранимая процедура, автоматически вызываемая при выполнении определённых действий (INSERT, UPDATE, DELETE). Может использоваться для проверки данных, логирования изменений и т.п.
- UPPER() — переводит строку в верхний регистр
- LOWER() — в нижний
- TRIM() — удаляет лишние пробелы с начала и конца строки
Практическая часть
Дана таблица products
(product_id
, product_name
). Напишите запрос, который выведет название продукта в нижнем регистре и без лишних пробелов.
SELECT LOWER(TRIM(product_name)) AS clean_name
FROM products;
Кейс №1: "Ошибка в запросе к базе данных магазина"
Описание ситуации
Вы — начинающий разработчик, только осваивающий SQL. Вас пригласили на стажировку в небольшой интернет-магазин, занимающийся продажей книг. Ваша первая задача — проанализировать данные о продажах и подготовить отчёт по выручке за последний месяц.
Вам предоставлена следующая схема базы данных:
Таблица books
Таблица orders
Задача
Рассчитать общую выручку за март 2025 года , используя данные из таблиц books
и orders
Стажёр написал следующий SQL-запрос:
SELECT SUM(b.price * o.quantity) AS total_revenue
FROM books b
JOIN orders o ON b.book_id = o.book_id
WHERE o.order_date BETWEEN '2025-03-01' AND '2025-03-31';
На первый взгляд всё логично, но при проверке выяснилось, что результат не совпадает с ожидаемым.
Скрытые проблемы
-
Ошибка даты в данных:
Одна из записей (order_id = 103
) относится к апрелю 2025 года и не должна учитываться в мартовской выручке, но запрос может работать некорректно, если СУБД интерпретирует формат даты по-разному. -
Отсутствие фильтрации по диапазону дат в WHERE (в некоторых СУБД):
Хотя условиеBETWEEN
указано правильно, в некоторых СУБД (например, MySQL)BETWEEN
включает конечные значения, но если время хранится вместе с датой (DATETIME
), то запрос может пропустить записи с временем после23:59:59
-
Потенциальное дублирование связей или лишние строки:
Нет гарантии уникальности строк в результате JOIN, особенно если связи между таблицами не ограничены внешним ключом.
Правильное решение
SELECT SUM(b.price * o.quantity) AS total_revenue
FROM books b
JOIN orders o ON b.book_id = o.book_id
WHERE DATE(o.order_date) BETWEEN '2025-03-01' AND '2025-03-31';
Или более точная запись:
SELECT SUM(b.price * o.quantity) AS total_revenue
FROM books b
JOIN orders o ON b.book_id = o.book_id
WHERE o.order_date >= '2025-03-01'
AND o.order_date < '2025-04-01';
Такой подход исключает возможные проблемы с типами данных и гарантирует корректный подсчёт только тех заказов, которые были сделаны строго в марте.
Итоговая выручка за март 2025:
- Заказ 101: 2 × 650 = 1300
- Заказ 102: 1 × 420 = 420
- Заказ 104: 1 × 650 = 650
Итого: 1300 + 420 + 650 = 2370 рублей
Кейс №2: "Ошибка в запросе на обновление данных"
Описание ситуации
Вы продолжаете стажировку в интернет-магазине, где уже успели поработать с аналитикой продаж. Теперь ваша задача — помочь отделу маркетинга обновить цены на книги определённого автора, так как поставщик изменил стоимость.
Вам предоставлена та же схема базы данных:
Таблица books
Задача
Увеличить цену всех книг Ф.М. Достоевского на 15% .
Вы написали следующий SQL-запрос:
UPDATE books
SET price = price * 1.15
WHERE author = 'Ф.М. Достоевский';
После выполнения запроса вы решили проверить данные:
SELECT * FROM books WHERE author = 'Ф.М. Достоевский';
Результат:
На первый взгляд всё верно: 420 × 1.15 = 483.
Однако через некоторое время менеджер сообщил, что цена книги "Идиот" , также принадлежащей Ф.М. Достоевскому, не была изменена , хотя должна была.
Вы снова проверили таблицу и действительно не нашли записи о книге "Идиот".
Скрытые проблемы
-
Отсутствие книги в таблице:
Запрос отработал корректно, но сама запись о книге "Идиот" отсутствует в таблицеbooks
-
Ошибка в логике работы с данными:
Не было предварительной проверки наличия нужных записей перед обновлением. -
Не предусмотрено добавление новой книги, если её нет:
Если информация о книге отсутствует, необходимо либо сообщить об этом, либо автоматически добавить запись.
Правильное решение
Если книга "Идиот" отсутствует, и она должна быть в базе:
INSERT INTO books (book_id, title, author, price)
VALUES (4, 'Идиот', 'Ф.М. Достоевский', 490);
После этого повторите обновление:
UPDATE books
SET price = price * 1.15
WHERE author = 'Ф.М. Достоевский';
Теперь результат будет корректным для всех книг указанного автора.
Ролевая игра №1: "База данных в кризисном отделе IT-стартапа"
Цель игры
Научить студентов применять знания SQL на практике, работать в команде, принимать решения под давлением и уметь читать, анализировать и корректировать структуру базы данных.
Формат
Командная ролевая игра (3–5 человек в команде), с элементами таймера, ограниченных ресурсов и сценарного развития событий. Длительность — 60–90 минут.
Сеттинг
Вы — группа новых сотрудников стартапа «BookHub», занимающегося онлайн-продажей книг. Внезапно произошёл технический сбой: часть данных о пользователях, заказах и книгах стала недоступной или некорректной. Руководство требует срочно восстановить работу системы до конца дня.
Роли в команде
Каждый участник получает определённую роль:
-
Тимлид / Лидер проекта
Отвечает за распределение задач, контроль времени и коммуникацию с «менеджером» (преподавателем). -
Аналитик данных
Занимается анализом запросов, проверяет корректность результатов, составляет отчёты. -
Разработчик SQL
Пишет и проверяет SQL-запросы, работает с таблицами, выполняет JOIN'ы, агрегации, обновления. -
Тестировщик / QA-специалист
Проверяет корректность выполнения запросов, выявляет ошибки, тестовые данные и возможные баги. -
Документалист / Системный администратор
Следит за логами, документацией, фиксирует изменения, помогает с пониманием структуры БД.
(В случае малого количества участников роли могут объединяться.)
Этапы игры
Этап 1: Получение задания (10 мин)
Команда получает описание ситуации:
- Система сломалась после последнего обновления.
- Нужно восстановить данные, найти ошибки в запросах и исправить их.
- Предоставляется схема базы данных и несколько примеров неудачных запросов.
Этап 2: Анализ проблем (20 мин)
Команда изучает:
- Структуру таблиц (поля, типы данных, связи).
- Примеры SQL-запросов, которые вызвали ошибки.
- Описание проблем от пользователей (например: «не отображаются заказы за март», «цены показываются неверно»).
Этап 3: Исправление ошибок (30 мин)
Команда должна:
- Исправить SQL-запросы.
- Обнаружить и устранить проблемы в структуре БД.
- Выполнить обновление/вставку/выборку данных по указанным условиям.
Этап 4: Защита решений (10–15 мин)
Команда представляет свои исправления преподавателю (в роли менеджера):
- Какие ошибки были найдены?
- Как они были исправлены?
- Как проверялась корректность?
Обучающие эффекты
- Практика написания SQL-запросов (SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY и др.)
- Работа с реальной моделью данных.
- Командная работа и распределение ролей.
- Развитие soft skills: коммуникация, принятие решений, управление временем.
- Анализ и решение проблем в условиях ограничений.
Примеры проблем и вызовов
-
Ошибка в JOIN:
В запросе для получения всех заказов клиента использованINNER JOIN
, поэтому клиенты без заказов исключены. -
Неверное условие WHERE:
Фильтрация по дате написана какWHERE order_date = '2025-04-01'
, но нужно было выбрать весь месяц. -
Отсутствие индекса:
Запрос с фильтрацией по автору работает медленно — нет индекса на полеauthor
. -
Ошибка в агрегации:
Подсчёт суммы продаж выполнен неправильно: не учтено количество товаров в заказе. -
Дублирование записей:
При добавлении новой книги не проверяется существование такой же — привело к дубликатам.
Ролевая игра №2: "SQL-расследование: пропавшие данные"
Цель игры
Научить студентов находить и восстанавливать утерянные или повреждённые данные, анализировать логи, использовать подзапросы, транзакции и работать с ограничениями в SQL.
Формат
Командная ролевая игра (3–5 человек), с элементами квеста, ограниченного времени и пошагового выполнения задач. Длительность — 60–90 минут.
Сеттинг
Вы — группа молодых разработчиков, нанятых на временную работу в компанию «DataSafe», которая занимается хранением и обработкой данных пользователей. Ночью произошёл сбой системы: часть данных исчезла, а в логах появились странные записи. Ваша задача — как можно скорее восстановить целостность базы данных и выяснить, что именно пошло не так.
Роли в команде
-
Главный следователь / Лидер
Отвечает за общую стратегию, координацию действий и взаимодействие с преподавателем (в роли системного администратора). -
База-эксперт / DBA
Работает с таблицами, индексами, ограничениями, структурой БД и транзакциями. -
Аналитик логов / Инженер данных
Изучает логи, находит ошибки, понимает, какие операции были выполнены до сбоя. -
Программист / SQL-разработчик
Пишет запросы для восстановления данных, работает с подзапросами, CASE, JOIN'ами и условиями. -
Тестировщик / QA-инженер
Проверяет корректность восстановленных данных, фиксирует баги и проверяет граничные случаи.
(В случае необходимости роли могут быть объединены.)
Этапы игры
Этап 1: Получение задания и изучение ситуации (10 мин)
Команда получает:
- Описание инцидента.
- Схему базы данных.
- Выдержки из логов.
- Перечень проблем от пользователей:
- «Не отображаются заказы некоторых клиентов»
- «Пользователь ‘test_user’ исчез из системы»
- «Цена на книгу ‘Мастер и Маргарита’ стала 0»
Этап 2: Анализ логов и диагностика (15 мин)
Команда:
- Читает выдержки из логов, где есть ошибки DELETE, UPDATE без WHERE, некорректные JOIN'ы.
- Находит подозрительные операции.
- Выясняет, какие таблицы могли пострадать.
Этап 3: Восстановление данных (30 мин)
Команда должна:
- Написать запросы для восстановления потерянных записей.
- Исправить некорректные значения (например, цена = 0).
- Проверить связи между таблицами.
- Убедиться, что все внешние ключи соблюдены.
Этап 4: Защита решений и заключение (15 мин)
Каждая команда:
- Представляет свои исправления.
- Объясняет, какие ошибки были найдены.
- Предлагает меры по предотвращению подобных ситуаций в будущем.
- Отвечает на вопросы преподавателя.
Обучающие эффекты
- Закрепление навыков работы с SQL: SELECT, INSERT, UPDATE, DELETE, JOIN, CASE, GROUP BY.
- Понимание важности ограничений (NOT NULL, PRIMARY KEY, FOREIGN KEY).
- Работа с логами и восстановление данных.
- Практика использования транзакций для безопасной модификации данных.
- Командная работа, распределение ролей, управление временем.
Примеры проблем и вызовов
-
Некорректный DELETE:
Кто-то выполнилDELETE FROM users WHERE user_id > 10
вместоuser_id = 10
. -
Ошибка в UPDATE:
UPDATE products SET price = 0 WHERE author LIKE '%М.А. Булгаков%'
— затронуло лишние строки. -
Отсутствие резервной копии:
Пришлось восстанавливать данные вручную через другие таблицы или справочные источники. -
Нарушение ссылочной целостности:
В таблицеorders
остались ссылки на удалённые книги. -
Ошибка в подзапросе:
Запрос на выборку активных пользователей вернул пустой результат из-за некорректного подзапроса.
Ролевая игра №3: "SQL-расследование: Аферисты в онлайн-магазине"
Цель игры
Научить студентов анализировать подозрительные данные, находить аномалии, использовать продвинутые SQL-запросы (подзапросы, CASE, HAVING, оконные функции), а также развивать навыки логического мышления и критического анализа.
Формат
Командная ролевая игра с элементами детективного расследования. Участники выступают в роли следователей, которым нужно разоблачить мошеннические операции в системе базы данных. Длительность — 60–90 минут.
Сеттинг
Вы — группа молодых специалистов, работающих в отделе безопасности крупного онлайн-магазина «ShopSecure». Недавно служба мониторинга заметила подозрительную активность:
- необычно высокое число заказов с одного аккаунта,
- аномальные суммы покупок,
- подозрительные действия пользователей, связанных с возвратами.
Ваша задача — провести внутреннее расследование, используя SQL-запросы, чтобы обнаружить возможных мошенников и предотвратить дальнейшие убытки.
Роли в команде
-
Главный следователь / Лидер
Организует работу команды, распределяет задачи, представляет выводы. -
Аналитик данных / Детектив
Выполняет анализ таблиц, находит подозрительные закономерности, пишет сложные запросы. -
Эксперт по SQL / Базоданный инженер
Отвечает за написание точных и эффективных SQL-запросов для извлечения информации. -
Специалист по безопасности / Аудитор
Проверяет логи, находит ошибочные или злонамеренные действия, контролирует целостность данных. -
Отчетчик / Коммуникатор
Готовит финальный отчет, оформляет результаты, объясняет их руководству.
(В случае малого количества участников роли могут совмещаться.)
Этапы игры
Этап 1: Получение задания и брифинг (10 мин)
Команда получает:
- Описание ситуации.
- Схему базы данных магазина.
- Перечень подозрительных событий.
- Задачи расследования.
Этап 2: Изучение структуры БД и исходных данных (10 мин)
Команда:
- Знакомится с таблицами:
users
,orders
,products
,returns
,logs
. - Обсуждает, какие поля могут быть ключевыми при поиске мошенничества.
Этап 3: Поиск аномалий (30 мин)
Команда должна:
- Найти пользователей с подозрительно большим количеством заказов.
- Выявить заказы с аномальной суммой или количеством товаров.
- Проверить, есть ли несоответствия между заказами и возвратами.
- Использовать группировки, агрегатные функции, подзапросы, CASE, HAVING.
Этап 4: Финальный отчет и защита выводов (10–15 мин)
Команда представляет:
- Кто, по их мнению, является мошенником.
- Какие доказательства были найдены.
- Какие SQL-запросы помогли в расследовании.
- Какие меры можно предложить для предотвращения подобных случаев.
Обучающие эффекты
- Применение сложных SQL-конструкций: GROUP BY, HAVING, CASE, оконные функции, подзапросы.
- Анализ данных на предмет аномалий и несоответствий.
- Развитие логики и навыков интерпретации результатов.
- Работа с реальными сценариями использования баз данных.
- Развитие soft skills: коммуникация, презентация, командная работа.
Примеры проблем и вызовов
-
Подозрительный пользователь:
Пользователь сделал 100 заказов за день — проверить черезGROUP BY user_id HAVING COUNT(*) > 50
. -
Аномальная сумма заказа:
Заказ на сумму свыше 1 млн рублей — найти черезWHERE total_amount > 1000000
. -
Несоответствие возврата:
Возврат был оформлен, но товар не числится как купленный — проверить через LEFT JOIN и NULL. -
Множественные аккаунты с одинаковой почтой:
Подозрение на регистрацию нескольких учетных записей —GROUP BY email HAVING COUNT(*) > 1
. -
Запрос без ограничений:
Мошенник использовалUPDATE orders SET status = 'оплачен' WHERE user_id = ...
без проверок — найти через логи.
Ролевая игра №4: "SQL-дебаты: Битва за лучшую архитектуру базы данных"
Цель игры
Научить студентов проектировать эффективную структуру базы данных, анализировать сильные и слабые стороны разных подходов к моделированию данных, отстаивать свою точку зрения и работать в условиях ограниченного времени.
Формат
Командная ролевая игра с элементами дебатов. Участники выступают в роли экспертов по базам данных, которые должны защитить свою модель БД перед комиссией (преподаватель). Длительность — 60–90 минут.
Сеттинг
Вы — группа специалистов из разных IT-компаний, приглашённых на закрытое совещание в компанию «DataFuture». Перед запуском нового проекта руководство хочет выбрать оптимальную архитектуру базы данных. Каждая команда представляет свой вариант модели, обосновывает её преимущества и защищает от критики других участников.
Роли в команде
-
Архитектор БД / Главный проектировщик
Отвечает за создание логической и физической модели базы данных. -
SQL-разработчик / Программист
Пишет примеры запросов, демонстрирующих удобство работы с предложенной моделью. -
Эксперт по производительности / Оптимизатор
Обосновывает, почему такая структура будет быстрой и масштабируемой. -
Тестировщик / Аналитик данных
Предлагает тестовые данные и проверяет, как модель работает на практике. -
Оратор / Коммуникатор
Выступает с защитой решения, отвечает на вопросы жюри, участвует в дебатах.
(В случае малого количества участников роли могут объединяться.)
Этапы игры
Этап 1: Получение задания (10 мин)
Командам даётся описание бизнес-задачи. Например:
Разработать модель базы данных для онлайн-библиотеки, где пользователи могут просматривать, скачивать и оценивать книги. Также нужно хранить информацию о жанрах, авторах, отзывах и подписках.
Каждая команда получает:
- Описание предметной области.
- Список требований к системе.
- Примеры типовых SQL-запросов, которые будут использоваться.
Этап 2: Проектирование модели БД (25 мин)
Команды:
- Создают ER-диаграмму или текстовое описание таблиц.
- Определяют поля, типы данных, связи, индексы.
- Прописывают ограничения (NOT NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE).
Этап 3: Написание примерных SQL-запросов (15 мин)
Команды пишут:
- Запросы на выборку данных.
- Примеры добавления/обновления записей.
- Примеры агрегации (например, средний рейтинг книги).
Этап 4: Дебаты и защита решений (10–15 мин)
Команды поочерёдно:
- Защищают свою модель.
- Отвечают на вопросы жюри и оппонентов.
- Критикуют решения других команд (конструктивно).
- Предлагают улучшения чужим моделям.
Обучающие эффекты
- Практика проектирования баз данных.
- Развитие навыков нормализации и денормализации.
- Применение ограничений и связей между таблицами.
- Понимание плюсов и минусов различных подходов к моделированию.
- Развитие soft skills: публичное выступление, критическое мышление, работа в команде.
Примеры проблем и вызовов
-
Нарушение нормализации:
Одна из команд создаёт таблицуbooks_with_authors
, где информация об авторе повторяется для каждой книги. -
Отсутствие связи между таблицами:
Таблицы не связаны внешними ключами, что может привести к потере целостности данных. -
Избыточная денормализация:
Для ускорения запросов используется одна большая таблица — сложно поддерживать и обновлять. -
Ошибка в проектировании отношений:
Многие ко многим реализовано без промежуточной таблицы. -
Неудобная структура для часто используемых запросов:
Например, нет отдельной таблицыratings
, и оценки хранятся в таблицеusers
Интеллект-карта №1: "Путь новичка к SQL"
Центральная тема:
SQL — язык запросов к базам данных
Основные ветви:
1. Введение в БД
- Что такое база данных
- Реляционные и нереляционные СУБД
- Основные понятия: таблица, строка, столбец, ключ
- Примеры СУБД: MySQL, PostgreSQL, SQLite
2. Основы SQL
- SELECT — выборка данных
- WHERE — фильтрация записей
- ORDER BY — сортировка
- LIMIT — ограничение результата
- DISTINCT — уникальные значения
3. Работа с данными
- INSERT — добавление записей
- UPDATE — изменение данных
- DELETE — удаление записей
- TRUNCATE — очистка таблицы
- Понятие транзакции (начало/фиксация/откат)
4. Агрегатные функции и группировка
- COUNT, SUM, AVG, MAX, MIN
- GROUP BY — группировка по признаку
- HAVING — фильтр после группировки
5. Связи между таблицами
- INNER JOIN — пересечение
- LEFT JOIN — все из левой, совпадения из правой
- RIGHT JOIN — аналогично, но с правой
- FULL JOIN — объединение всех записей
- SELF JOIN — соединение таблицы самой с собой
6. Подзапросы и CASE
- Вложенные запросы (подзапросы)
- CASE — условная логика в SQL
- Использование подзапросов в WHERE, FROM, SELECT
7. Ограничения и целостность
- PRIMARY KEY — первичный ключ
- FOREIGN KEY — внешний ключ
- NOT NULL, UNIQUE, DEFAULT, CHECK
- Нормализация данных (на уровне понимания)
8. Практика и проекты
- Создание простых таблиц
- Выполнение CRUD-операций
- Анализ данных из реальных примеров
- Мини-проект: «Система учета книг»
Интеллект-карта №2: "Ключевые темы SQL для школьников и студентов"
Центральная тема:
Как стать разработчиком БД: первый шаг
Основные ветви:
1. Логическое мышление и работа с данными
- Что такое данные?
- Как организовать информацию
- Таблицы как основной инструмент
- От абстрактной идеи к структуре БД
2. Инструменты и среды разработки
- Установка и настройка СУБД
- Работа с интерфейсами: DBeaver, phpMyAdmin, SQLite Browser
- Первый SQL-запрос: SELECT * FROM students
- Запуск и отладка запросов
3. Работа с таблицами
- CREATE TABLE — создание структуры
- ALTER TABLE — изменение структуры
- DROP TABLE — удаление таблицы
- Типы данных: INTEGER, VARCHAR, DATE, BOOLEAN
4. Математика в SQL
- Арифметические операции
- Функции ROUND, ABS, MOD
- Работа с датами: NOW(), DATE_ADD(), DATEDIFF()
- Преобразование типов: CAST()
5. Строки и текст
- CONCAT — объединение строк
- SUBSTR — выделение части строки
- UPPER / LOWER — регистр
- TRIM — удаление пробелов
6. Условия и фильтрация
- BETWEEN — диапазон
- IN — список допустимых значений
- LIKE — поиск по шаблону
- IS NULL / IS NOT NULL — проверка на наличие данных
7. Аналитика и отчеты
- Группировка данных (GROUP BY)
- Агрегация (COUNT, SUM, AVG)
- Фильтрация групп (HAVING)
- Создание отчетов из данных
8. Проектная деятельность
- Сбор данных
- Создание своей базы данных
- Заполнение таблиц
- Написание собственных запросов
- Презентация проекта
Интеллект-карта №3: "SQL — профессия будущего"
Центральная тема:
Почему стоит изучить SQL и куда это ведёт
Основные ветви:
1. SQL в мире IT
- SQL — один из самых востребованных языков
- Где используется: аналитика, бэкенд, BI, финансы, игры
- SQL в роли Data Analyst, Backend Developer, DBA
- SQL в сочетании с Python, Excel, Power BI
2. Образование и развитие
- Онлайн-курсы и книги
- Платформы для практики: SQLZoo, LeetCode, HackerRank
- Сообщества и форумы
- Дополнительные темы: NoSQL, JSON в SQL, оконные функции
3. Практика и развитие навыков
- Решение задач на платформах
- Участие в хакатонах и кейс-чемпионатах
- Проекты в учебном процессе
- Собственные мини-приложения с базой данных
4. Возможности карьеры
- Junior SQL Developer
- Data Analyst
- QA Engineer (проверка данных)
- Базы данных в сфере образования, здравоохранения, торговли
5. Перспективы роста
- От начального уровня к профессионалу
- Изучение продвинутого SQL (CTE, оконные функции)
- Переход к проектированию БД
- Работа с большими данными (Big Data)
6. Командная работа
- Работа с коллегами-программистами
- Взаимодействие с аналитиками и тестировщиками
- Документирование и обсуждение решений
- Участие в совместных проектах
7. Образовательный путь
- Школьные курсы по информатике
- Кружки программирования
- Колледжи и университеты
- Самостоятельное обучение
1. Учебник: "SQL для простых смертных" — Джон С. Миддлтон
- Уровень : начальный
- Описание : Понятное и доступное введение в SQL, написанное без излишней технической сложности. Подходит школьникам и студентам.
- Почему стоит использовать : объясняет концепции на примерах, содержит практические советы и упражнения.
2. Учебное пособие: "SQL. Базовый курс" — Алан Беaulieu
- Уровень : начальный – средний
- Описание : Охватывает основные аспекты SQL, включая запросы, соединения, агрегатные функции. Примеры приведены на основе MySQL.
- Почему стоит использовать : структурированное изложение, хорошее сочетание теории и практики.
3. Задачник: "SQL: практикум для начинающих" — Валерий Чистяков
- Уровень : начальный
- Описание : Сборник задач по SQL с решениями. Темы: работа с таблицами, выборка, фильтрация, группировка, JOIN'ы.
- Почему стоит использовать : отличный инструмент для отработки навыков через решение реальных задач.
4. Методическое пособие: "Основы работы с SQL: лабораторный практикум" — Т.Н. Михеева
- Уровень : начальный
- Описание : Практическое руководство для преподавателей и студентов. Содержит лабораторные работы, задания, проверочные тесты и методические указания.
- Почему стоит использовать : удобно для организации занятий и контроля знаний.
5. Хрестоматия: "Базы данных: учебник и задачник" — под ред. П.П. Беленького
- Уровень : начальный
- Описание : Учебное издание, сочетающее теорию и практику. Включает краткий курс по SQL, упражнения, примеры моделей данных.
- Почему стоит использовать : универсальное пособие для обучения и самоконтроля.
- SQL с нуля до первых запросов
Курс для тех, кто начинает с самого начала. Вы научитесь работать с таблицами, выполнять выборку и фильтрацию данных, а также освоите базовые команды SQL.
- Мир данных: освой SQL за 8 недель
Интенсивный курс, охватывающий основы SQL и работу с реляционными базами данных. В программе — теория, практика и проектная работа.
- SQL для школьников и студентов
Практический курс, разработанный специально для обучающихся в образовательных учреждениях. Объяснение доступным языком с примерами из повседневной жизни.
- Знакомство с SQL: путь к данным
Ознакомьтесь с основами работы с базами данных. Научитесь выполнять простые запросы, анализировать данные и строить логические цепочки.
- Базы данных для начинающих программистов
Первый шаг в освоении профессии разработчика БД. Курс поможет понять, как устроены данные, и научит эффективно с ними работать при помощи SQL.
- SQL шаг за шагом
Обучение пошагово, от самых простых операций до составления сложных запросов. В завершение — мини-проект по созданию собственной базы данных.
- Первые шаги в мире SQL
Идеально подходит для новичков. Понятное изложение материала, реальные примеры и много практических заданий помогут уверенно начать работать с данными.
- SQL для любознательных школьников
Курс развивает логическое мышление и цифровую грамотность. Поможет научиться структурировать информацию и работать с данными на уровне базовых знаний.
- Как говорить с базой данных: курс SQL
Научитесь "общаться" с базой данных на языке SQL. Освоите основные конструкции, сможете находить нужную информацию и управлять данными.
- SQL — ключ к большим данным
Начните свой путь в сфере анализа данных. Этот курс даст вам необходимые знания для дальнейшего развития в направлении Data Science и аналитики.
- SQL в школе и вне её
Подходит как дополнительный модуль к предметам информатики и математики. Учит применять SQL в реальных задачах и проектной деятельности.
- SQL: математика + логика + практика
Курс сочетает развитие логического мышления с практическим применением. Идеален для школьников и студентов младших курсов.
- Будущее начинается с SQL
Получите навыки, которые востребованы в современных технологиях. Начните изучать SQL уже сегодня и откройте двери в мир IT.
- SQL: от идеи к результату
Узнайте, как превращать сырые данные в полезную информацию. Освоите создание таблиц, выполнение запросов и подготовку отчетов.
- Экспериментируем с данными
Курс построен на основе исследовательского подхода. Вы будете экспериментировать с данными, решать задачи и делать выводы через SQL.
- SQL в действии: практикум для новичков
Практико-ориентированный курс, где вы будете решать реальные задачи, работать с тестовыми наборами данных и создавать свои таблицы.
- Инструмент SQL: освой за месяц
Краткий, но содержательный курс. За 4 недели вы освоите основные команды SQL и сможете самостоятельно выполнять простые операции с данными.
- SQL для начинающих студентов
Курс подготовлен с учетом потребностей студентов, делающих первые шаги в IT. Даёт прочный фундамент знаний по работе с базами данных.
- Структура данных: начало пути
Освойте принципы организации информации. Научитесь создавать таблицы, устанавливать связи и выполнять элементарные запросы.
- SQL — карта к знаниям о данных
Курс проведет вас от первого запроса до самостоятельного проекта. Включает теорию, практику и обратную связь от преподавателей.
- SQL Quest: игра в данные
Обучение в игровой форме. Решайте задачи, выполняйте задания и достигайте новых уровней в освоении SQL.
- От таблицы к запросу
Курс рассказывает о том, как устроены таблицы и связи между ними. Вы научитесь извлекать нужные данные и работать с несколькими таблицами одновременно.
- Чистый SQL: аккуратные запросы
Научитесь писать читаемые и эффективные SQL-запросы. Уделено внимание стилю написания кода, использованию JOIN'ов и группировке данных.
- SQL — багаж будущего программиста
Курс даёт комплексное представление о работе с данными. Полезен для всех, кто планирует развиваться в направлении разработки, аналитики или управления БД.
- SQL: мышление данными
Курс формирует способность видеть закономерности в информации, принимать решения и строить выводы на основе данных.
Нет элементов для просмотра