Aquí hay cinco formas de verificar si una tabla existe o no en una base de datos MySQL.
La table_exists()
Procedimiento
En MySQL, sys.table_exists()
procedimiento almacenado prueba si una tabla dada existe como una tabla regular, un TEMPORARY
tabla o una vista. El procedimiento devuelve el tipo de tabla en un OUT
parámetro.
Ejemplo:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type;
Resultado:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Tenga en cuenta que si existen tablas temporales y permanentes con el nombre dado, TEMPORARY
es devuelto.
El information_schema.TABLES
Mesa
Otra forma de verificar si existe una tabla es consultar el information_schema.TABLES
tabla:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists';
Resultado:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
En este caso, devolví la tabla base llamada Artists
de la base de datos llamada music
. Consultando esto sin filtrar los resultados por TABLE_SCHEMA
devuelve tablas base de todas las bases de datos. Consultarlo sin filtrar por TABLE_TYPE
devuelve todos los tipos de tablas.
Si no necesitamos toda esa información, podemos hacer esto:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
);
Resultado:
1
O podríamos obtener el conteo:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists';
Resultado:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
Las SHOW TABLES
Comando
El SHOW TABLES
El comando enumera los elementos que no son TEMPORARY
tablas, secuencias y vistas en una base de datos MySQL determinada. Podemos usar el WHERE
cláusula para restringirlo a un tipo dado.
También podemos usar el FULL
modificador para devolver una segunda columna que muestra el tipo:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums';
Resultado:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
En este caso, el nombre de la base de datos es music
, por lo que la primera columna es Tables_in_music
.
El SHOW TABLE STATUS
Comando
En MySQL, el SHOW TABLE STATUS
El comando es similar a SHOW TABLES
pero proporciona información más extensa sobre cada uno (no TEMPORARY
) tabla.
Ejemplo:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums';
Resultado:
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Albums | InnoDB | 10 | Dynamic | 20 | 819 | 16384 | 0 | 32768 | 0 | 21 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
El mysqlshow
Cliente
Otra forma de verificar las tablas en una base de datos MySQL es usar mysqlshow
cliente.
Para usar esta utilidad, abra una ventana de línea de comando/terminal y ejecute lo siguiente:
mysqlshow --user root --password music;
Asegúrate de reemplazar music
con la base de datos que le interesa y root
con el usuario aplicable. El --password
bit hace que al usuario se le solicite la contraseña.
Resultado:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
El mysqlshow
el cliente devuelve vistas y tablas.
La salida muestra solo los nombres de aquellas bases de datos, tablas o columnas para las que el usuario tiene algunos privilegios.
Si no se proporciona ninguna base de datos, se muestran todas las bases de datos coincidentes. Si no se proporciona ninguna tabla, se muestran todas las tablas coincidentes en la base de datos. Si no se proporciona ninguna columna, se muestran todas las columnas y tipos de columnas coincidentes en la tabla.
Comprobar si una tabla ya existe antes de crearla
Si necesita crear la tabla si no existe, puede usar el IF NOT EXISTS
cláusula de CREATE TABLE
declaración. Si la tabla no existe, se creará. Si ya existe, no se creará.
Consulte Cómo comprobar si una tabla ya existe antes de crearla en MySQL para ver un ejemplo.