sql >> Base de Datos >  >> RDS >> Mysql

5 formas de comprobar si existe una tabla en MySQL

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.