RENAME VIEW

MySQL no tiene un comando RENAME VIEW dedicado. Para renombrar una vista, usas RENAME TABLE, que funciona tanto con tablas como con vistas. Alternativamente, puedes crear una nueva vista con el nombre deseado y eliminar la anterior.

Sintaxis

-- Renombrar una vista
RENAME TABLE nombre_actual TO nombre_nuevo;
 
-- Renombrar múltiples vistas
RENAME TABLE
    vista1 TO vista1_nuevo,
    vista2 TO vista2_nuevo;

Ejemplo básico

-- Crear una vista
CREATE VIEW v_clientes_madrid AS
SELECT id, nombre, apellidos, email
FROM clientes
WHERE ciudad = 'Madrid';
 
SELECT * FROM v_clientes_madrid;
idnombreapellidosemail
1MaríaGarcía Lópezmaria.garcia@email.com
4PedroFernández Castropedro.fernandez@email.com
-- Renombrar la vista
RENAME TABLE v_clientes_madrid TO v_clientes_capital;
 
-- La vista anterior ya no existe
-- SELECT * FROM v_clientes_madrid;
-- Error: Table doesn't exist
 
-- Usar el nuevo nombre
SELECT * FROM v_clientes_capital;
idnombreapellidosemail
1MaríaGarcía Lópezmaria.garcia@email.com
4PedroFernández Castropedro.fernandez@email.com

Renombrar múltiples vistas

CREATE VIEW v_temp1 AS SELECT nombre, precio FROM productos WHERE precio > 1000;
CREATE VIEW v_temp2 AS SELECT nombre, email FROM clientes LIMIT 5;
 
-- Renombrar ambas a la vez
RENAME TABLE
    v_temp1 TO v_productos_premium,
    v_temp2 TO v_clientes_muestra;

Alternativa: CREATE OR REPLACE + DROP

Si prefieres no usar RENAME TABLE, puedes recrear la vista:

-- 1. Ver la definición actual
SHOW CREATE VIEW v_clientes_capital;
 
-- 2. Crear la vista con el nuevo nombre
CREATE VIEW v_clientes_madrid AS
SELECT id, nombre, apellidos, email
FROM clientes
WHERE ciudad = 'Madrid';
 
-- 3. Eliminar la vista antigua
DROP VIEW v_clientes_capital;

Consideraciones

  • RENAME TABLE es atómico: el cambio ocurre instantáneamente
  • Las consultas y otras vistas que referencian el nombre antiguo dejarán de funcionar
  • Los permisos se mantienen al renombrar
  • No puedes mover una vista a otra base de datos con RENAME

Limpieza

DROP VIEW IF EXISTS v_clientes_madrid;
DROP VIEW IF EXISTS v_clientes_capital;
DROP VIEW IF EXISTS v_productos_premium;
DROP VIEW IF EXISTS v_clientes_muestra;

En el siguiente artículo veremos cómo eliminar vistas con DROP VIEW.

Escrito por Eduardo Lázaro