Билет 1
Теория
- Структурированные данные — таблицы, столбцы, связи
- Целостность данных —
PRIMARY KEY, NOT NULL
Практика
CREATE TABLE books (
book_id INT PRIMARY KEY,
title VARCHAR(100) NOT NULL
);
Билет 2
Теория
- Реляционная модель — связи между таблицами
- Внешние ключи —
FOREIGN KEY
Практика
CREATE TABLE authors (
author_id INT PRIMARY KEY,
name VARCHAR(50)
);
ALTER TABLE books ADD author_id INT REFERENCES authors(author_id);
Билет 3
Теория
- Нормализация — устранение дублирования
- Первая нормальная форма (1NF)
Практика
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
group_id INT
);
Билет 4
Теория
- Вторая нормальная форма (2NF)
- Частичные зависимости
Практика
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE
);
Билет 5
Теория
- Третья нормальная форма (3NF)
- Транзитивные зависимости
Практика
CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(50),
category_id INT
);
Билет 6
Теория
- Индексы — ускорение поиска
- Типы индексов —
PRIMARY, UNIQUE, INDEX
Практика
CREATE INDEX idx_product_name ON products(name);
Билет 7
Теория
- Транзакции — ACID-свойства
COMMIT и ROLLBACK
Практика
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
COMMIT;
Билет 8
Теория
- JOIN — объединение таблиц
- Типы JOIN —
INNER, LEFT, RIGHT
Практика
SELECT b.title, a.name
FROM books b
JOIN authors a ON b.author_id = a.author_id;
Билет 9
Теория
- Агрегатные функции —
COUNT, SUM, AVG GROUP BY — группировка данных
Практика
SELECT category_id, COUNT(*)
FROM products
GROUP BY category_id;
Билет 10
Теория
- Подзапросы — вложенные запросы
EXISTS, NOT EXISTS
Практика
SELECT name FROM products
WHERE category_id IN (SELECT category_id FROM categories WHERE active = 1);
Билет 11
Теория
- Представления (
VIEW) - Преимущества представлений
Практика
CREATE VIEW active_products AS
SELECT * FROM products WHERE is_active = 1;
Билет 12
Теория
- Хранимые процедуры
- Параметры процедур
Практика
CREATE PROCEDURE get_products(IN cat_id INT)
BEGIN
SELECT * FROM products WHERE category_id = cat_id;
END;
Билет 13
Теория
- Триггеры — автоматические операции
BEFORE/AFTER триггеры
Практика
CREATE TRIGGER update_timestamp
BEFORE UPDATE ON products
FOR EACH ROW SET NEW.updated_at = NOW();
Билет 14
Теория
- Оконные функции
PARTITION BY, ORDER BY
Практика
SELECT product_id, name,
RANK() OVER (PARTITION BY category_id ORDER BY price)
FROM products;
Билет 15
Теория
- Оптимизация запросов
EXPLAIN ANALYZE
Практика
EXPLAIN SELECT * FROM products WHERE price > 100;
Билет 16
Теория
- Репликация данных
- Master-Slave репликация
Практика
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl_user',
MASTER_PASSWORD='password';
Билет 17
Теория
- Резервное копирование
- Утилита
mysqldump
Практика
mysqldump -u root -p database_name > backup.sql
Билет 18
Теория
- Нормальная форма Бойса-Кодда
- Многозначные зависимости
Практика
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id)
);
Билет 19
Теория
- Денормализация
- Когда применять денормализацию
Практика
ALTER TABLE orders ADD customer_name VARCHAR(100);
Билет 20
Теория
- Полнотекстовый поиск
FULLTEXT индекс
Практика
CREATE FULLTEXT INDEX ft_index ON products(description);
Билет 21
Теория
- Геопространственные данные
- Тип данных
GEOMETRY
Практика
CREATE TABLE locations (
id INT PRIMARY KEY,
name VARCHAR(100),
position GEOMETRY
);
Билет 22
Теория
- JSON в SQL
- Функции для работы с JSON
Практика
SELECT JSON_EXTRACT(data, '$.price') FROM products;
Билет 23
Теория
- Регулярные выражения
- Оператор
REGEXP
Практика
SELECT * FROM users WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';
Билет 24
Теория
- Временные таблицы
- Преимущества временных таблиц
Практика
CREATE TEMPORARY TABLE temp_products AS
SELECT * FROM products WHERE price > 100;
Билет 25
Теория
- Оптимизация индексов
- Покрывающий индекс (Covering index)
Практика
CREATE INDEX idx_covering ON orders (customer_id, order_date) INCLUDE (amount);