OXBOX Help

MySQL / MariaDB

Общие понятия:

  • СУБД (Система управления базами данных): Программное обеспечение для создания, хранения, управления и доступа к данным.

  • MySQL: Популярная реляционная СУБД с открытым исходным кодом.

  • MariaDB: Форк MySQL, созданный после приобретения MySQL компанией Oracle. Предоставляет аналогичную функциональность и часто используется в качестве замены.

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

  • SQL (Structured Query Language): Язык запросов для работы с реляционными базами данных.

Основные компоненты:

  • База данных (Database): Контейнер для хранения таблиц, представлений, процедур и других объектов.

  • Таблица (Table): Структурированный набор данных, состоящий из строк и столбцов.

  • Строка (Row): Запись данных (также называют записью или кортежем).

  • Столбец (Column): Атрибут данных, представляющий собой определенный тип данных.

  • Схема (Schema): Описание структуры базы данных (таблицы, столбцы, типы данных, связи).

  • Индекс (Index): Структура данных, которая ускоряет поиск данных в таблице.

Типы данных:

  • Целочисленные (Integer): INT, BIGINT, SMALLINT, TINYINT (разные диапазоны).

  • Вещественные (Floating-point): FLOAT, DOUBLE, DECIMAL (для точных денежных вычислений).

  • Строковые (String): VARCHAR (переменная длина), CHAR (фиксированная длина), TEXT, LONGTEXT (для больших объемов текста).

  • Дата и время (Date/Time): DATE, TIME, DATETIME, TIMESTAMP.

  • Boolean: BOOLEAN (хранит TRUE или FALSE, внутренне представляется как TINYINT(1)).

  • ENUM: Тип данных, который позволяет выбрать значение из предопределенного списка.

  • BLOB (Binary Large Object): Для хранения больших двоичных данных (изображения, файлы).

Операторы SQL (CRUD - Create, Read, Update, Delete):

CREATE (Создание): CREATE DATABASE имя_базы; - создание базы данных. CREATE TABLE имя_таблицы (столбец1 тип_данных, столбец2 тип_данных, ...); - создание таблицы. READ (Чтение): SELECT столбцы FROM имя_таблицы WHERE условие; - выборка данных.

  • выбрать все столбцы.

    • WHERE - фильтрация данных (условие может включать операторы сравнения, логические операторы, LIKE, IN, BETWEEN).

    • ORDER BY столбец [ASC | DESC]; - сортировка результатов.

    • LIMIT количество [OFFSET смещение]; - ограничение количества возвращаемых строк.

    • JOIN (INNER, LEFT, RIGHT, FULL OUTER) - объединение данных из нескольких таблиц на основе связей.

    • GROUP BY столбец; - группировка строк.

    • HAVING условие; - фильтрация групп после GROUP BY.

    • DISTINCT - убирает дубликаты.

    • UPDATE (Обновление):

    • UPDATE имя_таблицы SET столбец1 = значение1, столбец2 = значение2 WHERE условие; - обновление данных.

    • DELETE (Удаление):

    • DELETE FROM имя_таблицы WHERE условие; - удаление данных.

    • INSERT (Вставка):

    • INSERT INTO имя_таблицы (столбец1, столбец2, ...) VALUES (значение1, значение2, ...); - вставка данных.

Отношения между таблицами (Связи):

  • Один-к-одному (One-to-One): Одна запись в одной таблице связана с одной записью в другой таблице.

  • Один-ко-многим (One-to-Many): Одна запись в одной таблице может быть связана с несколькими записями в другой таблице.

  • Многие-ко-многим (Many-to-Many): Несколько записей в одной таблице могут быть связаны с несколькими записями в другой таблице (реализуется через промежуточную таблицу).

Ключи (Keys):

  • Первичный ключ (Primary Key): Уникальный идентификатор каждой строки в таблице. Не может содержать NULL.

  • Внешний ключ (Foreign Key): Столбец в одной таблице, который ссылается на первичный ключ в другой таблице. Обеспечивает целостность данных.

  • Уникальный ключ (Unique Key): Гарантирует уникальность значений в столбце, но может содержать NULL.

Транзакции:

  • Транзакция: Последовательность операций с базой данных, которая либо выполняется полностью (commit), либо откатывается (rollback) в случае ошибки. Обеспечивает ACID-свойства (Atomicity, Consistency, Isolation, Durability).

  • START TRANSACTION; / BEGIN;: Начало транзакции.

  • COMMIT;: Фиксация изменений (сохранение транзакции).

  • ROLLBACK;: Откат изменений (отмена транзакции).

Индексы (Ускорение поиска):

Индекс: Структура данных, которая ускоряет поиск данных в таблице. Создается на основе одного или нескольких столбцов. Типы индексов:

  • PRIMARY KEY: Автоматически создает уникальный индекс.

  • UNIQUE: Уникальный индекс.

  • INDEX / INDEX: Обычный индекс (B-tree).

  • FULLTEXT: Для полнотекстового поиска.

  • CREATE INDEX имя_индекса ON имя_таблицы (столбец1, столбец2, ...); - создание индекса. Важно: Индексы увеличивают скорость чтения, но замедляют операции записи (вставка, обновление, удаление).

Нормализация баз данных:

Оптимизация запросов:

Использование индексов: Для ускорения поиска.

  • Правильное использование WHERE: Для фильтрации данных.

  • Избегайте SELECT *: Выбирайте только необходимые столбцы.

  • Оптимизация JOIN: Используйте индексы на столбцах, используемых в JOIN.

  • Анализ запросов (EXPLAIN): Используйте EXPLAIN для анализа плана выполнения запроса и выявления узких мест.

  • Кеширование запросов: Используйте кеширование (например, Redis) для результатов часто выполняемых запросов.

Пользователи и привилегии:

  • Создание пользователей: CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'пароль';

  • Предоставление привилегий: GRANT привилегии ON база_данных.таблица TO 'имя_пользователя'@'хост';

  • ALL PRIVILEGES - все привилегии.

  • SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, …

  • Отзыв привилегий: REVOKE привилегии ON база_данных.таблица FROM 'имя_пользователя'@'хост';

Хранение данных и движки таблиц (Storage Engines):

  • InnoDB: Движок по умолчанию, поддерживает транзакции, внешние ключи, ACID-свойства.

  • MyISAM: Более старый движок, не поддерживает транзакции, не рекомендуется для новых проектов (но может быть в legacy).

  • MEMORY: Хранит данные в памяти (для временных таблиц).

  • ENGINE=имя_движка; - указание движка при создании таблицы.

Резервное копирование и восстановление (Backups and Recovery):

Важно: Регулярно создавайте резервные копии базы данных.

  • mysqldump: Утилита для создания логических резервных копий (SQL-скриптов).

  • Физическое копирование файлов данных: Быстрый способ резервного копирования (но требует остановки/заморозки базы данных).

25 июня 2025