DROP VIEW
DROP VIEW elimina una o más vistas de la base de datos. Al eliminar una vista solo se elimina la definición de la consulta; las tablas subyacentes y sus datos no se ven afectados.
Sintaxis
-- Eliminar una vista
DROP VIEW nombre_vista;
-- Eliminar si existe (evita error)
DROP VIEW IF EXISTS nombre_vista;
-- Eliminar múltiples vistas
DROP VIEW IF EXISTS vista1, vista2, vista3;Ejemplo básico
-- Crear una vista
CREATE VIEW v_test AS
SELECT nombre, precio FROM productos WHERE precio > 1000;
-- Verificar que existe
SELECT * FROM v_test;| nombre | precio |
|---|---|
| iPhone 15 Pro | 1299.99 |
| MacBook Air M3 | 1399.00 |
| Lenovo ThinkPad X1 | 1549.00 |
| ASUS ROG Zephyrus | 1899.99 |
-- Eliminar la vista
DROP VIEW v_test;
-- Intentar usarla genera un error
-- SELECT * FROM v_test;
-- Error: Table 'tienda_mysql.v_test' doesn't existIF EXISTS
IF EXISTS evita un error si la vista no existe:
-- Sin IF EXISTS: error si no existe
-- DROP VIEW v_inexistente;
-- Error: Unknown table 'tienda_mysql.v_inexistente'
-- Con IF EXISTS: solo una advertencia
DROP VIEW IF EXISTS v_inexistente;
-- Query OK, 0 rows affected, 1 warning
SHOW WARNINGS;| Level | Code | Message |
|---|---|---|
| Note | 1051 | Unknown table 'tienda_mysql.v_inexistente' |
Eliminar múltiples vistas
CREATE VIEW v_a AS SELECT nombre FROM productos LIMIT 5;
CREATE VIEW v_b AS SELECT nombre FROM clientes LIMIT 5;
CREATE VIEW v_c AS SELECT nombre FROM empleados LIMIT 5;
-- Eliminar todas a la vez
DROP VIEW IF EXISTS v_a, v_b, v_c;Dependencias entre vistas
Si una vista depende de otra y eliminas la vista base, la vista dependiente no se elimina pero deja de funcionar:
-- Vista base
CREATE VIEW v_base AS
SELECT id, nombre, precio FROM productos WHERE activo = TRUE;
-- Vista que depende de v_base
CREATE VIEW v_derivada AS
SELECT nombre, precio FROM v_base WHERE precio > 500;
-- Funciona
SELECT * FROM v_derivada LIMIT 3;| nombre | precio |
|---|---|
| iPhone 15 Pro | 1299.99 |
| Samsung Galaxy S24 | 899.99 |
| Google Pixel 8 | 699.00 |
-- Eliminar la vista base
DROP VIEW v_base;
-- La vista derivada sigue existiendo pero falla
-- SELECT * FROM v_derivada;
-- Error: View references invalid table(s) or column(s)Para evitar este problema, elimina las vistas dependientes primero:
DROP VIEW IF EXISTS v_derivada;
DROP VIEW IF EXISTS v_base;Encontrar vistas en la base de datos
Antes de eliminar, puedes listar todas las vistas:
-- Listar todas las vistas
SELECT TABLE_NAME
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA = 'tienda_mysql';-- También con SHOW TABLES
SHOW FULL TABLES WHERE Table_type = 'VIEW';Vista vs tabla al eliminar
| Comando | Elimina datos | Elimina estructura |
|---|---|---|
| DROP TABLE | Sí | Sí |
| DROP VIEW | No hay datos | Solo la definición de la consulta |
DROP VIEW es seguro: nunca elimina datos reales. Los datos están en las tablas subyacentes, que no se ven afectadas.
Limpieza
DROP VIEW IF EXISTS v_derivada;
DROP VIEW IF EXISTS v_base;Con esto completamos la sección de vistas. Hemos cubierto cómo crear, actualizar, renombrar y eliminar vistas, los algoritmos de procesamiento y la cláusula WITH CHECK OPTION. En la siguiente sección exploraremos los procedimientos almacenados en MySQL.
Escrito por Eduardo Lázaro
