jueves, 21 de julio de 2016

Clonar o Copiar tablas en MySQL (MariaDB)

Para copiar tablas en MySQL tenemos dos opciones, podemos copiar solo la estructura o solo los datos, o podemos combinar ambos métodos para copiar estructura y datos, aquí les voy a decir como.



Buenas tardes queridos lectores, el día de hoy hablaremos de un tema importante, como clonar o copiar una tabla de una base de datos de MySQL (MariaDB). Pero vamos pensando, ¿para que querríamos tener dos tablas exactamente iguales?, puede ser para tener algún respaldo antes de realizar algún UPDATE o algún DELETE, cuidar nuestra integridad de datos, y, en caso de habernos equivocado, tener la tabla copia que habíamos creado, cabe señalar la importancia de la integridad de datos, si tenemos los datos enlazados correctamente puede servir como una primera red de seguridad, pero no esta de más aprender a clonar las tablas, existen varias maneras

Usando la sentencia SELECT

Podemos clonar una tabla utilizando la sentencia SELECT, es la más sencilla y rápida de todas, pero tiene varias desventajas

Ventajas

  • Es mas fácil de utilizar
  • El clonado o copia de la tabla es mucho más rápido

Desventajas

  • No traspasa las llaves ni los índices de las tablas, es decir, no tendra ninguna PRIMARY KEY, ni tampoco FOREIGN KEYS
  • No tendrá ningún AUTO_INCREMENT, es decir, si la tabla original tenía un campo auntoincrementable, esta tabla definitivamente no lo tendrá
  • Tampoco traslada las definiciones DEFAULT, por lo tanto los campos en la tabla copia no tendrán ningun campo configurado con datos por defecto
  • Solo llena la tabla copia con los datos devueltos en la consulta SELECT, así que puede ser que no contenga nada
Pues bien, sabiendo que este tipo de copia con la sentencia SELECT crea una copia muy básica de la tabla, vamos a empezar a explicarlo, pero sobre todo a hacerlo que es lo que nos gusta y como aprendemos

Ejercicio 1
Crear una copia simple de la tabla ESTADIOS utilizando la sentencia SELECT, y únicamente los estadios de México

describe estadios;

Primero veremos la estructura original de la tabla ESTADIOS, con el comando DESCRIBE


Como vemos esa es la estructura de la tabla original, ahora veremos sus datos con la sentencia SELECT

select * from estadios;



Ahora si, visto como esta la estructura y los datos de la tabla original, vamos a hacer la copia de la tabla, pero como dice el ejercicio, únicamente de los estadios de México, asi que la tabla se llamará ESTADIOSMEXICO

CREATE TABLE ESTADIOSMEXICO SELECT * FROM estadios where codigopais='MX';

Con esta sentencia, hemos creado una tabla llamada ESTADIOSMEXICO con el resultado de una consulta, como les decía, pierde su estructura en cuanto a llaves y restricciones, veamos como quedo la estructura de la nueva tabla con el comando DESCRIBE

describe estadiosmexico


Como ven, ya no tiene esta nueva tabla ninguna llave, el AUTO_INCREMENT también se perdió, ahora veamos los datos

select * from estadiosmexico


Listo, como pueden ver, el contenido de esa tabla son solo estadios de México, tal cual fue el resultado de la consulta, pues bien, esta forma fue la más sencilla y rápida, vamos a ver otra manera más óptima.

Usando la sentencia LIKE

Ahora, vamos a realizar la copia con la sentencia LIKE, pero vamos a describir las ventajas y desventajas de éste método

Ventajas

  • Copia la estructura de la tabla con sus llaves correspondientes
  • Copia los AUTOINCREMENT de los campos
  • Copia los valores DEFAULT de los campos

Desventajas

  • Copia solo la estructura de la tabla, más no sus datos
Pues bien, sabiendo que esta sentencia, nos copiará la estructura de la tabla, vamos a copiar la tabla PARTIDOS

Ejercicio 2
Crear una copia de la estructura de la tabla EQUIPOS utilizando la sentencia LIKE
  
describe equipos

Primero que nada, veremos la estructura de la tabla equipos utilizando el comando DESCRIBE


CREATE TABLE equipos2 LIKE equipos;

Con esta sentencia, hemos creado una tabla llama EQUIPOS2 pero sin ningún dato, aunque conservando su estructura, veamos:

describe equipos2


select * from equipos2

Al ejecutar el select podemos ver que la tabla, estará totalmente vacía, aunque conserva su estructura, ahora sería llenarla de una manera natural con el comando SELECT

insert into equipos2
select * from equipos where codigopais='MX'

Al ejecutar esta sentencia llenamos la tabla de EQUIPOS2 con el resultado de la consulta, en este caso equipos mexicano, si hacemos la consulta, obtendremos lo siguiente:

select * from equipos2


Pues bien, hasta aquí el post de hoy, espero haya sido de su agrado, pero sobre todo de su utilidad, espero comenten, den +1, compartan o den un clic en un anuncio que les interese. Cualquier cosa, saben que estoy a la orden.

Saludos


Banderas de Visitantes

Flag Counter