Introducción
La DROP TABLE
permite eliminar una tabla de una base de datos MySQL. Esta declaración elimina toda la estructura así como el contenido de la tabla.
El tutorial explora DROP
comandos de declaración y muestra opciones para eliminar tablas de bases de datos MySQL .
Requisitos previos
- Acceso a una ventana de terminal/línea de comando
- Un sistema que ejecuta MySQL
- Una base de datos de trabajo o de prueba
- Un usuario de MySQL con los privilegios necesarios (se requieren privilegios DROP)
Sintaxis del comando DROP TABLE MySQL
Para eliminar una tabla en MySQL, use DROP TABLE
declaración. La sintaxis básica del comando es la siguiente:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name] [RESTRICT | CASCADE];
Analicemos la sintaxis:
- La
DROP TABLE
declaración elimina una tabla y sus filas de forma permanente. - El
[TEMPORARY]
La opción garantiza que solo se eliminen las tablas temporales. - El
[IF EXISTS]
La opción descarta una tabla solo si existe. - El
[RESTRICT]
La opción estará disponible en futuras iteraciones de MySQL. Garantiza que una fila principal no se elimine si una fila secundaria hace referencia a un valor en dicha fila principal. - El
[CASCADE]
La opción garantiza que cuando elimina una fila, todas las filas de las tablas relacionadas que hacen referencia a esa fila también se eliminan. Esta opción estará disponible en futuras iteraciones de MySQL.
Utilice la instrucción DROP para eliminar una tabla
Para eliminar una tabla de forma permanente, ingrese la siguiente declaración dentro del shell de MySQL:
DROP TABLE table1;
Reemplazar table1
con el nombre de la tabla que desea eliminar. El resultado confirma que la tabla se ha eliminado.
Utilice DROP para eliminar solo las tablas existentes
MySQL genera un error si intenta eliminar una tabla que no existe. Esto puede ser un problema al incluir DROP
declaración en un script predefinido.
Para verificar MySQL si existe una tabla primero:
DROP TABLE IF EXISTS table1;
El IF EXISTS
opción genera una advertencia si table1
no existe.
El uso de esta opción evita que un script se atasque en un error. Muestre la advertencia ingresando:
SHOW WARNINGS;
Cómo DROP varias tablas
Para eliminar varias tablas con un solo DROP
declaración:
DROP TABLE IF EXISTS table1, table2, table3;
El IF EXISTS
la opción muestra una advertencia como table1
no existe.
Cómo DROP una tabla temporal
Las tablas temporales se utilizan para generar y almacenar un conjunto de datos poco antes de usarlo.
Por ejemplo, puede decidir almacenar los resultados de un SELECT
sentencia con varias sentencias JOIN en una tabla temporal. A continuación, consulte la tabla temporal con facilidad.
Para eliminar tablas temporales sin correr el riesgo de perder tablas regulares, use el TEMPORARY
opción:
DROP TEMPORARY TABLE IF EXISTS table4;
Cómo DROP tablas basadas en cadenas de caracteres
MySQL no tiene un comando incorporado para descartar tablas que coincidan con una cadena de caracteres. En su lugar, utilice un script para ayudar a realizar esta tarea.
1. Defina la base de datos y la cadena de caracteres que desea filtrar:
set @schema = 'tableselection';
set @string = 'table%';
Reemplazar tableselection
con el nombre de su base de datos. Reemplazar table%
con la cadena de caracteres que desea seleccionar y eliminar. Asegúrate de dejar el %
comodín al final.
2. Cree una instrucción MySQL que seleccione todas las tablas que coincidan con la cadena de caracteres:
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
Este código selecciona todas las tablas con el table%
caracteres especificados desde el information_schema
mesa. Luego los concatena y ejecuta un DROP
declaración contra el grupo.
3. Crea una selección a partir de los resultados de este código:
SELECT @droptool;
4. Muestra el contenido del comando:
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
El código de la siguiente sección se presenta en su totalidad para facilitar su uso:
set @schema = 'tableselection';
set @string = 'table%';
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
SELECT @droptool;
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;