CREATE TABLE Oracle : Guide Complet avec Exemples SQL

Apprenez à utiliser CREATE TABLE dans Oracle SQL : syntaxe complète, exemples pratiques, contraintes et bonnes pratiques pour créer vos tables efficacement.

Illustration du tutoriel SQL Oracle : CREATE TABLE Oracle : Guide Complet avec Exemples SQL

CREATE TABLE Oracle SQL : Syntaxe, Exemples et Bonnes Pratiques

La commande CREATE TABLE Oracle est l’une des instructions fondamentales du langage SQL DDL (Data Definition Language). Elle permet de définir la structure d’une nouvelle table dans une base de données relationnelle. Que vous soyez développeur, DBA ou analyste, maîtriser CREATE TABLE sous Oracle est indispensable pour concevoir des schémas robustes, performants et maintenables en environnement professionnel.

Publicité

Définition et utilisation de CREATE TABLE dans Oracle

L’instruction CREATE TABLE permet de créer une nouvelle table dans un schéma Oracle en définissant ses colonnes, leurs types de données et leurs contraintes d’intégrité. C’est le point de départ de toute modélisation de base de données relationnelle.

En entreprise, CREATE TABLE est utilisée dans de nombreux contextes métier :

  • Gestion commerciale : création de tables pour les clients, commandes, produits.
  • Ressources humaines : structuration des données des employés, contrats, départements.
  • Finance : modélisation des transactions, factures, comptes bancaires.
  • Logistique : suivi des stocks, livraisons, fournisseurs.

Sous Oracle, la table est créée dans le schéma de l’utilisateur connecté par défaut, ou dans un schéma cible si des privilèges suffisants ont été accordés. Les tables sont stockées dans un tablespace, un espace logique de stockage propre à Oracle.

Syntaxe complète de CREATE TABLE Oracle SQL

Voici la syntaxe générale de l’instruction CREATE TABLE dans Oracle :

CREATE TABLE [schema.]nom_table
(
  nom_colonne1  type_donnée  [DEFAULT valeur]  [contrainte_colonne],
  nom_colonne2  type_donnée  [DEFAULT valeur]  [contrainte_colonne],
  ...
  [contrainte_table]
)
[TABLESPACE nom_tablespace]
[STORAGE (paramètres_stockage)]
[LOGGING | NOLOGGING]
[COMPRESS | NOCOMPRESS];

Explication des paramètres essentiels

  • [schema.]nom_table : nom de la table, précédé optionnellement du schéma propriétaire (ex. : RH.EMPLOYES).
  • type_donnée : type Oracle de la colonne. Les types les plus courants sont :
    • NUMBER(p, s) : nombre décimal avec précision et échelle.
    • VARCHAR2(n) : chaîne de caractères variable (jusqu’à 4000 octets).
    • DATE : date et heure (jour, mois, année, heures, minutes, secondes).
    • CHAR(n) : chaîne de longueur fixe.
    • CLOB / BLOB : données texte ou binaires volumineuses.
    • TIMESTAMP : date et heure avec fraction de secondes.
  • DEFAULT valeur : valeur insérée automatiquement si aucune valeur n’est fournie.
  • Contraintes de colonne :
    • NOT NULL : interdit les valeurs nulles.
    • UNIQUE : impose l’unicité des valeurs.
    • PRIMARY KEY : identifiant unique de chaque ligne.
    • REFERENCES : clé étrangère vers une autre table.
    • CHECK : valide une condition logique.
  • TABLESPACE : précise dans quel espace de stockage Oracle la table sera physiquement créée.
  • NOLOGGING : améliore les performances lors de chargements massifs en réduisant les écritures dans les redo logs.

Exemples pratiques de CREATE TABLE Oracle SQL

Exemple 1 – Création d’une table CLIENTS (contexte commercial)

-- Création de la table CLIENTS dans le schéma VENTES
-- Cette table stocke les informations des clients d'une entreprise commerciale

CREATE TABLE VENTES.CLIENTS
(
  CLIENT_ID     NUMBER(10)       CONSTRAINT PK_CLIENTS PRIMARY KEY,
  NOM           VARCHAR2(100)    NOT NULL,
  PRENOM        VARCHAR2(100)    NOT NULL,
  EMAIL         VARCHAR2(200)    CONSTRAINT UQ_EMAIL UNIQUE,
  TELEPHONE     VARCHAR2(20),
  DATE_CREATION DATE             DEFAULT SYSDATE NOT NULL,
  STATUT        CHAR(1)          DEFAULT 'A'
                                 CONSTRAINT CHK_STATUT CHECK (STATUT IN ('A', 'I', 'S'))
)
TABLESPACE USERS
LOGGING;

