sql >> Base de Datos >  >> RDS >> MariaDB

4 formas de comprobar si existe una tabla en MariaDB

Aquí hay cuatro formas de verificar si una tabla existe o no en una base de datos MariaDB.

El information_schema.TABLES Mesa

El information_schema.TABLES La tabla contiene información sobre los diversos no TEMPORARY tablas (excepto tablas de la base de datos del esquema de información) y vistas en el servidor.

Aquí hay un ejemplo de consulta de esta tabla:

SELECT 
   TABLE_SCHEMA, 
   TABLE_NAME,
   TABLE_TYPE
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'PetHouse' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Pets';

Resultado:

+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| PetHouse     | pets       | BASE TABLE |
+--------------+------------+------------+

Aquí, devolví la tabla base llamada Pets de la base de datos llamada PetHouse . 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 'PetHouse' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 'Pets'
    );

Resultado:

1

O podríamos obtener el conteo:

SELECT COUNT(TABLE_NAME)
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'PetHouse' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Pets';

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 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_pethouse LIKE 'Pets';

Resultado:

+--------------------+------------+
| Tables_in_pethouse | Table_type |
+--------------------+------------+
| Pets               | BASE TABLE |
+--------------------+------------+

En este caso, el nombre de la base de datos es pethouse , por lo que la primera columna es Tables_in_pethouse .

El SHOW TABLE STATUS Comando

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 PetHouse
WHERE Name = 'Pets';

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 | Max_index_length | Temporary |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
| Pets | InnoDB |      10 | Dynamic    |    8 |           2048 |       16384 |               0 |        32768 |         0 |           NULL | 2021-04-01 15:42:43 | NULL        | NULL       | utf8mb4_general_ci |     NULL |                |         |                0 | N         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+

El mariadb-show Cliente

Otra forma de hacerlo es con mariadb-show utilidad.

Para usar esta opción, abra una línea de comando/ventana de terminal y ejecute lo siguiente (reemplazando pethouse con la base de datos que le interesa):

mariadb-show pethouse;

Resultado:

+---------------+
|    Tables     |
+---------------+
| Owners        |
| PetTypes      |
| Pets          |
| vownercount   |
| vpetcount     |
| vpetsowners   |
| vpetstypes    |
| vpettypecount |
+---------------+

Esto devuelve vistas y tablas.

La salida muestra solo los nombres de esas bases de datos, tablas o columnas para las que 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.

El cliente también se puede ejecutar como mysqlshow :

mysqlshow pethouse;

Esta utilidad acepta bastantes opciones, como --user (para que pueda pasar el nombre de usuario), --password (para que pueda pasar la contraseña), etc.

Consulte la documentación de MariaDB para obtener una lista completa de opciones.

Comprobar si una tabla ya existe antes de crearla

Si necesita crear la tabla si no existe, puede usar 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 crear una tabla solo si no existe en MariaDB para ver un ejemplo.