MySQL — одна из самых популярных СУБД с открытым исходным кодом

Введение

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

История

Первая версия MySQL появилась в 1995 году. Создатели — Микаэль Видениус и Дэвид Аксмарк из компании MySQL AB. В 2008 году MySQL AB была куплена Sun Microsystems, а в 2010 году — Oracle Corporation. Сегодня MySQL продолжает развиваться, предлагая бесплатную Community Edition и коммерческую Enterprise Edition.

Архитектура

  • Клиент-серверная модель — клиенты посылают SQL-запросы, сервер их обрабатывает.
  • Движки хранения — плагины для таблиц: InnoDB, MyISAM, Memory, CSV и др.
  • Кэш запросов — ускоряет повторные выборки.
  • Репликация — позволяет масштабировать и повышать отказоустойчивость.

Установка

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install mysql-server
sudo systemctl enable --now mysql

macOS

brew install mysql
brew services start mysql

Подключение

mysql -u root -p

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

CREATE DATABASE company;
USE company;

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(100),
    salary DECIMAL(10,2),
    hire_date DATE,
    email VARCHAR(255) UNIQUE,
    INDEX idx_position (position),
    INDEX idx_salary (salary)
) ENGINE=InnoDB;

CRUD операции

INSERT INTO employees (name, position, salary, hire_date, email)
VALUES ('Иван Иванов', 'Менеджер', 60000.00, '2022-05-01', 'ivan@example.com');
SELECT id, name, position, salary
FROM employees
WHERE salary >= 50000
ORDER BY salary DESC;
UPDATE employees
SET salary = salary * 1.1
WHERE position = 'Менеджер';
DELETE FROM employees WHERE id = 3;

Транзакции

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

Индексы

CREATE INDEX idx_salary ON employees(salary);
CREATE UNIQUE INDEX idx_email ON employees(email);

Хранимые процедуры и функции

DELIMITER //
CREATE PROCEDURE GetEmployees()
BEGIN
    SELECT * FROM employees;
END //
DELIMITER ;

DELIMITER //
CREATE FUNCTION Bonus(salary DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
    RETURN salary * 0.1;
END //
DELIMITER ;

Триггеры

CREATE TRIGGER before_insert_employee
BEFORE INSERT ON employees
FOR EACH ROW
SET NEW.hire_date = CURDATE();

Работа с JSON

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data JSON
);

INSERT INTO products (data)
VALUES ('{"name": "Ноутбук", "price": 75000, "features": {"ram": "16GB", "ssd": "512GB"}}');

SELECT data->'$.name' AS product_name,
       data->'$.features.ram' AS ram
FROM products;

Полнотекстовый поиск

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT(title, body)
);

SELECT * FROM articles
WHERE MATCH(title, body)
AGAINST ('базы данных' IN NATURAL LANGUAGE MODE);

Репликация

SHOW MASTER STATUS;

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='master.host',
  SOURCE_USER='repl_user',
  SOURCE_PASSWORD='repl_pass',
  SOURCE_LOG_FILE='mysql-bin.000123',
  SOURCE_LOG_POS=456789;

START REPLICA;
SHOW REPLICA STATUS\G

Бэкапы

mysqldump -u root -p company > company_backup.sql
mysql -u root -p company < company_backup.sql

Безопасность

CREATE USER 'developer'@'localhost' IDENTIFIED BY 'StrongPassword!';
GRANT SELECT, INSERT, UPDATE, DELETE ON company.* TO 'developer'@'localhost';
FLUSH PRIVILEGES;

Заключение

MySQL — универсальная СУБД, которая подходит как для небольших сайтов, так и для масштабных систем. Используйте движок InnoDB для транзакций, настройте репликацию для отказоустойчивости, делайте регулярные бэкапы.

🔗 Официальная документация MySQL (Oracle)

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии