· Andrés Ledo · MySQL  · Lectura en 11 min

Cómo crear una tabla en MySQL: Guía completa y ejemplos prácticos

¡Domina el arte de crear tablas en MySQL con nuestra guía exhaustiva! Aprende la sintaxis, los trucos prácticos y mucho más para manejar tus bases de datos como un pro.

¡Domina el arte de crear tablas en MySQL con nuestra guía exhaustiva! Aprende la sintaxis, los trucos prácticos y mucho más para manejar tus bases de datos como un pro.

MySQL es uno de los sistemas de gestión de bases de datos relacionales más populares y utilizados en el mundo. Con MySQL, podemos crear, modificar y eliminar tablas, que son las estructuras donde se almacenan los datos. En este artículo, vamos a explicar cómo crear una tabla en MySQL, qué opciones tenemos a nuestra disposición y qué ejemplos podemos seguir para hacerlo de forma correcta y eficiente.

Índice

¿Qué es una tabla en MySQL?

Una tabla en MySQL es una colección de filas y columnas que representan una entidad o un concepto. Por ejemplo, podemos tener una tabla llamada clientes que contenga la información de los clientes de una empresa, como su nombre, apellido, dirección, teléfono, etc. Cada fila de la tabla corresponde a un cliente, y cada columna corresponde a un atributo o campo del cliente.

Las tablas se crean dentro de una base de datos, que es el conjunto de tablas y otros objetos relacionados con un mismo tema o propósito. Para crear una tabla en MySQL, debemos especificar el nombre de la base de datos donde queremos crearla, el nombre de la tabla y la definición de las columnas que tendrá.

¿Cómo crear una tabla en MySQL con el comando CREATE TABLE?

El comando básico para crear una tabla en MySQL es CREATE TABLE, que tiene la siguiente sintaxis:

CREATE TABLE nombre_de_la_tabla (
  nombre_de_la_columna tipo_de_dato restricciones,
  ...
);

Donde:

  • nombre_de_la_tabla es el nombre que le queremos dar a la tabla. Debe ser único dentro de la base de datos y seguir las reglas de identificadores de MySQL.

  • nombre_de_la_columna es el nombre que le queremos dar a cada columna de la tabla. Debe ser único dentro de la tabla y seguir las reglas de identificadores de MySQL.

  • tipo_de_dato es el tipo de dato que puede almacenar cada columna. MySQL ofrece una gran variedad de tipos de datos para diferentes propósitos, como números enteros, decimales, cadenas de caracteres, fechas, etc. Podemos consultar la referencia completa de tipos de datos en MySQL.

  • restricciones son las condiciones o reglas que se aplican a cada columna para garantizar la integridad y la validez de los datos. Por ejemplo, podemos indicar si una columna puede ser nula o no, si tiene un valor por defecto, si es una clave primaria o foránea, si tiene un índice o una restricción única, etc. Podemos consultar la referencia completa de restricciones en MySQL.

¿Qué opciones tenemos al crear una tabla en MySQL?

Además del comando básico CREATE TABLE, MySQL nos ofrece algunas opciones adicionales para personalizar y optimizar nuestras tablas. Algunas de estas opciones son:

  • CREATE TEMPORARY TABLE: Esta opción nos permite producir una tabla temporal que solo existe durante la sesión actual y se elimina automáticamente al finalizarla. Las tablas temporales son útiles para realizar operaciones intermedias o transitorias sin afectar a las tablas permanentes.

  • CREATE TABLE IF NOT EXISTS: Esta opción nos permite originar una tabla solo si no existe previamente con el mismo nombre. De esta forma, evitamos errores o conflictos al intentar crear una tabla que ya existe.

  • CREATE TABLE LIKE: Esta opción nos permite generar una tabla con la misma definición que otra tabla existente. Es decir, copia el nombre y el tipo de dato de las columnas, así como las restricciones e índices. Sin embargo, no copia los datos ni las opciones adicionales de la tabla original.

  • CREATE TABLE AS SELECT: Esta opción nos permite originar una tabla con los datos y la estructura resultantes de una consulta SELECT. Es decir, produce una tabla con las mismas columnas que la consulta y las rellena con los valores devueltos por la consulta.

  • table_options: Estas opciones nos permiten especificar algunos parámetros adicionales para la creación de la tabla, como el motor de almacenamiento, el juego de caracteres, el formato de fila, el comentario, etc. Podemos consultar la referencia completa de opciones de tabla en MySQL.

  • partition_options: Estas opciones nos permiten particionar la tabla en varias subtablas, según un criterio de partición. El particionamiento es una técnica que mejora el rendimiento y la gestión de las tablas grandes, al dividirlas en unidades más pequeñas y manejables. Podemos consultar la referencia completa de opciones de partición en MySQL.

