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.