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 sintaxisALTER VIEW
tan flexible comoALTER 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.