¿Qué ejemplos podemos seguir para crear una tabla en MySQL?

A continuación, vamos a ver algunos ejemplos prácticos de cómo generar una tabla en MySQL, utilizando las opciones que hemos visto anteriormente.

Ejemplo 1: Crear una tabla simple

Supongamos que queremos generar una tabla llamada productos que contenga la información de los productos de una tienda online, como su código, nombre, precio y stock. La tabla tendrá las siguientes columnas:

  • codigo: Es el código único que identifica a cada producto. Es de tipo entero y no puede ser nulo. Además, es la clave primaria de la tabla y se autoincrementa con cada nuevo producto.

  • nombre: Es el nombre del producto. Es de tipo cadena de caracteres y no puede ser nulo.

  • precio: Es el precio del producto en euros. Es de tipo decimal con dos decimales y no puede ser nulo.

  • stock: Es el número de unidades disponibles del producto. Es de tipo entero y no puede ser nulo.

Para crear la tabla productos, podemos usar el siguiente comando:

CREATE TABLE productos (
  codigo INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(50) NOT NULL,
  precio DECIMAL(10,2) NOT NULL,
  stock INT NOT NULL
);

Ejemplo 2: Crear una tabla temporal

Supongamos que queremos crear una tabla temporal llamada ventas que contenga el código y el importe de las ventas realizadas por cada producto en un día determinado. La tabla tendrá las siguientes columnas:

  • codigo: Es el código del producto vendido. Es de tipo entero y no puede ser nulo. Además, es una clave foránea que hace referencia a la columna codigo de la tabla productos.

  • importe: Es el importe total de las ventas del producto en euros. Es de tipo decimal con dos decimales y no puede ser nulo.

Para crear la tabla temporal ventas, podemos usar el siguiente comando:

CREATE TEMPORARY TABLE ventas (
  codigo INT NOT NULL,
  importe DECIMAL(10,2) NOT NULL,
  FOREIGN KEY (codigo) REFERENCES productos (codigo)
);

Ejemplo 3: Crear una tabla si no existe

Supongamos que queremos crear una tabla llamada clientes que contenga la información de los clientes de la tienda online, como su identificador, nombre, correo electrónico y contraseña. La tabla tendrá las siguientes columnas:

  • id: Es el identificador único que asigna la tienda a cada cliente. Es de tipo entero y no puede ser nulo. Además, es la clave primaria de la tabla y se autoincrementa con cada nuevo cliente.

  • nombre: Es el nombre del cliente. Es de tipo cadena de caracteres y no puede ser nulo.

  • email: Es el correo electrónico del cliente. Es de tipo cadena de caracteres y no puede ser nulo. Además, tiene una restricción única que impide que haya dos clientes con el mismo correo electrónico.

  • password: Es la contraseña del cliente. Es de tipo cadena de caracteres y no puede ser nulo.

Para crear la tabla clientes solo si no existe previamente, podemos usar el siguiente comando:

CREATE TABLE IF NOT EXISTS clientes (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(50) NOT NULL
);

Ejemplo 4: Crear una tabla con la misma definición que otra

Supongamos que queremos crear una tabla llamada clientes_backup que tenga la misma definición que la tabla clientes, pero sin los datos. Es decir, queremos hacer una copia de seguridad de la estructura de la tabla, pero no de su contenido.

Para crear la tabla clientes_backup con la misma definición que la tabla clientes, podemos usar el siguiente comando:

CREATE TABLE clientes_backup LIKE clientes;

Ejemplo 5: Crear una tabla con los datos resultantes de una consulta

Supongamos que queremos generar una tabla llamada productos_mas_vendidos que contenga los productos que más se han vendido en el último mes, junto con su código, nombre e importe total. La tabla tendrá las siguientes columnas:

  • codigo: Es el código del producto más vendido. Es de tipo entero y no puede ser nulo. Además, es una clave foránea que hace referencia a la columna codigo de la tabla productos.

  • nombre: Es el nombre del producto más vendido. Es de tipo cadena de caracteres y no puede ser nulo.

  • importe_total: Es el importe total de las ventas del producto en euros. Es de tipo decimal con dos decimales y no puede ser nulo.

Para crear la tabla productos_mas_vendidos con los datos resultantes de una consulta, podemos usar el siguiente comando:

CREATE TABLE productos_mas_vendidos AS
SELECT p.codigo, p.nombre, SUM(v.importe) AS importe_total
FROM productos p
JOIN ventas v ON p.codigo = v.codigo
WHERE v.fecha BETWEEN '2023-08-01' AND '2023-08-31'
GROUP BY p.codigo, p.nombre
ORDER BY importe_total DESC;

Ejemplo 6: Crear una tabla con opciones adicionales

