CREATE TABLE |
Créer une table |
|---|---|
| Oracle Database SQL |
Syntaxe
|
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table ( column datatype [DEFAULT expr] [column_constraint(s)[,…]] [,column datatype [,…]] ) [table_constraint [,…]] [table_ref_constraint [,…]] [ON COMMIT {DELETE|PRESERVE} ROWS] [ PCTFREE int PCTUSED int INITTRANS int MAXTRANS int STORAGE storage_clause TABLESPACE tablespace [LOGGING|NOLOGGING] ] [COMPRESS int|NOCOMPRESS] [LOB_storage_clause][varray_clause][ NESTED TABLE {nested_item | COLUMN_VALUE} [ [ELEMENT] IS OF TYPE (ONLY type) ]] | [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]] STORE AS storage_table [RETURN AS {LOCATOR|VALUE} ] ] [ [XMLTYPE [COLUMN] column [STORE AS OBJECT RELATIONAL] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Segname (LOB_Params)]] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Params] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] ] Partitioning_clause [[NO]CACHE] [[NO]ROWDEPENDENCIES] [[NO]MONITORING] [PARALLEL parallel_clause] [ENABLE enable_clause | DISABLE disable_clause] {ENABLE|DISABLE} ROW MOVEMENT [AS subquery] |
|
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table ( column datatype [DEFAULT expr] [column_constraint(s)[,…]] [,column datatype [,…]] ) [table_constraint [,…]] [table_ref_constraint [,…]] [ON COMMIT {DELETE|PRESERVE} ROWS] CLUSTER cluster_name (col1, col2,... ) [LOB_storage_clause][varray_clause][ NESTED TABLE {nested_item | COLUMN_VALUE} [ [ELEMENT] IS OF TYPE (ONLY type) ]] | [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]] STORE AS storage_table [RETURN AS {LOCATOR|VALUE} ] ] [ [XMLTYPE [COLUMN] column [STORE AS OBJECT RELATIONAL] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Segname (LOB_Params)]] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Params] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] ] Partitioning_clause [[NO]CACHE] [[NO]ROWDEPENDENCIES] [[NO]MONITORING] [PARALLEL parallel_clause] [ENABLE enable_clause | DISABLE disable_clause] {ENABLE|DISABLE} ROW MOVEMENT [AS subquery] |
|
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table ( column datatype [DEFAULT expr] [column_constraint(s)] [,column datatype [,…]]] ) [table_constraint [,…]] [table_ref_constraint [,…]] [ON COMMIT {DELETE|PRESERVE} ROWS] ORGANIZATION {HEAP [ PCTFREE int PCTUSED int INITTRANS int MAXTRANS int STORAGE storage_clause TABLESPACE tablespace [LOGGING|NOLOGGING] ] [COMPRESS int|NOCOMPRESS] | INDEX [ storage_option(s) {MAPPING TABLE | NOMAPPING} [PCTTHRESHOLD int] [COMPRESS int|NOCOMPRESS] [ [INCLUDING column_name] OVERFLOW [storage_option(s)] ] ] | EXTERNAL ( [TYPE access_driver_type] DEFAULT DIRECTORY directory [ACCESS PARAMETERS {USING CLOB subquery | (opaque_format_spec) }] LOCATION (directory:'location_specifier' [,directory2:'location_specifier2'...) ) [REJECT LIMIT {int|UNLIMITED}] } [LOB_storage_clause][varray_clause][ NESTED TABLE {nested_item | COLUMN_VALUE} [ [ELEMENT] IS OF TYPE (ONLY type) ]] | [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]] STORE AS storage_table [RETURN AS {LOCATOR|VALUE} ] ] [ [XMLTYPE [COLUMN] column [STORE AS OBJECT RELATIONAL] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Segname (LOB_Params)]] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Params] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] ] Partitioning_clause [[NO]CACHE] [[NO]ROWDEPENDENCIES] [[NO]MONITORING] [PARALLEL parallel_clause] [ENABLE enable_clause | DISABLE disable_clause] {ENABLE|DISABLE} ROW MOVEMENT [AS subquery] |
|
CREATE TABLE [schema.]table OF XMLTYPE [ [XMLTYPE [COLUMN] column [STORE AS OBJECT RELATIONAL] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Segname (LOB_Params)]] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] [XMLTYPE [COLUMN] column [STORE AS CLOB LOB_Params] ] [[XMLSCHEMA xmlschema_URL] ELEMENT {element |xmlschema_URL#element}] ] |
Paramètres
| Nom | Description |
|---|---|
| GLOBAL TEMPORARY | Ce paramètre permet de créer une table permanente ou temporaire. Une table temporaire conserve les données par session ou transaction. |
| [schema.]table | Ce paramètre permet d'indiquer le nom complet de la table, optionnellement préfixé par le schéma. |
| column datatype [DEFAULT expr] [column_constraint(s)] | Ce paramètre permet de définir une colonne avec son type, une valeur par défaut et des contraintes (NOT NULL, UNIQUE,...). |
| table_constraint | Ce paramètre permet d'indiquer la contrainte de table comme PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK. |
| table_ref_constraint | Ce paramètre permet d'indiquer la contrainte de référence (exemple : FOREIGN KEY). |
| ON COMMIT {DELETE PRESERVE} ROWS | Ce paramètre permet de définir le comportement des lignes de la table temporaire à la fin de la transaction. |
| cluster_name (col1, col2,...) | Ce paramètre permet d'indiquer l'association de la table à un unité d'allocation Oracle. |
| PCTFREE / PCTUSED | Ce paramètre permet de contrôler la gestion de l'espace libre dans les blocs de données. |
| INITTRANS / MAXTRANS | Ce paramètre permet de définir le nombre initial et maximum de transactions simultanées par bloc. |
| storage_clause | Ce paramètre permet de préciser les options d'entreposage (INITIAL, NEXT, MINEXTENTS,...). |
| tablespace | Ce paramètre permet d'indiquer le tablespace où la table est entreposée. |
| LOGGING / NOLOGGING | Ce paramètre permet de définir si les opérations sur la table sont enregistrées dans le journal de redo. |
| COMPRESS int / NOCOMPRESS | Ce paramètre permet d'activer ou non la compression des données de la table. |
| LOB_storage_clause | Ce paramètre permet de définir l'entreposage des objets LOB (Large Objects). |
| varray_clause | Ce paramètre permet de gérer l'entreposage des tableaux VARRAY. |
| NESTED TABLE ... STORE AS ... | Ce paramètre permet l'entreposage des tables imbriquées dans une table séparée. |
| [ELEMENT] IS OF TYPE (ONLY type) | Ce paramètre permet d'indiquer le type des éléments stockés pour types objets. |
| [NOT] SUBSTITUTABLE AT ALL LEVELS | Ce paramètre permet de définir si les sous-types peuvent être substitués au type parent. |
| RETURN AS {LOCATOR VALUE} | Ce paramètre permet de contrôler comment les objets LOB ou XML sont retournés (référence ou valeur). |
| XMLTYPE [COLUMN] column [STORE AS ...] | Ce paramètre permet de définir une colonne de type XML et son mode d'entreposage. |
| [XMLSCHEMA xmlschema_URL] ELEMENT ... | Ce paramètre permet de lire la colonne XML à un schéma XML. |
| Partitioning_clause | Ce paramètre permet de définir le partitionnement de la table (RANGE, HASH,...). |
| [NO]CACHE | Ce paramètre permet de contrôler si les blocs de la table sont gardés en cache. |
| [NO]ROWDEPENDENCIES | Ce paramètre permet d'activer ou de désactiver le suivi des dépendances de lignes. |
| [NO]MONITORING | Ce paramètre permet d'activer ou non le suivi d'utilisation de la table pour l'optimiseur. |
| PARALLEL parallel_clause | Ce paramètre permet d'indiquer les options pour l'accès parallèle. |
| ENABLE/DISABLE enable_clause | Ce paramètre permet d'activer ou désactiver certaines contraintes. |
| ENABLE/DISABLE ROW MOVEMENT | Ce paramètre permet ou non le déplacement des lignes entre partitions. |
| subquery | Ce paramètre permet de créer une table à partir du résultat d'une sous-requête. |
| ORGANIZATION {HEAP INDEX EXTERNAL} | Ce paramètre permet de définir l'organisation physique de la table. |
| EXTERNAL (...) | Ce paramètre permet de créer une table externe accédant à des fichiers en dehors de la base. |
| REJECT LIMIT {int UNLIMITED} | Ce paramètre permet de limiter le nombre d'erreurs acceptées lors du chargement des données dans une table externe. |
Description
Cette instruction permet de créer une table dans la base de données spécifié ou courante.
Remarques
- CREATE TABLE permet la définition complète de la structure d'une table : L'instruction CREATE TABLE permet de définir les colonnes, leurs types, des valeurs par défaut (DEFAULT), et des contraintes (comme NOT NULL, UNIQUE, ou CHECK). Elle constitue la première étape dans la modélisation d'une base de données relationnelle et reflète la logique métier via sa structure.
- Les contraintes peuvent être définies au niveau colonne ou table : On peut ajouter des contraintes de type PRIMARY KEY, FOREIGN KEY, CHECK ou UNIQUE à la fois dans la définition de colonne et à la fin, en tant que contraintes de table. Cela permet d'exprimer les règles d'intégrité à différents niveaux de granularité, ce qui est important pour garantir la cohérence des données.
- GLOBAL TEMPORARY TABLE permet de créer des tables temporaires : La clause GLOBAL TEMPORARY permet de créer des tables dont les données ne persistent que pendant une session ou une transaction. Les lignes peuvent être automatiquement supprimées à la fin d'une transaction (ON COMMIT DELETE ROWS) ou conservées pendant toute la session (ON COMMIT PRESERVE ROWS).
- L'entreposage physique peut être personnalisé avec des clauses comme PCTFREE et TABLESPACE : Oracle permet un contrôle précis du stockage physique via des paramètres comme PCTFREE, PCTUSED, INITTRANS, MAXTRANS, ainsi que le choix du TABLESPACE. Cela permet d'optimiser les performances en fonction de la fréquence des insertions, des mises à jour et de la taille attendue des lignes.
- L'instruction peut inclure la clause AS subquery pour créer une table à partir d'un ensemble de données : Il est possible de créer une table directement à partir du résultat d'une requête SQL via la clause AS SELECT .... Cela est utile pour copier des données, créer des tables temporaires ou dérivées, tout en héritant de la structure de données de la requête source.
- Il est possible de créer des tables externes avec la clause ORGANIZATION EXTERNAL : Les tables externes permettent de lire des fichiers plats (CSV, texte,...) comme s'ils étaient des tables Oracle, sans importer physiquement les données. Elles sont définies avec un ACCESS DRIVER, un DIRECTORY et un format de fichier. Très utile pour l'intégration de données externes.
- Les tables peuvent être partitionnées pour améliorer les performances : Oracle permet de partitionner les tables selon différentes méthodes (RANGE, LIST, HASH, COMPOSITE) via la clause PARTITION BY. Cela permet de répartir les données sur plusieurs segments de stockage, améliorant ainsi les temps d'accès, la maintenance et la gestion des gros volumes.
- Les colonnes peuvent contenir des objets XML grâce à XMLTYPE : Oracle prend en charge le type XMLTYPE pour stocker et interroger des données XML. On peut spécifier si le XML est entreposé sous forme relationnelle ou en CLOB. Cela est très utile dans les architectures orientées services (SOA) ou pour manipuler des documents structurés en XML directement dans la base.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015