Parfois, vous devrez peut-être copier la table dans MySQL. Il existe de nombreuses façons de copier une table dans MySQL. Voici les étapes pour copier la table dans MySQL. Vous pouvez les utiliser pour copier une table dans une autre table, copier une table d'une base de données à une autre, copier une structure de table, copier une table avec des données, copier une structure de table avec un index ou copier une table d'un serveur à un autre.
Comment copier une table dans MySQL
Voici comment copier une table dans MySQL. Il existe différents cas d'utilisation pour copier une table dans MySQL. Nous allons les examiner en détail.
MySQL Copier les données d'une table vers une nouvelle table
En règle générale, vous devez copier une table dans MySQL vers une nouvelle table. Dans ce cas, vous devez utiliser l'instruction CREATE TABLE et SELECT comme indiqué ci-dessous
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Dans la requête ci-dessus, vous devez spécifier les noms de la table existante avec les colonnes que vous souhaitez copier, ainsi que le nouveau nom de la table. MySQL remplira votre nouvelle table avec le résultat de votre instruction SELECT.
Disons que vous avez une table existante product_list
mysql> select * from product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Voici la requête SQL pour copier product_list table dans une nouvelle table appelée new_product_list
mysql> create table new_product_list select * from product_list; mysql> select * from new_product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Veuillez 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 la clause IF NOT EXIST dans l'instruction CREATE TABLE, comme indiqué ci-dessous.
mysql> create table if not exist new_product_list select * from product_list;
Bonus Read :Comment ajouter une contrainte NOT NULL dans MySQL
Si vous souhaitez copier uniquement des données partielles d'une table vers une nouvelle table, c'est-à-dire certaines lignes mais pas toutes, 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 product_list table dans une nouvelle table appelée new_products2
mysql> create table new_products2 select * from product_list where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Lecture bonus :comment ajouter une contrainte par défaut dans MySQL
MySQL Copier la structure de la table dans une nouvelle table
Les requêtes SQL 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 (id)
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Comme vous pouvez le voir, la table new_orders a également un champ de clé primaire id. L'instruction ci-dessus ne copiera que la structure de la table mais pas les données. Vous devez copier les données séparément, comme indiqué dans la section suivante.
Lecture bonus :MySQL sélectionne les N premières lignes par groupe
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, mais ce sera une table vide. 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 :copie de la base de données MySQL
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 tout en utilisant les requêtes SQL ci-dessus, 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 SQL ci-dessus dupliquera la structure de la table dans MySQL à partir de la base de données source (par exemple, source_db ) à un 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 à copier une table dans MySQL. Soyez prudent lorsque vous copiez 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 !