Supongamos que queremos crear una tabla llamada pedidos que contenga la información de los pedidos realizados por los clientes de la tienda online, como su número, fecha, cliente, producto y cantidad. La tabla tendrá las siguientes columnas:

  • numero: Es el número único que identifica a cada pedido. Es de tipo entero y no puede ser nulo. Además, es la clave primaria de la tabla y se autoincrementa con cada nuevo pedido.

  • fecha: Es la fecha en que se realizó el pedido. Es de tipo fecha y no puede ser nulo.

  • cliente: Es el identificador del cliente que realizó el pedido. Es de tipo entero y no puede ser nulo. Además, es una clave foránea que hace referencia a la columna id de la tabla clientes.

  • producto: Es el código del producto que se compró en el pedido. Es de tipo entero y no puede ser nulo. Además, es una clave foránea que hace referencia a la columna codigo de la tabla productos.

  • cantidad: Es el número de unidades del producto que se compró en el pedido. Es de tipo entero y no puede ser nulo.

Para crear la tabla pedidos con algunas opciones adicionales, podemos usar el siguiente comando:

CREATE TABLE pedidos (
  numero INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  fecha DATE NOT NULL,
  cliente INT NOT NULL,
  producto INT NOT NULL,
  cantidad INT NOT NULL,
  FOREIGN KEY (cliente) REFERENCES clientes (id),
  FOREIGN KEY (producto) REFERENCES productos (codigo),
  INDEX (fecha),
  INDEX (cliente),
  INDEX (producto)
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_spanish_ci
COMMENT = 'Tabla de pedidos de la tienda online';

Donde:

  • ENGINE = InnoDB: Esta opción indica que el motor de almacenamiento que se usará para la tabla es InnoDB, que es el más recomendado para trabajar con tablas relacionales, ya que ofrece soporte para transacciones, bloqueos, integridad referencial, etc.

  • CHARACTER SET = utf8mb4: Esta opción indica que el juego de caracteres que se usará para la tabla es utf8mb4, que es el más completo y compatible para trabajar con cadenas de caracteres en varios idiomas, incluido el español.

  • COLLATE = utf8mb4_spanish_ci: Esta opción indica que la regla de ordenación o colación que se usará para la tabla es utf8mb4_spanish_ci, que es la más adecuada para ordenar y comparar cadenas de caracteres según las normas del idioma español.

  • COMMENT = ‘Tabla de pedidos de la tienda online’: Esta opción indica que el comentario que se asigna a la tabla es ‘Tabla de pedidos de la tienda online’, que es una descripción breve y útil del propósito o contenido de la tabla.

  • INDEX (fecha): Esta opción indica que se crea un índice sobre la columna fecha, lo que mejora la velocidad y eficiencia de las consultas que involucren esta columna.

  • INDEX (cliente): Esta opción indica que se crea un índice sobre la columna cliente, lo que mejora la velocidad y eficiencia de las consultas que involucren esta columna.

  • INDEX (producto): Esta opción indica que se crea un índice sobre la columna producto, lo que mejora la velocidad y eficiencia de las consultas que involucren esta columna.


En este artículo, hemos visto cómo crear una tabla en MySQL, qué opciones tenemos a nuestra disposición y qué ejemplos podemos seguir para hacerlo de forma correcta y eficiente. Hemos aprendido que para crear una tabla en MySQL debemos usar el comando CREATE TABLE, especificando el nombre de la tabla, la definición de las columnas y las restricciones que se aplican a cada una. Además, hemos visto que podemos usar algunas opciones adicionales para crear tablas temporales, solo si no existen, con la misma definición que otra, con los datos resultantes de una consulta, o con algunos parámetros adicionales como el motor de almacenamiento, el juego de caracteres, el comentario, etc. Esperamos que este artículo le haya sido de utilidad y le invitamos a seguir leyendo nuestros contenidos sobre MySQL y otros temas relacionados con el desarrollo web.

Articulos relacionados:

Este artículo forma parte del tutorial de MySQL.

    Compartir
    Volver al blog

    Artículos relacionados

    Ver todos los artículos »
    Cómo usar los comentarios en PHP

    Cómo usar los comentarios en PHP

    Mejora tu código PHP con nuestra guía definitiva sobre comentarios. ¡Descubre técnicas eficientes y buenas prácticas para llevar tus proyectos al...

    Validar DNI, NIE y CIF online

    Validar DNI, NIE y CIF online

    En España, validar la autenticidad de documentos como el DNI, NIE y CIF es crucial para cumplir con las regulaciones y prevenir fraudes. Las...

    Bucle while en PHP

    Bucle while en PHP

    Aprende como funciona el bucle while en PHP con algunos ejemplos sencillos de entender.