MySQL en lenguaje sencillo: dónde se guardan pedidos, usuarios y productos en su sitio web
MySQL es una de las bases de datos más extendidas en la web. En la mayoría de los hostings almacena usuarios (logins, email, contraseñas), productos (nombres, precios, stock) y pedidos (contenido del carrito, total, estado del pago). Si tiene WordPress, OpenCart, Bitrix o una tienda típica en PHP, la "memoria" del sitio muy probablemente es MySQL. No necesita escribir consultas SQL como dueño de negocio, pero entender dónde y cómo se guardan los datos de clientes significa no perder pedidos al cambiar de hosting, hacer copias de seguridad a tiempo y no confundir "archivos en disco" con "tablas en la base de datos".
- MySQL - base de datos relacional: datos en tablas con relaciones
- Usuarios - tabla aparte: email, hash de contraseña, rol, fecha de registro
- Productos - catálogo: SKU, precio, descripción, stock
- Pedidos - vínculo entre cliente, productos, total y estado de envío
- Dónde aparece - WordPress, WooCommerce, OpenCart, Bitrix, Laravel, muchos hostings
- Riesgo principal - sin backup de BD, un login para todos los proyectos, MySQL obsoleto
Qué es MySQL en lenguaje sencillo
MySQL es un programa en el servidor que guarda datos en tablas. Una tabla se parece a Excel: filas son registros, columnas son campos. La diferencia es que MySQL atiende el sitio, el panel de admin y el carrito JavaScript a la vez, evita que dos gestores "sobreescriban" la misma celda y enlaza tablas entre sí.
Flujo típico del sitio:
- El visitante pulsa "Realizar pedido".
- PHP (u otro backend) recibe los datos del formulario.
- PHP envía comandos a MySQL: "crear pedido", "descontar stock", "guardar email del cliente".
- MySQL escribe en el disco del servidor - en archivos de base de datos, no en una página HTML.
- El usuario ve "Gracias por su pedido" - eso ya es lectura desde MySQL.
Importante: imágenes de productos, PDF y logos están en el sistema de archivos (carpetas del servidor). MySQL guarda la ruta al archivo y metadatos: precio, nombre, título SEO. Si borra la carpeta uploads, en la base quedarán rutas de imagen rotas.
| Qué se guarda | Ubicación física | Ejemplo |
|---|---|---|
| Texto de página, precio, email | MySQL (tablas) | wp_posts, oc_product |
| Foto de producto, video | Carpetas en disco | /uploads/2026/07/photo.jpg |
| Código del sitio | Archivos PHP | index.php, plugins |
| Caché de páginas | Archivos o Redis | aceleración, no "fuente de verdad" |
Dónde se guardan usuarios, productos y pedidos
Usuarios
La tabla de usuarios es el "fichero" de clientes y empleados. Campos típicos:
- id - número único del registro;
- email / login - para entrar al área personal;
- password_hash - no la contraseña en claro, sino su hash (más seguro);
- role - cliente, gestor, administrador;
- created_at - fecha de registro.
En WordPress es wp_users, en OpenCart oc_customer, en Bitrix tablas propias con prefijo. Un usuario - una fila. Si un cliente hizo cinco pedidos, sigue siendo uno en users y los pedidos referencian su id.
Productos
El catálogo es una tabla aparte (o varias enlazadas):
- sku - código interno;
- name, description - nombre y descripción para el sitio;
- price - precio; a menudo
special_pricepara promociones; - quantity / stock - stock en almacén;
- category_id - enlace a categoría "Calzado", "Electrónica".
Categorías, marcas, filtros - otras tablas enlazadas con claves foráneas. Por eso "arreglar el precio en Excel" no funciona en un sitio en vivo: el precio está en MySQL y el sitio lo lee vía PHP en cada vista de producto.
Pedidos
Un pedido es un evento que une cliente, productos y dinero:
| Tabla | Qué guarda |
|---|---|
orders |
Número de pedido, user_id, total, estado, dirección de envío |
order_items |
Qué productos, cantidad, precio en el momento de compra |
payments |
Estado del pago, ID de transacción Payme/Stripe/Click |
order_status_history |
"Creado → Pagado → Enviado → Entregado" |
Por qué tabla de líneas aparte: el precio del catálogo cambia, pero el pedido debe conservar el precio de compra. Por eso order_items guarda una instantánea del precio.
Cómo MySQL trabaja con su sitio web
El sitio no abre MySQL directamente. La cadena es:
Navegador → PHP/Python/Node.js → MySQL → respuesta → HTML/JSON → usuario
PHP (WordPress, Bitrix, OpenCart) es el "traductor" más habitual. Comprueba login y contraseña, selecciona productos, crea pedidos en transacción.
JavaScript en el navegador normalmente no habla con MySQL directamente - sería un agujero de seguridad. JS llama a una API (script PHP) y este trabaja con la base.
Dónde vive físicamente MySQL
En hosting compartido MySQL es un servicio aparte: recibe host, nombre de BD, login y contraseña. Gestión vía phpMyAdmin o panel del hosting.
En VPS/VDS MySQL lo instala el administrador; archivos en /var/lib/mysql/ (Linux).
En la nube (AWS RDS, DigitalOcean Managed DB) - servicio gestionado con suscripción.
Tablas típicas de tienda online
Esquema simplificado:
users ──────┬──── orders ────── order_items ────── products
│ │
│ └──── payments
│
└──── addresses
categories ─── products
brands ─────── products
Cuando preguntan "cuántas zapatillas Nike vendimos en marzo" - es una consulta SQL a esas tablas. Más sobre SQL para directivos en otro artículo.
MySQL y CMS populares
| CMS / plataforma | BD por defecto | Dónde están pedidos y clientes |
|---|---|---|
| WordPress | MySQL / MariaDB | wp_users, wp_posts, WooCommerce: wp_wc_* |
| WooCommerce | MySQL | wp_posts, tablas meta |
| OpenCart | MySQL | oc_order, oc_customer, oc_product |
| 1C-Bitrix | MySQL | Esquema propio, integración 1C |
| Laravel / PHP custom | MySQL o PostgreSQL | Tablas por migraciones |
| Django | PostgreSQL más a menudo | MySQL también posible |
MariaDB es un fork de MySQL compatible. Muchos hostings dicen "MySQL" e instalan MariaDB - para el sitio casi no hay diferencia.
MySQL frente a PostgreSQL y Excel
| Criterio | Excel | MySQL | PostgreSQL |
|---|---|---|---|
| Pedidos simultáneos del sitio | No | Sí | Sí |
| Hosting WordPress típico | - | Incluido | Menos frecuente |
| Analítica compleja | Limitada | Buena | Muy buena |
| Coste inicial | $0 | $0 - $20/mes | Similar |
Para el dueño del negocio: MySQL no es "peor" que PostgreSQL - es el estándar del ecosistema PHP-CMS. Cambiar MySQL por PostgreSQL "porque sí" en WordPress funcionando es gasto innecesario.
Excel para cálculos puntuales. Pedidos y clientes operativos - en MySQL.
Qué debe saber el dueño del negocio
Backup de la base - obligatorio
Perder MySQL sin backup = perder todos los pedidos, clientes y contraseñas (hashes). Mínimo: backup diario automático, dump manual antes de actualizaciones, copia fuera del mismo servidor.
Credenciales MySQL
Login y contraseña de BD - como llave de caja fuerte. Usuario de BD separado por proyecto.
Versión MySQL
MySQL 5.7 obsoleto - riesgo de seguridad. En auditoría SEO se revisa versión de BD y PHP.
Migración de hosting
Migración = archivos + dump MySQL + config. Copiar solo public_html - el sitio abre pero no hay pedidos.
Problemas y riesgos típicos
"El sitio va lento" - ¿culpa de MySQL?
A veces sí: sin índices, catálogo enorme sin optimizar, hosting barato saturado. A veces no: plugins pesados, sin caché. La base es parte del rendimiento.
Clientes duplicados y pedidos "perdidos"
Importación manual desde Excel, dos formularios sin sincronizar, fallo de pago. Solución: transacciones, webhooks, CRM.
Ataque por inyección SQL
PHP "crudo" sin consultas parametrizadas. Tras hackeo WordPress revisar admins en wp_users.
Cuando MySQL "no se ve" pero existe
- Constructores (Tilda, Wix) - datos en sus servidores.
- CRM SaaS - clientes en la nube CRM.
- Marketplaces - pedidos en la plataforma.
Con dominio propio, WordPress, OpenCart, Bitrix - casi seguro hay MySQL.
Resumen
MySQL es donde viven usuarios, productos y pedidos en un sitio PHP típico. PHP lee y escribe MySQL; JavaScript muestra el resultado; imágenes en archivos aparte.
El dueño debe: exigir backup de BD, no guardar pedidos solo en Excel, migrar dump MySQL al cambiar hosting.
Preguntas frecuentes
¿Dónde se guardan físicamente los datos MySQL en mi hosting?
En los servidores del proveedor - archivos de base de datos. Acceso vía phpMyAdmin o panel. Backup - archivo .sql descargado o copia automática.
¿Puedo ver pedidos en MySQL sin programador?
Parcialmente. En phpMyAdmin se ven filas, pero editar sin saber puede romper el sitio. Para el día a día use admin del CMS o CRM.
¿En qué se diferencia MySQL de MariaDB?
MariaDB es un fork compatible de MySQL. Para WordPress, OpenCart y Bitrix son intercambiables. Importa la versión y los backups.
¿Perderé pedidos si cambio de hosting?
No, si migra el dump de la base. Sí, si copia solo archivos sin .sql.
¿Necesito MySQL si solo tengo un landing en Tilda?
No para Tilda - leads en el constructor o email/CRM. Sí si además hay WordPress, OpenCart o área personal propia.