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

Dupliquer, copier ou sauvegarder des tables dans MySQL, MariaDB, Oracle, PostgreSQL, DB2 et SQLite avec Create Table As SQL

Dans les systèmes de base de données Oracle, PostgreSQL, DB2, MySQL, MariaDB et SQLite, il existe une fonctionnalité de commande intéressante appelée Créer une table en tant que ce qui permet de dupliquer facilement une table avec les données d'une autre ou de quelques autres tables. La commande SQL peut également être utilisée pour "copier et coller" une table exactement ou sauvegarder les données d'une table avant d'effectuer une requête de manipulation de données sur la table d'origine, juste au cas où le script aurait une erreur et la date de sauvegarde peut être utilisée pour restaurer l'état d'origine . Créer un tableau sous créera une nouvelle table construite à partir du contenu de l'ensemble de données ou de l'ensemble de résultats récupéré par un Select Requête SQL à partir d'une table qui existe déjà dans la base de données.

La syntaxe de l'instruction Create Table As SQL est :

CREATE TABLE table_name [ ( column_name [, ...] ) ]
             AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name

Remplacez table_name par le nom de la nouvelle table qui sera créée. Le nom de colonne est facultatif, où vous pouvez spécifier plusieurs colonnes en incluant leurs noms dans une liste délimitée par des virgules. Sinon, la structure de la nouvelle table sera basée sur les noms de colonne, les types et le nombre de colonnes renvoyés par l'instruction Select, ainsi que sur les données de ligne. Si vous spécifiez le nom de la colonne, notez qu'il doit y avoir le même nombre de colonnes spécifiées que celles renvoyées par select.

L'instruction select à la fin de la commande create table as doit être valide et le nombre de cibles sélectionnées doit correspondre au nombre de colonnes dans la liste de colonnes facultative précédant la clause AS. Il peut s'agir d'une instruction select complexe qui récupère les données de plusieurs tables. Si une liste de colonnes facultative est spécifiée entre parenthèses, l'astérisque (*) ne peut plus être utilisé dans l'instruction de sélection.

Par exemple,

CREATE TABLE demo_backup
AS SELECT * FROM demo;

L'instruction SQL ci-dessus créera une réplique exacte de la table de sauvegarde nommée demo_backup avec les données et la structure (colonnes) de la table de démonstration.

Erreur possible si vous spécifiez que la liste de colonnes facultative est :

ERREUR :CREATE TABLE/AS SELECT a un nombre de colonnes incompatible

Si vous rencontrez ce message d'erreur, cela est dû au fait que la liste facultative de colonnes entre parenthèses contient un nombre de lignes différent de celui renvoyé par l'instruction select. Vérifiez à nouveau si le nombre de colonnes spécifié est le même que les résultats attendus du jeu de résultats sélectionné.

RemarqueCertains systèmes de base de données prennent en charge la syntaxe CREATE TABLE … LIKE qui crée une table vide basée sur la définition d'une autre table, y compris les attributs de colonne et les index définis dans la table d'origine. La différence est que la syntaxe CREATE TABLE … SELECT copie également les données.