Skip to main content
Glama

mcp-dbutils

MIT License
81
  • Linux
  • Apple
mysql-examples.md17 kB
# Примеры MySQL *[English](../../en/examples/mysql-examples.md) | [中文](../../zh/examples/mysql-examples.md) | [Français](../../fr/examples/mysql-examples.md) | [Español](../../es/examples/mysql-examples.md) | [العربية](../../ar/examples/mysql-examples.md) | Русский* Этот документ содержит примеры использования MCP Database Utilities с базами данных MySQL. ## Настройка соединения с MySQL Для подключения к базе данных MySQL вам необходимо добавить соответствующую конфигурацию в ваш файл конфигурации: ```yaml connections: my-mysql: type: mysql host: localhost port: 3306 database: mydatabase user: myuser password: mypassword ssl: enabled: true verify_cert: true ca_cert: /path/to/ca.pem # опционально pool: max_size: 5 timeout: 30 ``` ### Параметры соединения | Параметр | Обязательный | Описание | |----------|--------------|----------| | `type` | Да | Тип базы данных, должен быть `mysql` | | `host` | Да | Хост сервера MySQL | | `port` | Нет | Порт сервера MySQL (по умолчанию: 3306) | | `database` | Да | Имя базы данных для подключения | | `user` | Да | Имя пользователя для аутентификации | | `password` | Да | Пароль для аутентификации | | `ssl.enabled` | Нет | Включить SSL/TLS для соединения (по умолчанию: false) | | `ssl.verify_cert` | Нет | Проверять сертификат сервера (по умолчанию: true) | | `ssl.ca_cert` | Нет | Путь к CA-сертификату для проверки сертификата сервера | | `pool.max_size` | Нет | Максимальный размер пула соединений (по умолчанию: 5) | | `pool.timeout` | Нет | Таймаут соединения в секундах (по умолчанию: 30) | ## Примеры взаимодействия ### Просмотр доступных таблиц **Вы**: "Можете ли вы показать мне все таблицы в базе данных my-mysql?" **ИИ**: "Я проверю таблицы в базе данных my-mysql для вас. Вот список таблиц: ``` +------------------+ | Tables | +------------------+ | customers | | orders | | products | | inventory | | suppliers | | order_items | | product_category | | employees | +------------------+ ``` ### Изучение структуры таблицы **Вы**: "Какова структура таблицы customers?" **ИИ**: "Вот структура таблицы customers в базе данных my-mysql: ``` +---------------------+--------------+------+-----+-------------------+----------------+ | Column | Type | Null | Key | Default | Extra | +---------------------+--------------+------+-----+-------------------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | first_name | varchar(50) | NO | | NULL | | | last_name | varchar(50) | NO | | NULL | | | email | varchar(100) | NO | UNI | NULL | | | phone | varchar(20) | YES | | NULL | | | address | varchar(255) | YES | | NULL | | | city | varchar(50) | YES | | NULL | | | state | varchar(50) | YES | | NULL | | | postal_code | varchar(20) | YES | | NULL | | | country | varchar(50) | YES | | NULL | | | registration_date | datetime | NO | | CURRENT_TIMESTAMP | | | last_purchase_date | datetime | YES | | NULL | | | total_purchases | decimal(10,2)| YES | | 0.00 | | +---------------------+--------------+------+-----+-------------------+----------------+ ``` Таблица customers содержит информацию о клиентах, включая их контактные данные, адрес и историю покупок." ### Выполнение запросов **Вы**: "Сколько клиентов у нас из каждой страны?" **ИИ**: "Я выполню запрос для подсчета клиентов по странам. Вот результаты: ```sql SELECT country, COUNT(*) as customer_count FROM customers GROUP BY country ORDER BY customer_count DESC; ``` ``` +---------------+----------------+ | country | customer_count | +---------------+----------------+ | United States | 342 | | Canada | 125 | | United Kingdom| 98 | | Germany | 87 | | France | 76 | | Australia | 65 | | Japan | 54 | | China | 43 | | Brazil | 38 | | Mexico | 32 | | Other | 156 | +---------------+----------------+ ``` Большинство ваших клиентов находятся в Соединенных Штатах (342), за ними следуют Канада (125) и Великобритания (98)." ### Анализ данных **Вы**: "Можете ли вы проанализировать наши 10 лучших продуктов по выручке?" **ИИ**: "Я проанализирую 10 лучших продуктов по выручке. Вот результаты: ```sql SELECT p.id, p.name, p.category, SUM(oi.quantity) as total_units_sold, SUM(oi.quantity * oi.unit_price) as total_revenue FROM products p JOIN order_items oi ON p.id = oi.product_id JOIN orders o ON oi.order_id = o.id WHERE o.order_date >= DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR) GROUP BY p.id, p.name, p.category ORDER BY total_revenue DESC LIMIT 10; ``` ``` +----+-------------------------+-------------+-----------------+---------------+ | id | name | category | total_units_sold| total_revenue | +----+-------------------------+-------------+-----------------+---------------+ | 12 | Premium Laptop Pro | Electronics | 1,245 | 1,494,000.00 | | 8 | Smartphone X | Electronics | 2,876 | 1,438,000.00 | | 45 | Wireless Headphones | Electronics | 4,532 | 679,800.00 | | 23 | Ultra HD Smart TV | Electronics | 987 | 592,200.00 | | 67 | Designer Watch | Accessories | 1,432 | 429,600.00 | | 34 | Premium Coffee Maker | Home | 2,154 | 387,720.00 | | 56 | Fitness Tracker | Electronics | 3,210 | 321,000.00 | | 78 | Leather Handbag | Accessories | 876 | 306,600.00 | | 91 | Wireless Speaker System | Electronics | 1,543 | 277,740.00 | | 42 | Professional Blender | Home | 1,876 | 262,640.00 | +----+-------------------------+-------------+-----------------+---------------+ ``` **Анализ:** 1. **Доминирование электроники**: 6 из 10 лучших продуктов относятся к категории электроники, что составляет около 70% от общей выручки в этом списке. 2. **Высокая стоимость vs. объем**: Premium Laptop Pro генерирует наибольшую выручку, несмотря на то, что продается в меньшем количестве, чем Smartphone X или Wireless Headphones, что указывает на его высокую маржу. 3. **Разнообразие категорий**: Хотя электроника доминирует, аксессуары и товары для дома также представлены в топ-10, что показывает разнообразие вашего ассортимента. 4. **Средняя цена продажи**: - Premium Laptop Pro: ~$1,200 - Smartphone X: ~$500 - Wireless Headphones: ~$150 - Designer Watch: ~$300 5. **Рекомендации**: - Увеличьте маркетинговые усилия для категории электроники - Рассмотрите возможность расширения линейки Premium Laptop из-за высокой маржи - Исследуйте возможности кросс-продаж между Smartphone X и Wireless Headphones" ### Сложные запросы **Вы**: "Можете ли вы показать мне тенденцию ежемесячных продаж за последний год с разбивкой по категориям продуктов?" **ИИ**: "Я проанализирую ежемесячные продажи за последний год с разбивкой по категориям продуктов: ```sql SELECT DATE_FORMAT(o.order_date, '%Y-%m') as month, p.category, SUM(oi.quantity * oi.unit_price) as monthly_revenue FROM orders o JOIN order_items oi ON o.id = oi.order_id JOIN products p ON oi.product_id = p.id WHERE o.order_date >= DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR) GROUP BY DATE_FORMAT(o.order_date, '%Y-%m'), p.category ORDER BY month, p.category; ``` Вот результаты анализа ежемесячных продаж за последний год с разбивкой по категориям: | Месяц | Электроника | Аксессуары | Дом | Одежда | Спорт | Другое | |----------|-------------|------------|----------|----------|----------|----------| | 2022-11 | 245,678.00 | 98,432.00 | 76,543.00| 65,432.00| 43,210.00| 32,456.00| | 2022-12 | 387,654.00 | 156,789.00 | 98,765.00| 87,654.00| 65,432.00| 45,678.00| | 2023-01 | 198,765.00 | 87,654.00 | 65,432.00| 54,321.00| 32,109.00| 21,098.00| | 2023-02 | 187,654.00 | 76,543.00 | 54,321.00| 43,210.00| 32,109.00| 21,098.00| | 2023-03 | 210,987.00 | 87,654.00 | 65,432.00| 54,321.00| 43,210.00| 32,109.00| | 2023-04 | 232,109.00 | 98,765.00 | 76,543.00| 65,432.00| 43,210.00| 32,109.00| | 2023-05 | 254,321.00 | 109,876.00 | 87,654.00| 76,543.00| 54,321.00| 43,210.00| | 2023-06 | 265,432.00 | 121,098.00 | 98,765.00| 87,654.00| 65,432.00| 43,210.00| | 2023-07 | 276,543.00 | 132,109.00 | 109,876.00| 98,765.00| 76,543.00| 54,321.00| | 2023-08 | 287,654.00 | 143,210.00 | 121,098.00| 109,876.00| 87,654.00| 65,432.00| | 2023-09 | 298,765.00 | 154,321.00 | 132,109.00| 121,098.00| 98,765.00| 76,543.00| | 2023-10 | 321,098.00 | 165,432.00 | 143,210.00| 132,109.00| 109,876.00| 87,654.00| **Ключевые наблюдения:** 1. **Сезонные тенденции**: - Пик продаж в декабре (праздничный сезон) во всех категориях - Снижение в январе-феврале (постпраздничный спад) - Постепенный рост с марта по октябрь 2. **Доминирование категорий**: - Электроника стабильно является лидером по выручке - Аксессуары занимают второе место - Категория "Дом" показывает наибольший рост в процентном отношении (+87% с ноября по октябрь) 3. **Темпы роста**: - Общий рост выручки: +31% (с ноября по октябрь) - Самый быстрорастущий месяц: июль-август (+4.5% в среднем по всем категориям) - Самая быстрорастущая категория: Спорт (+154% с ноября по октябрь) 4. **Рекомендации**: - Подготовьтесь к праздничному сезону с увеличенными запасами электроники - Рассмотрите возможность специальных промоакций в феврале для борьбы с постпраздничным спадом - Инвестируйте в категорию "Спорт", учитывая ее высокие темпы роста - Разработайте стратегии кросс-продаж между электроникой и аксессуарами" ## Советы по оптимизации ### Индексы MySQL использует индексы для быстрого поиска строк. Вот некоторые советы по индексам: 1. **Проверка существующих индексов**: ```sql SHOW INDEX FROM table_name; ``` 2. **Анализ выполнения запроса**: ```sql EXPLAIN SELECT * FROM customers WHERE email = 'example@email.com'; ``` 3. **Рекомендации по индексам**: - Создавайте индексы для столбцов, часто используемых в условиях WHERE - Создавайте индексы для столбцов, используемых в JOIN - Создавайте индексы для столбцов, используемых в ORDER BY и GROUP BY - Избегайте избыточных индексов, так как они замедляют операции INSERT, UPDATE и DELETE ### Оптимизация запросов 1. **Выбирайте только необходимые столбцы**: ```sql -- Хорошо SELECT id, name, email FROM customers WHERE city = 'New York'; -- Не оптимально SELECT * FROM customers WHERE city = 'New York'; ``` 2. **Используйте LIMIT для ограничения результатов**: ```sql SELECT * FROM orders ORDER BY order_date DESC LIMIT 100; ``` 3. **Избегайте использования функций в условиях WHERE**: ```sql -- Не оптимально (не может использовать индекс) SELECT * FROM customers WHERE YEAR(registration_date) = 2023; -- Лучше (может использовать индекс) SELECT * FROM customers WHERE registration_date >= '2023-01-01' AND registration_date < '2024-01-01'; ``` 4. **Используйте JOIN вместо подзапросов, где это возможно**: ```sql -- Не оптимально SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA'); -- Лучше SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.country = 'USA'; ``` ## Ограничения и особенности MySQL 1. **Чувствительность к регистру имен таблиц**: - В Windows имена таблиц не чувствительны к регистру - В Linux/Unix имена таблиц чувствительны к регистру по умолчанию 2. **Типы хранилищ**: - InnoDB: поддерживает транзакции, внешние ключи, блокировку на уровне строк - MyISAM: быстрее для операций только для чтения, не поддерживает транзакции 3. **Ограничения**: - Максимальный размер таблицы: зависит от файловой системы - Максимальное количество столбцов в таблице: 4096 - Максимальный размер строки: 65,535 байт ## Заключение MySQL — это мощная и гибкая система управления базами данных, которая хорошо работает с MCP Database Utilities. Следуя приведенным выше советам и примерам, вы можете эффективно использовать MySQL для хранения и анализа ваших данных через интерфейс ИИ.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/donghao1393/mcp-dbutils'

If you have feedback or need assistance with the MCP directory API, please join our Discord server