Skip to main content
Glama

mcp-dbutils

MIT License
81
  • Linux
  • Apple
mysql-examples.md9.44 kB
# Ejemplos de MySQL *[English](../../en/examples/mysql-examples.md) | [中文](../../zh/examples/mysql-examples.md) | [Français](../../fr/examples/mysql-examples.md) | Español | [العربية](../../ar/examples/mysql-examples.md) | [Русский](../../ru/examples/mysql-examples.md)* Este documento proporciona ejemplos prácticos para trabajar con bases de datos MySQL usando MCP Database Utilities. ## Configuración Básica ```yaml connections: my-mysql: type: mysql host: localhost port: 3306 database: my_database user: mysql_user password: mysql_password charset: utf8mb4 # Recomendado para soporte completo de Unicode ``` ## Operaciones Comunes ### Listar Tablas **Usted**: "Lista todas las tablas en mi base de datos MySQL." **IA**: "Aquí están las tablas en su base de datos MySQL: - usuarios - productos - pedidos - categorias - proveedores - inventario" ### Ver Estructura de Tabla **Usted**: "Muéstrame la estructura de la tabla usuarios." **IA**: "La tabla usuarios tiene la siguiente estructura: - id (INT, PRIMARY KEY, AUTO_INCREMENT) - nombre (VARCHAR(100), NOT NULL) - email (VARCHAR(100), NOT NULL, UNIQUE) - fecha_creacion (DATETIME, NOT NULL, DEFAULT CURRENT_TIMESTAMP) - ultimo_login (DATETIME) - estado (ENUM('activo', 'inactivo', 'suspendido'), DEFAULT 'activo') - rol_id (INT, FOREIGN KEY references roles(id))" ### Consulta Básica **Usted**: "Muéstrame los 5 últimos usuarios registrados." **IA**: "Aquí están los 5 últimos usuarios registrados: | id | nombre | email | fecha_creacion | |----|--------|-------|----------------| | 42 | Juan Pérez | juan@ejemplo.com | 2023-11-25 14:32:15 | | 41 | María García | maria@ejemplo.com | 2023-11-24 09:45:22 | | 40 | Pedro Rodríguez | pedro@ejemplo.com | 2023-11-23 18:12:05 | | 39 | Sofía López | sofia@ejemplo.com | 2023-11-22 11:30:47 | | 38 | Tomás Martínez | tomas@ejemplo.com | 2023-11-21 16:08:33 |" ## Consultas Avanzadas ### Uniendo Tablas **Usted**: "Muéstrame los 3 últimos pedidos con información de cliente y producto." **IA**: "Aquí están los 3 últimos pedidos con información de cliente y producto: | pedido_id | fecha_pedido | nombre_cliente | email_cliente | nombre_producto | precio | cantidad | |-----------|--------------|----------------|---------------|-----------------|--------|----------| | 1042 | 2023-11-25 | Juan Pérez | juan@ejemplo.com | Smartphone Pro | $899.99 | 1 | | 1041 | 2023-11-24 | Sofía López | sofia@ejemplo.com | Auriculares Inalámbricos | $129.50 | 2 | | 1040 | 2023-11-23 | Pedro Rodríguez | pedro@ejemplo.com | Laptop | $1299.00 | 1 |" ### Funciones de Agregación **Usted**: "¿Cuál es el monto total de ventas por categoría de producto este mes?" **IA**: "Aquí está el monto total de ventas por categoría de producto para este mes: | categoría | total_ventas | |-----------|--------------| | Electrónica | $28,456.75 | | Ropa | $12,389.30 | | Hogar y Jardín | $9,876.50 | | Deportes y Aire Libre | $7,654.25 | | Libros y Medios | $3,210.80 |" ### Uso de Subconsultas **Usted**: "¿Qué clientes han gastado más que el promedio este mes?" **IA**: "Aquí están los clientes que han gastado más que el promedio este mes: | cliente_id | nombre | email | total_gastado | promedio_global | |------------|--------|-------|---------------|-----------------| | 23 | María García | maria@ejemplo.com | $1,456.78 | $345.67 | | 42 | Juan Pérez | juan@ejemplo.com | $1,245.50 | $345.67 | | 15 | Tomás Martínez | tomas@ejemplo.com | $987.25 | $345.67 | | 31 | Sofía López | sofia@ejemplo.com | $876.30 | $345.67 | | 8 | Pedro Rodríguez | pedro@ejemplo.com | $654.90 | $345.67 |" ## Análisis de Rendimiento ### Plan de Ejecución de Consulta **Usted**: "Explica el plan de ejecución para: SELECT * FROM pedidos JOIN clientes ON pedidos.cliente_id = clientes.id WHERE pedidos.fecha > '2023-01-01'" **IA**: "Plan de ejecución para la consulta: ``` +----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+ | 1 | SIMPLE | pedidos | NULL | range | idx_fecha | idx_fecha| 5 | NULL | 1250 | 100.00 | Using where | | 1 | SIMPLE | clientes | NULL | eq_ref | PRIMARY | PRIMARY | 4 | db.pedidos.cliente_id | 1 | 100.00 | NULL | +----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+ ``` Esta consulta utiliza: 1. Un escaneo de rango en la tabla 'pedidos' usando el índice 'idx_fecha' 2. Una búsqueda por clave primaria en la tabla 'clientes' para cada fila coincidente de 'pedidos' 3. Estimación: aproximadamente 1250 filas serán examinadas en la tabla 'pedidos'" ### Estadísticas de Tabla **Usted**: "Obtén estadísticas para la tabla pedidos." **IA**: "Estadísticas para la tabla pedidos: - Recuento de filas: 15,423 - Tamaño de tabla: 4.2 MB - Tamaño promedio de fila: 285 bytes - Índices: * PRIMARY (id): 1.1 MB * idx_cliente_id (cliente_id): 0.8 MB * idx_fecha (fecha): 0.7 MB * idx_estado (estado): 0.4 MB - Fragmentación: 2.3% - Último ANALYZE TABLE: 2023-11-20 08:15:32" ## Características Específicas de MySQL ### Uso de Procedimientos Almacenados **Usted**: "¿Puedes mostrarme cómo llamar al procedimiento almacenado 'get_client_orders'?" **IA**: "Para llamar al procedimiento almacenado 'get_client_orders' que recupera todos los pedidos de un cliente específico, puede usar: ```sql CALL get_client_orders(42); ``` Resultado: | pedido_id | fecha | monto | estado | |-----------|-------|-------|--------| | 1042 | 2023-11-25 | $899.99 | entregado | | 987 | 2023-10-12 | $245.50 | entregado | | 856 | 2023-09-03 | $78.25 | entregado | | 743 | 2023-08-17 | $129.99 | entregado | Este procedimiento almacenado acepta un parámetro cliente_id y devuelve todos los pedidos asociados a ese cliente." ### Uso de Vistas **Usted**: "¿Qué información está disponible en la vista 'cliente_resumen'?" **IA**: "La vista 'cliente_resumen' proporciona un resumen de las actividades de cada cliente: | cliente_id | nombre | email | total_pedidos | monto_total | ultimo_pedido | estado_fidelidad | |------------|--------|-------|---------------|-------------|---------------|------------------| | 42 | Juan Pérez | juan@ejemplo.com | 12 | $3,456.78 | 2023-11-25 | Oro | | 23 | María García | maria@ejemplo.com | 8 | $2,345.67 | 2023-11-24 | Plata | | 15 | Tomás Martínez | tomas@ejemplo.com | 5 | $1,234.56 | 2023-11-20 | Bronce | Esta vista combina datos de las tablas clientes, pedidos y programa_fidelidad para proporcionar una visión general de la actividad de cada cliente." ### Uso de Eventos **Usted**: "¿Hay eventos programados en la base de datos?" **IA**: "Sí, aquí están los eventos programados en la base de datos: 1. **daily_sales_report** - Frecuencia: Diariamente a las 23:00 - Descripción: Genera un informe diario de ventas y lo inserta en la tabla 'informes_ventas' 2. **monthly_customer_cleanup** - Frecuencia: El 1er día de cada mes a las 02:00 - Descripción: Archiva clientes inactivos por más de 12 meses 3. **hourly_inventory_check** - Frecuencia: Cada hora - Descripción: Verifica los niveles de inventario y genera alertas para productos agotados" ## Solución de Problemas ### Problemas Comunes 1. **Error "Too many connections"** - Causa: Se ha alcanzado el número máximo de conexiones simultáneas - Solución: Aumente max_connections en my.cnf u optimice su aplicación para usar un pool de conexiones 2. **Error "Lock wait timeout exceeded"** - Causa: Una transacción está esperando demasiado tiempo para adquirir un bloqueo - Solución: Verifique transacciones largas o bloqueadas con `SHOW PROCESSLIST` y optimice sus transacciones 3. **Rendimiento lento** - Posibles causas: * Consultas no optimizadas * Índices faltantes * Configuración de servidor inadecuada - Soluciones: * Use EXPLAIN para analizar consultas * Agregue índices apropiados * Optimice la configuración del servidor (innodb_buffer_pool_size, etc.) ### Comandos de Diagnóstico Útiles ```sql -- Ver procesos en ejecución SHOW PROCESSLIST; -- Verificar el estado de las tablas CHECK TABLE nombre_tabla; -- Optimizar una tabla OPTIMIZE TABLE nombre_tabla; -- Ver variables del sistema SHOW VARIABLES LIKE '%buffer%'; -- Ver estadísticas de rendimiento SHOW ENGINE INNODB STATUS; ``` ## Mejores Prácticas 1. **Seguridad** - Use cuentas con privilegios mínimos - Active SSL para conexiones - Use consultas preparadas para evitar inyecciones SQL 2. **Rendimiento** - Indexe columnas frecuentemente usadas en cláusulas WHERE, JOIN y ORDER BY - Evite SELECT * y seleccione solo las columnas necesarias - Use EXPLAIN para analizar y optimizar consultas 3. **Mantenimiento** - Programe copias de seguridad regulares - Configure replicación para alta disponibilidad - Monitoree regularmente el rendimiento y uso de recursos

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