la Sintaxis de
DROP TABLE tbl_name ...
Descripción
DROP TABLE
elimina una o más tablas. Debe tener el privilegio DROP
para cada tabla. Todos los datos de la tabla y la definición de la tabla se eliminan, así como los disparadores asociados a la tabla, ¡así que tenga cuidado con esta instrucción! Si alguna de las tablas nombradas en la lista de argumentos no existe, MariaDB devuelve un error indicando por nombre qué tablas no existentes no pudo eliminar, pero también elimina todas las tablas de la lista que existen.,
importante: cuando se elimina una tabla, los privilegios de usuario en la tabla no se eliminan automáticamente. Ver GRANT.
si otro subproceso está utilizando la tabla en una transacción explícita o en una transacción de autocommit, entonces el subproceso adquiere un bloqueo de metadatos (MDL) en la tabla. La instrucción DROP TABLE
esperará en el estado de subproceso «esperando el bloqueo de metadatos de la tabla» hasta que se libere la MDL. Las MDL se liberan en los siguientes casos:
- si se adquiere una MDL en una transacción explícita, la MDL se liberará cuando finalice la transacción.,
- si se adquiere una MDL en una transacción de autocommit, entonces la MDL se liberará cuando finalice la instrucción.
- Las Tablas transaccionales y no transaccionales se manejan de la misma manera.
tenga en cuenta que para una tabla con particiones, DROP TABLE
elimina permanentemente la definición de tabla, todas sus particiones y todos los datos almacenados en esas particiones. También elimina la definición de partición (.par) archivo asociado con la tabla eliminada.
para cada tabla referenciada, DROP TABLE
elimina una tabla temporal con ese nombre, si existe., Si no existe, y la palabra clave TEMPORARY
no se utiliza, elimina una tabla no temporal con el mismo nombre, si existe. La palabra clave TEMPORARY
garantiza que una tabla no Temporal No se caiga accidentalmente.
UseIF EXISTS
para evitar que se produzca un error en las tablas que no existen. Se genera un NOTE
para cada tabla inexistente cuando se utilizaIF EXISTS
. Consulte mostrar advertencias.
si una clave foránea hace referencia a esta tabla, la tabla no se puede eliminar., En este caso, es necesario soltar la clave foránea primero.
RESTRICT
y CASCADE
se les permite hacer la portabilidad desde otros sistemas de base de datos más fácil. En MariaDB, no hacen nada.
el comentario antes de los nombres de la tabla (/*COMMENT TO SAVE*/
) se almacena en el registro binario. Esa característica puede ser utilizada por las herramientas de replicación para enviar sus mensajes internos.
es posible especificar nombres de tabla como db_name
.tab_name
. Esto es útil para eliminar tablas de varias bases de datos con una instrucción., Consulte calificadores de identificador para obtener más información.
el privilegio DROP es necesario para usar DROP TABLE
en tablas No temporales. Para las tablas temporales, no se requiere ningún privilegio, ya que dichas tablas solo son visibles para la sesión actual.
Nota:DROP TABLE
confirma automáticamente la transacción activa actual,a menos que utilice la palabra claveTEMPORARY
.
MariaDB a partir de 10.5.4
desde MariaDB 10.5.,4, DROP TABLE
elimina de forma fiable los restos de tabla dentro de un motor de almacenamiento, incluso si falta el archivo .frm
. Antes de eso, un archivo .frm
faltante provocaría que la instrucción fallara.
MariaDB a partir de 10.3.1
WAIT/NOWAIT
establecer el tiempo de espera de bloqueo. Ver espera y NOWAIT.
DROP TABLE en la réplica
DROP TABLE
tiene las siguientes características en la replicación:
-
DROP TABLE IF EXISTS
siempre se registran., -
DROP TABLE
sinSI EXISTE
para las tablas que no existen no se escriben en el log binario. - Dropping of
TEMPORARY
las tablas tienen el prefijoTEMPORARY
. Estas caídas solo se registran cuando se ejecuta la instrucción o la replicación en modo mixto., - Uno
DROP TABLE
declaración puede estar conectado con hasta 3 diferentesBAJA
instrucciones:CAÍDA de TABLA TEMPORAL list_of_non_transactional_temporary_tables
CAÍDA de TABLA TEMPORAL list_of_transactional_temporary_tables
DROP TABLE list_of_normal_tables
A partir de MariaDB 10.0.,8, DROP TABLE
en el maestro es tratada en el esclavo como DROP TABLE IF EXISTS
. Puede cambiar eso estableciendo slave-ddl-exec-mode a STRICT
.
eliminar un #sql-interno… Table
si el proceso mysqld se mata durante una tabla ALTER, puede encontrar una tabla llamada # sql -… en su directorio de datos. En MariaDB 10.3, las tablas InnoDB con este prefijo se borrarán automáticamente durante startup.In MariaDB 10.4 nos aseguraremos de que estas tablas temporales siempre se eliminen automáticamente.,
Si desea eliminar una de estas tablas explícitamente puede hacerlo mediante la siguiente sintaxis:
DROP TABLE `#mysql50##sql-...`;
Cuando se ejecuta un ALTER TABLE…ALGORITHM=INPLACE
que reconstruye la tabla InnoDB creará un interno #sql-ib
tabla. Para estas tablas, el archivo .frm
se llamará de otra manera. Para eliminar dicha tabla después de un bloqueo del servidor, debe cambiar el nombre del archivo #sql*.frm
para que coincida con el archivo #sql-ib*.ibd
.,
eliminar todas las tablas en una base de datos
la mejor manera de eliminar todas las tablas en una base de datos es ejecutando DROP DATABASE
, que eliminará la base de datos en sí y todas las tablas en ella.
sin embargo, si desea eliminar todas las tablas de la base de datos, pero también desea mantener la base de datos en sí y cualquier otro objeto que no sea de la tabla, deberá ejecutar DROP TABLE
para eliminar cada tabla individual. Puede construir estos comandos DROP TABLE
consultando la tabla TABLES
en la base de datos information_schema
., Por ejemplo:
SELECT CONCAT('DROP TABLE IF EXISTS `', TABLE_SCHEMA, '`.`', TABLE_NAME, '`;')FROM information_schema.TABLESWHERE TABLE_SCHEMA = 'mydb';
Examples
DROP TABLE Employees, Customers;
Notes
tenga en cuenta que DROP TABLE
puede soltar tanto tablas como secuencias. Esto se hace principalmente para permitir que herramientas antiguas como mysqldump funcionen con secuencias.
vea también
- CREATE TABLE
- ALTER TABLE
- SHOW CREATE TABLE
- DROP SEQUENCE
- variable slave-ddl-exec-mode.