Agregando y modificando tablas y vistas de MariaDB/MySQL con SQL

A veces me olvido la sintaxis por no hacerlo tan habitualmente, asi que dejo acá un ayudamemoria.

Ejemplos de cómo crear, modificar y eliminar tablas y vistas en MariaDB usando SQL, con verificaciones de existencia:

1. Creación de Tablas:

SQL

-- Ejemplo de creación de una tabla llamada 'clientes'
DROP TABLE IF EXISTS clientes; -- Elimina la tabla si ya existe (para poder ejecutar el ejemplo varias veces)

CREATE TABLE IF NOT EXISTS clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Ejemplo de creación de otra tabla llamada 'pedidos'
DROP TABLE IF EXISTS pedidos;

CREATE TABLE IF NOT EXISTS pedidos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cliente_id INT NOT NULL,
    fecha_pedido DATE NOT NULL,
    monto DECIMAL(10, 2) NOT NULL,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);

-- Puedes verificar si las tablas se crearon con el siguiente comando:
SHOW TABLES;

Explicación:

  • DROP TABLE IF EXISTS nombre_tabla;: Esta instrucción intenta eliminar la tabla si ya existe. Si no existe, no genera ningún error. La incluimos aquí para poder ejecutar el script varias veces sin problemas.
  • CREATE TABLE IF NOT EXISTS nombre_tabla (...);: Esta instrucción crea una nueva tabla solo si no existe ya una tabla con el mismo nombre.

2. Modificación de Tablas (Columnas):

SQL

-- Ejemplo de adición de una nueva columna 'telefono' a la tabla 'clientes'
ALTER TABLE clientes
ADD COLUMN IF NOT EXISTS telefono VARCHAR(20);

-- Ejemplo de modificación del tipo de dato de la columna 'telefono'
ALTER TABLE clientes
MODIFY COLUMN IF EXISTS telefono VARCHAR(25);

-- Ejemplo de cambio de nombre de la columna 'telefono' a 'numero_telefono'
ALTER TABLE clientes
CHANGE COLUMN IF EXISTS telefono numero_telefono VARCHAR(25);

-- Ejemplo de eliminación de la columna 'numero_telefono'
ALTER TABLE clientes
DROP COLUMN IF EXISTS numero_telefono;

-- Puedes verificar la estructura de la tabla con el siguiente comando:
DESCRIBE clientes;

Explicación:

  • ALTER TABLE nombre_tabla ADD COLUMN IF NOT EXISTS nombre_columna tipo_dato [restricciones];: Agrega una nueva columna a la tabla si no existe ya una columna con el mismo nombre.
  • ALTER TABLE nombre_tabla MODIFY COLUMN IF EXISTS nombre_columna nuevo_tipo_dato [nuevas_restricciones];: Modifica el tipo de dato y/o las restricciones de una columna existente.
  • ALTER TABLE nombre_tabla CHANGE COLUMN IF EXISTS nombre_viejo nombre_nuevo nuevo_tipo_dato [nuevas_restricciones];: Cambia el nombre y/o el tipo de dato y/o las restricciones de una columna existente.
  • ALTER TABLE nombre_tabla DROP COLUMN IF EXISTS nombre_columna;: Elimina una columna existente de la tabla.

3. Eliminación de Tablas:

SQL

-- Ejemplo de eliminación de la tabla 'pedidos' si existe
DROP TABLE IF EXISTS pedidos;

-- Ejemplo de eliminación de la tabla 'clientes' si existe
DROP TABLE IF EXISTS clientes;

-- Puedes verificar si las tablas fueron eliminadas con el siguiente comando:
SHOW TABLES;

Explicación:

  • DROP TABLE IF EXISTS nombre_tabla;: Elimina la tabla especificada si existe.

4. Creación de Vistas:

SQL

-- Ejemplo de creación de una vista llamada 'clientes_con_pedidos'
DROP VIEW IF EXISTS clientes_con_pedidos;

CREATE VIEW IF NOT EXISTS clientes_con_pedidos AS
SELECT
    c.id AS cliente_id,
    c.nombre AS nombre_cliente,
    c.email,
    COUNT(p.id) AS cantidad_pedidos,
    SUM(p.monto) AS total_gastado
FROM
    clientes c
LEFT JOIN
    pedidos p ON c.id = p.cliente_id
GROUP BY
    c.id, c.nombre, c.email
ORDER BY
    total_gastado DESC;

-- Puedes verificar si la vista se creó con el siguiente comando:
SHOW FULL TABLES WHERE Table_type = 'VIEW';

-- Puedes consultar los datos de la vista:
SELECT * FROM clientes_con_pedidos;

Explicación:

  • DROP VIEW IF EXISTS nombre_vista;: Elimina la vista si ya existe.
  • CREATE VIEW IF NOT EXISTS nombre_vista AS SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ...;: Crea una nueva vista basada en una consulta SELECT, solo si no existe ya una vista con el mismo nombre.

5. Modificación y Eliminación de Vistas:

SQL

-- Ejemplo de modificación de la vista 'clientes_con_pedidos' para incluir la fecha del último pedido
DROP VIEW IF EXISTS clientes_con_pedidos; -- Necesitamos eliminarla para recrearla con la modificación

CREATE VIEW IF NOT EXISTS clientes_con_pedidos AS
SELECT
    c.id AS cliente_id,
    c.nombre AS nombre_cliente,
    c.email,
    COUNT(p.id) AS cantidad_pedidos,
    SUM(p.monto) AS total_gastado,
    MAX(p.fecha_pedido) AS ultimo_pedido
FROM
    clientes c
LEFT JOIN
    pedidos p ON c.id = p.cliente_id
GROUP BY
    c.id, c.nombre, c.email
ORDER BY
    total_gastado DESC;

-- Ejemplo de eliminación de la vista 'clientes_con_pedidos'
DROP VIEW IF EXISTS clientes_con_pedidos;

-- Puedes verificar si la vista fue eliminada con el siguiente comando:
SHOW FULL TABLES WHERE Table_type = 'VIEW';

Explicación:

  • Modificación de Vistas: En MariaDB (y en SQL estándar), la forma más común de modificar una vista es eliminarla (DROP VIEW IF EXISTS) y luego volver a crearla (CREATE VIEW IF NOT EXISTS) con la nueva definición. No existe una sintaxis ALTER VIEW tan flexible como ALTER TABLE.
  • DROP VIEW IF EXISTS nombre_vista;: Elimina la vista especificada si existe.

Estos ejemplos te proporcionan una base sólida para trabajar con tablas y vistas en MariaDB utilizando SQL, asegurándote de que las operaciones se realicen de forma segura verificando la existencia previa de los objetos.

Deja un comentario