Skip to main content

🗃️ Системы управления базами данных

Это раздел про базы данных на нашем сервере. Здесь ты найдешь все инструкции по работе с MySQL, PostgreSQL и MS SQL Server.

Что такое SQL и зачем это нужно?

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

📊 Что такое база данных?

Это структурированное хранилище информации, где данные организованы в таблицы. Представь себе Excel, но:

  • Данные хранятся на сервере и доступны из разных мест
  • Можно работать одновременно многим пользователям
  • Есть строгие правила целостности данных
  • Автоматическое резервное копирование

🎯 Зачем нужны базы данных?

ЗадачаБез БДС БД
Хранение пользователейФайл users.txtТаблица users с индексами
Поиск данныхЧтение всего файлаМгновенный поиск по индексам
Одновременный доступКонфликты, потеря данныхТранзакции, блокировки
Резервное копированиеКопируем файлы вручнуюАвтоматические бэкапы
МасштабированиеНе масштабируетсяРепликация, шардиннг

🔧 Основные концепции SQL

-- 1. Таблицы (основа всего)
CREATE TABLE users (
id INT PRIMARY KEY, -- Уникальный идентификатор
name VARCHAR(100) NOT NULL, -- Обязательное поле
email VARCHAR(255) UNIQUE, -- Уникальное значение
created_at TIMESTAMP DEFAULT NOW()
);

-- 2. CRUD операции (основа работы)
-- Create (Создание)
INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');

-- Read (Чтение)
SELECT * FROM users WHERE name = 'Иван';

-- Update (Обновление)
UPDATE users SET email = 'new@email.com' WHERE id = 1;

-- Delete (Удаление)
DELETE FROM users WHERE id = 1;

📈 Какие БД у нас на сервере?

На сервере 192.168.0.103 установлены три основные СУБД:

СУБДПортДля чего используетсяОсобенности
MySQL3306Веб-приложения, CMSПопулярная, простая, много документации
PostgreSQL5432Сложные данные, геоданныеРасширяемая, строгая типизация, JSONB
MS SQL Server1433Корпоративные системыИнтеграция с Microsoft, мощная аналитика

Когда что использовать?

  • MySQL — если делаешь сайт на WordPress, Laravel, или простой веб-сервис
  • PostgreSQL — если нужны сложные запросы, геоданные, или работа с JSON
  • MS SQL Server — если пишешь под .NET или нужна интеграция с другими продуктами Microsoft

🚀 Быстрый старт

1. Подключись к любой БД

# MySQL
mysql -u username -p -h 192.168.0.103

# PostgreSQL
psql -U username -h 192.168.0.103 -d postgres

# MS SQL Server
sqlcmd -S 192.168.0.103 -U SA -P 'пароль'

2. Создай первую базу

-- В любой СУБД концепция похожа:
CREATE DATABASE my_first_db;
USE my_first_db; -- В MySQL
-- или
\c my_first_db -- В PostgreSQL

3. Начни с этих гайдов

  1. MySQL: основы работы — самый простой старт
  2. PostgreSQL: расширенные возможности
  3. MS SQL Server: для корпоративных задач

📚 Основы SQL (одинаковые для всех БД)

Таблицы и связи

-- Основные типы данных
-- INT, VARCHAR(n), TEXT, DATE, TIMESTAMP, BOOLEAN, DECIMAL

-- Связь один-ко-многим
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Индексы для ускорения поиска
CREATE INDEX idx_users_email ON users(email);

Запросы с JOIN

-- Объединение таблиц
SELECT users.name, orders.amount, orders.created_at
FROM users
JOIN orders ON users.id = orders.user_id
WHERE users.city = 'Москва'
ORDER BY orders.created_at DESC;

Агрегация данных

-- Группировка и статистика
SELECT
city,
COUNT(*) as total_users,
AVG(age) as average_age,
SUM(balance) as total_balance
FROM users
GROUP BY city
HAVING COUNT(*) > 10; -- Только города с >10 пользователями

🔧 Инструменты для работы

Веб-интерфейсы

  1. phpMyAdmin для MySQL — http://192.168.0.103/phpmyadmin
  2. pgAdmin для PostgreSQL — http://192.168.0.103:5050
  3. DBeaver — универсальный клиент для всех БД

Работа из кода

# Python пример
import mysql.connector

db = mysql.connector.connect(
host="192.168.0.103",
user="username",
password="password",
database="mydb"
)

cursor = db.cursor()
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()

⚠️ Важные правила работы с БД

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

-- НИКОГДА не делай так (SQL-инъекция)
-- "SELECT * FROM users WHERE name = '" + user_input + "'"

-- Всегда используй параметризованные запросы
-- "SELECT * FROM users WHERE name = %s", (user_input,)

2. Резервное копирование

# Регулярно делай бэкапы
# MySQL
mysqldump -u root -p mydb > backup_$(date +%Y%m%d).sql

# PostgreSQL
pg_dump mydb > backup_$(date +%Y%m%d).sql

3. Мониторинг

  • Следи за размером БД
  • Мониторь медленные запросы
  • Настрой алерты при проблемах

🧠 Когда что изучать?

Уровень 1: Начинающий

  1. Основы SQL (SELECT, INSERT, UPDATE, DELETE)
  2. Простые JOIN'ы
  3. Работа через phpMyAdmin/DBeaver

Уровень 2: Продвинутый

  1. Транзакции и ACID
  2. Индексы и оптимизация
  3. Репликация

Уровень 3: Эксперт

  1. Партиционирование
  2. Кластеризация
  3. HA (High Availability) настройки

📖 Полезные ресурсы

🆘 Если что-то не работает

  1. Не могу подключиться — проверь порт и права пользователя
  2. Запрос медленный — используй EXPLAIN для анализа
  3. Кончилось место — очисти логи, архивируй старые данные
  4. Забыл пароль — обратись к администратору сервера

📂 Все доступные руководства