Skip to content

Основы MySQL

Что такое MySQL?

Скачать PDF

MySQL — это система управления реляционными базами данных (СУБД) с открытым исходным кодом. MySQL является одной из самых популярных СУБД в мире и широко используется в веб-приложениях.

Основные характеристики MySQL

  • Реляционная модель данных: данные хранятся в таблицах, которые могут быть связаны между собой.
  • Открытый исходный код: доступен для бесплатного использования и модификации.
  • Кроссплатформенность: работает на различных операционных системах.
  • Высокая производительность: оптимизирован для быстрого выполнения запросов.
  • Масштабируемость: может обрабатывать большие объемы данных.
  • Безопасность: включает механизмы для защиты данных.

Основные команды MySQL

Подключение к серверу MySQL

sql
mysql -u username -p

Создание базы данных

sql
CREATE DATABASE database_name;

Выбор базы данных

sql
USE database_name;

Создание таблицы

sql
CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
);

Пример:

sql
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Вставка данных

sql
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

Пример:

sql
INSERT INTO users (username, email, password) VALUES ('john_doe', 'john@example.com', 'hashed_password');

Выборка данных

sql
SELECT column1, column2, ... FROM table_name WHERE condition;

Пример:

sql
SELECT id, username, email FROM users WHERE id > 10;

Обновление данных

sql
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Пример:

sql
UPDATE users SET email = 'new_email@example.com' WHERE id = 5;

Удаление данных

sql
DELETE FROM table_name WHERE condition;

Пример:

sql
DELETE FROM users WHERE id = 3;

Удаление таблицы

sql
DROP TABLE table_name;

Удаление базы данных

sql
DROP DATABASE database_name;

Типы данных в MySQL

Числовые типы

  • INT: целое число от -2,147,483,648 до 2,147,483,647.
  • TINYINT: целое число от -128 до 127.
  • SMALLINT: целое число от -32,768 до 32,767.
  • MEDIUMINT: целое число от -8,388,608 до 8,388,607.
  • BIGINT: целое число от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
  • FLOAT: число с плавающей точкой одинарной точности.
  • DOUBLE: число с плавающей точкой двойной точности.
  • DECIMAL: число с фиксированной точностью.

Строковые типы

  • CHAR: строка фиксированной длины (от 0 до 255 символов).
  • VARCHAR: строка переменной длины (от 0 до 65,535 символов).
  • TEXT: строка переменной длины (до 65,535 символов).
  • MEDIUMTEXT: строка переменной длины (до 16,777,215 символов).
  • LONGTEXT: строка переменной длины (до 4,294,967,295 символов).

Типы даты и времени

  • DATE: дата в формате 'YYYY-MM-DD'.
  • TIME: время в формате 'HH:MM:SS'.
  • DATETIME: дата и время в формате 'YYYY-MM-DD HH:MM:SS'.
  • TIMESTAMP: временная метка, автоматически обновляется при изменении записи.
  • YEAR: год в формате YYYY.

Другие типы

  • ENUM: перечисление, может иметь одно из предопределенных значений.
  • SET: набор, может иметь ноль или более предопределенных значений.
  • BLOB: бинарные данные.
  • JSON: данные в формате JSON (доступно с MySQL 5.7.8).

Как понимать производительность запросов

EXPLAIN и EXPLAIN ANALYZE

Когда запрос “вроде правильный”, но работает медленно, первое действие — посмотреть план выполнения.

sql
EXPLAIN SELECT * FROM users WHERE email = 'a@b.com';

На что смотреть в EXPLAIN:

  • type: чем ближе к const / ref / range, тем лучше; ALL означает полный скан таблицы.
  • key: какой индекс реально выбран оптимизатором (может отличаться от ожидаемого).
  • rows: оценка количества строк, которые придется просмотреть.
  • Extra: подсказки вроде Using index, Using where, Using temporary, Using filesort.

В MySQL 8+ удобно использовать EXPLAIN ANALYZE, чтобы увидеть фактическое время и количество строк на шагах плана (а не только оценку).

Базовые правила индексов

Индекс ускоряет чтение, но замедляет запись и занимает место. Поэтому индексы добавляют под реальные запросы.

Практические правила:

  • индексируйте поля, которые часто участвуют в WHERE, JOIN, ORDER BY;
  • составной индекс обычно эффективнее “нескольких одиночных”, если запрос фильтрует по набору полей;
  • порядок полей в составном индексе важен: сначала более селективные условия и те, по которым фильтруете чаще;
  • не индексируйте “всё подряд”: лучше 2–5 нужных индексов, чем десятки бесполезных.

Транзакции и блокировки (очень кратко)

Если у вас конкурентные изменения данных, важно понимать:

  • транзакции (START TRANSACTION, COMMIT, ROLLBACK);
  • уровни изоляции;
  • блокировки строк и дедлоки.

Эти темы сильно влияют на корректность и производительность под нагрузкой.

Заключение

Это базовое введение в MySQL. Для более глубокого изучения рекомендуется обратиться к официальной документации MySQL и практиковаться в написании запросов и работе с базами данных.