🗃️ Системы управления базами данных
Это раздел про базы данных на нашем сервере. Здесь ты найдешь все инструкции по работе с 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 установлены три основные СУБД:
| СУБД | Порт | Для чего используется | Особенности |
|---|---|---|---|
| MySQL | 3306 | Веб-приложения, CMS | Популярная, простая, много документации |
| PostgreSQL | 5432 | Сложные данные, геоданные | Расширяемая, строгая типизация, JSONB |
| MS SQL Server | 1433 | Корпоративные системы | Интеграция с 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. Начни с этих гайдов
- MySQL: основы работы — самый простой старт
- PostgreSQL: расширенные возможности
- 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 пользователями
🔧 Инструменты для работы
Веб-интерфейсы
- phpMyAdmin для MySQL —
http://192.168.0.103/phpmyadmin - pgAdmin для PostgreSQL —
http://192.168.0.103:5050 - 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: Начинающий
- Основы SQL (SELECT, INSERT, UPDATE, DELETE)
- Простые JOIN'ы
- Работа через phpMyAdmin/DBeaver
Уровень 2: Продвинутый
- Транзакции и ACID
- Индексы и оптимизация
- Репликация
Уровень 3: Эксперт
- Партиционирование
- Кластеризация
- HA (High Availability) настройки
📖 Полезные ресурсы
- SQLZoo — интерактивные упражнения
- PostgreSQL Exercises — задачи по PostgreSQL
- Use The Index, Luke! — про индексы и оптимизацию
🆘 Если что-то не работает
- Не могу подключиться — проверь порт и права пользователя
- Запрос медленный — используй EXPLAIN для анализа
- Кончилось место — очисти логи, архивируй старые данные
- Забыл пароль — обратись к администратору сервера
📂 Все доступные руководства
📄️ Работа с MySQL
Установка, подключение и основы работы с MySQL на сервере 192.168.0.103
📄️ Работа с Microsoft SQL Server
Установка, подключение и основы работы с MS SQL Server на сервере 192.168.0.103
📄️ Работа с PostgreSQL
Установка, подключение и основы работы с PostgreSQL на сервере 192.168.0.103