Analyse de l’exemple :

  • NUMBER(10) pour l’identifiant client, défini comme clé primaire nommée PK_CLIENTS.
  • VARCHAR2(100) NOT NULL impose que le nom et le prénom soient toujours renseignés.
  • DEFAULT SYSDATE insère automatiquement la date du jour à la création du client.
  • La contrainte CHECK limite le statut aux valeurs ‘A’ (Actif), ‘I’ (Inactif) ou ‘S’ (Suspendu).

Exemple 2 – Création d’une table COMMANDES avec clé étrangère (contexte commercial)

-- Création de la table COMMANDES liée à la table CLIENTS
-- Chaque commande est associée à un client existant via une clé étrangère

CREATE TABLE VENTES.COMMANDES
(
  COMMANDE_ID    NUMBER(10)       CONSTRAINT PK_COMMANDES PRIMARY KEY,
  CLIENT_ID      NUMBER(10)       NOT NULL
                                  CONSTRAINT FK_CMD_CLIENT
                                  REFERENCES VENTES.CLIENTS(CLIENT_ID)
                                  ON DELETE CASCADE,
  DATE_COMMANDE  DATE             DEFAULT SYSDATE NOT NULL,
  MONTANT_HT     NUMBER(12, 2)    NOT NULL,
  MONTANT_TTC    NUMBER(12, 2)
                                  CONSTRAINT CHK_MONTANT CHECK (MONTANT_TTC >= MONTANT_HT),
  STATUT_CMD     VARCHAR2(20)     DEFAULT 'EN_ATTENTE' NOT NULL
)
TABLESPACE USERS
LOGGING;

Analyse de l’exemple :

  • La contrainte FK_CMD_CLIENT relie chaque commande à un client existant dans VENTES.CLIENTS.
  • ON DELETE CASCADE supprime automatiquement les commandes si le client est supprimé.
  • NUMBER(12, 2) est adapté pour stocker des montants financiers avec deux décimales.
  • La contrainte CHECK garantit que le montant TTC est toujours supérieur ou égal au montant HT.
Publicité

Erreurs courantes avec CREATE TABLE Oracle

Erreur ORA-00955 : le nom est déjà utilisé par un objet existant

C’est l’erreur la plus fréquente lors de l’exécution d’un CREATE TABLE. Elle se produit lorsqu’une table portant le même nom existe déjà dans le schéma cible.

Message d’erreur Oracle :

ORA-00955: name is already used by an existing object

Cause : Une table (ou tout autre objet : vue, séquence, synonyme…) portant ce nom existe déjà dans le schéma.

Solution : Vérifiez l’existence de la table avant de la créer, ou supprimez-la préalablement si nécessaire :

-- Vérification de l'existence de la table avant création
SELECT TABLE_NAME
FROM ALL_TABLES
WHERE OWNER = 'VENTES'
  AND TABLE_NAME = 'CLIENTS';

-- Suppression conditionnelle (à utiliser avec précaution en production)
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE VENTES.CLIENTS CASCADE CONSTRAINTS PURGE';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE != -942 THEN
      RAISE;
    END IF;
END;
/

En environnement de développement, cette approche permet de réexécuter les scripts de création sans erreur. En production, préférez une procédure de migration contrôlée.

Résumé

Point cléDescription
InstructionCREATE TABLE – appartient au DDL (Data Definition Language)
UtilitéDéfinir la structure d’une table (colonnes, types, contraintes)
Types courants OracleNUMBER, VARCHAR2, DATE, CHAR, CLOB, TIMESTAMP
Contraintes principalesPRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK
Paramètres Oracle spécifiquesTABLESPACE, STORAGE, LOGGING/NOLOGGING, COMPRESS
Erreur fréquenteORA-00955 : objet de même nom déjà existant
Nommage des contraintesToujours nommer explicitement les contraintes pour faciliter la maintenance

Bonnes pratiques Oracle

  1. Nommer toutes les contraintes explicitement : utilisez une convention de nommage cohérente (ex. : PK_, FK_, UQ_, CHK_) plutôt de laisser Oracle générer des noms système. Cela facilite grandement les opérations de maintenance, notamment lors de la suppression ou modification de contraintes via ALTER TABLE.
  2. Spécifier le TABLESPACE cible : ne laissez pas Oracle placer la table dans le tablespace par défaut de l’utilisateur sans réflexion. En production, définissez explicitement le tablespace afin de contrôler la répartition du stockage, les performances I/O et les politiques de sauvegarde.

Aller plus loin

Maintenant que vous maîtrisez la commande CREATE TABLE dans Oracle SQL, voici trois sujets complémentaires pour approfondir vos compétences :

Vidéo : Vidéo SQL ORACLE – 01 : Les Tables (CREATE ALTER TABLE).

https://www.youtube.com/watch?v=3du8gnABgPk[/embed]

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Publicité