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

Cómo verificar si una tabla ya existe antes de crearla en MySQL

En MySQL, puede usar IF NOT EXISTS cláusula de CREATE TABLE instrucción para comprobar si ya existe una tabla con el mismo nombre en la base de datos.

Si la tabla no existe, se creará. Si ya existe, no se creará.

Ejemplo

Va así:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Donde t1 es el nombre de la tabla, y todo lo que está entre paréntesis es la definición de la tabla (es decir, columnas, etc.).

En ese caso, la tabla solo se creará si no existe una llamada t1 .

Compruebe que la tabla ahora existe

Podemos usar sys.table_exists() procedimiento para verificar si la tabla ahora existe:

CALL sys.table_exists('test', 't1', @table_type); 
SELECT @table_type;

Resultado:

+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

Toma, test es el nombre de la base de datos, y t1 es el nombre de la tabla cuya existencia estoy comprobando.

En este caso, el resultado es BASE TABLE lo que significa que la tabla existe.

Esta es solo una de las muchas formas de comprobar si existe una tabla en MySQL.

Intente crear la tabla de nuevo

Ahora, si intentamos crear esa tabla nuevamente:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

No recibimos un error:

Query OK, 0 rows affected, 1 warning (0.00 sec)

Pero recibimos una advertencia.

Así que revisemos la advertencia:

SHOW WARNINGS;

Resultado:

+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

Como era de esperar, nos dice que la tabla ya existe.

Sin el IF NOT EXISTS Cláusula

Esto es lo que sucede cuando no usamos IF NOT EXISTS cláusula al intentar crear una tabla que ya existe:

CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Esta vez obtenemos un error:

ERROR 1050 (42S01): Table 't1' already exists

Es importante tener en cuenta que IF NOT EXISTS cláusula no comprueba la estructura/definición de la tabla. Simplemente comprueba que no existe ninguna tabla con el mismo nombre que estamos tratando de dar a la tabla que estamos creando.

En otras palabras, el hecho de que ya exista una tabla con ese nombre no significa que tenga la definición correcta.