Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment dupliquer une table dans MySQL

Parfois, vous devrez peut-être copier des données d'une table à une autre dans MySQL ou copier des tables dans MySQL. Voici comment dupliquer une table dans MySQL. Vous pouvez l'utiliser pour cloner une table dans MySQL ou copier la structure d'une table, ou même copier une table d'une base de données à une autre.

Comment dupliquer une table dans MySQL

Voici les étapes pour dupliquer une table dans MySQL. Il existe différents cas d'utilisation pour copier des données d'une table à une autre. Nous allons les examiner en détail.

MySQL Copier les données d'une table vers une nouvelle table

Si vous avez besoin de dupliquer une table dans MySQL vers une nouvelle table, vous devez utiliser l'instruction CREATE TABLE et SELECT comme indiqué ci-dessous

CREATE TABLE new_table 
SELECT column, column2, column3 
FROM
    existing_table;

Disons que vous avez une table existante produits

mysql> select * from products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Voici la requête SQL pour copier des produits table dans une nouvelle table appelée new_products

mysql> create table new_products
       select *
       from products;

mysql> select * from new_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Il est important de noter que la nouvelle table ne sera créée que si elle n'existe pas. Sinon, vous obtiendrez une erreur. Pour éviter d'obtenir une erreur lorsque vous dupliquez une table dans MySQL, vous pouvez utiliser IF NOT EXIST dans l'instruction CREATE TABLE, comme indiqué ci-dessous.

mysql> create table if not exist new_products
       select *
       from products;

Lecture bonus :procédure stockée MySQL avec paramètres

Pour copier uniquement des données partielles d'une table vers une nouvelle table, vous pouvez utiliser la condition WHERE dans votre instruction SELECT comme indiqué

CREATE TABLE new_table 
SELECT column1, column2, column3 
FROM
    existing_table
WHERE
    conditions;

Voici la requête SQL pour copier des données partielles de produits table dans une nouvelle table appelée new_products2

mysql> create table new_products2
       select *
       from products
       where product_id=1;

mysql> select * from new_products2;
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

Lecture bonus :Comment créer une clé primaire composite dans MySQL

MySQL Copier la structure de la table dans une nouvelle table

Les requêtes ci-dessus ne copient que la table et les données. Ils ne copieront pas les objets de table tels que la clé primaire, les index, les contraintes, les déclencheurs. Pour copier la structure et les données de la table, vous devez utiliser l'instruction CREATE TABLE avec le mot-clé LIKE, comme indiqué ci-dessous

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Disons que vous avez une commande table avec clé primaire

mysql> describe orders;
+--------------+--------------+------+-----+-------------------+----------------+
| Field        | Type         | Null | Key | Default           | Extra          |
+--------------+--------------+------+-----+-------------------+----------------+
| id           | int(11)      | NO   | PRI | NULL              | auto_increment |
| product_name | varchar(255) | NO   |     | NULL              |                |
| order_date   | date         | YES  |     | NULL              |                |
| price        | int(11)      | NO   |     | NULL              |                |
| description  | text         | YES  |     | NULL              |                |
| created_at   | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+--------------+------+-----+-------------------+----------------+

et vous souhaitez copier la structure des commandes aux nouvelles_commandes table. Voici la requête SQL pour copier la structure de la table dans une nouvelle table.

mysql> create table new_orders like orders;

mysql> describe new_orders;
+--------------+--------------+------+-----+-------------------+----------------+
| Field        | Type         | Null | Key | Default           | Extra          |
+--------------+--------------+------+-----+-------------------+----------------+
| id           | int(11)      | NO   | PRI | NULL              | auto_increment |
| product_name | varchar(255) | NO   |     | NULL              |                |
| order_date   | date         | YES  |     | NULL              |                |
| price        | int(11)      | NO   |     | NULL              |                |
| description  | text         | YES  |     | NULL              |                |
| created_at   | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+--------------+------+-----+-------------------+----------------+

Lecture bonus :comment tronquer une table dans MySQL

MySQL Copie les données d'une table vers une table existante

L'instruction ci-dessus créera une nouvelle table avec la structure de l'ancienne table. Ensuite, vous devez utiliser l'instruction INSERT pour copier les données de l'ancienne table vers la nouvelle table.

INSERT new_table
SELECT * FROM existing_table;

Voici la requête SQL pour copier les données des commandes à la table existante new_orders

mysql> insert new_orders
       select * from orders;

mysql> select * from orders;
+----+--------------+------------+-------+-------------+---------------------+
| id | product_name | order_date | price | description | created_at          |
+----+--------------+------------+-------+-------------+---------------------+
|  1 | A            | 2020-07-01 |   150 | New product | 2020-06-01 00:00:00 |
|  2 | B            | 2020-07-01 |   235 | Old product | 2020-06-15 00:00:00 |
+----+--------------+------------+-------+-------------+---------------------+

Lecture bonus :MySQL DROP VIEW

MySQL Copy Table d'une base de données à une autre

Si vous souhaitez dupliquer une table dans MySQL d'une base de données à une autre, incluez simplement les noms de base de données dans vos noms de table, comme indiqué ci-dessous en gras

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

La première instruction dupliquera la structure de la table dans MySQL de la base de données source (par exemple, source_db) à une autre (par exemple, destination_db). La deuxième instruction copiera les données d'une table à une autre.

Remplacez source_db et db_destination dans les requêtes ci-dessus avec les bases de données source et destination respectivement.

Espérons que cet article vous aidera à dupliquer une table dans MySQL. Soyez prudent lorsque vous dupliquez une table dans MySQL, avec un grand nombre d'enregistrements, car cela peut prendre beaucoup de temps et de ressources.

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !