Introduction au DDL (Data Definition Language)¶
Le DDL (Data Definition Language) regroupe l’ensemble des commandes SQL permettant de définir, modifier ou supprimer les objets d’une base de données.
Définir (CREATE)¶
Pour créer un objet dans une base de données on utilise l'inscruction CREATE.
Donc, pour créer une table :
CREATE TABLE nom_table (
nom_colonne TYPE,
nom_colonne TYPE,
...
)
Règles de nommage¶
Règles de nomenclature lorsqu'on crée un objet (comme une table):
- Nom clair et significatif de maximum 128 caractères, sans abréviation
- Caractères alphanumériques (A-Z et 0-9) ainsi que _ (souligné) permis
- Doit commencer par une lettre
- Pas d'espace, pas d'accent
- Noms sans guillemets (oracle convertit tout en majuscules pour faciliter la maintenance et la manipulation)
- Ne doit pas être un mot réservé (ex.: TABLE, DATE, USER, etc.)
Règles de nomenclature pour les noms de colonnes à ajouter :
- Nom au singulier (ex.: NOM, SOLDE, TOTAL_FACTURE)
- Éviter les abréviations sauf si elles sont standardisées (ex. ID, REF).
-
Nom significatif avec le nom de la table
Pourquoi ?
Les règles de nomenclature sont différentes d'une entreprise à une autre, mais chose certaine : elles en ont toutes.
Pourquoi ajouter le nom de la table à chaque champ ?
Lorsqu'on extrait des données de deux tables ayant le même champ, ex. : Membre a un nom et Instructeur a aussi un nom... alors la base de données ne peut savoir magiquement quel nom on lui demande à moins de spécifier quelle table :
SELECT nom, nom FROM Membre, Instructeur; --Impossible de savoir quel nom extraire en premier ou en deuxièmeUne façon de l'écrire pour que ça fonctionne, serait d'utiliser le nom de la table avant chaque champ :
SELECT Membre.nom, Instructeur.nom FROM Membre, Instructeur; --Ainsi, la base de données sait quel nom aller chercher dans quel ordrePour éviter cette confusion, dans le cours, nous allons ajouter le nom de la table à chaque champ.
SELECT nomMembre, nomInstructeur FROM Membre, Instructeur;
Les types de données¶
Lorsqu'on crée une colonne dans une tbale, on doit indiquer son type.
Le type de données indique quelle sorte d’information peut être stockée (texte, nombre, date, etc.) et comment Oracle doit la gérer en mémoire.
👉 Choisir le bon type de données est essentiel pour :
- assurer l’intégrité des données,
- optimiser l’espace de stockage,
- éviter des erreurs lors des requêtes.
LES PRINCIPAUX TYPES EN ORACLE
| TYPE | Description |
|---|---|
| CHAR(n) | Chaîne de caractères de longueur fixe: n octets complétés à droite par des espaces (n<=2000).La longueur est optionnelle et est de 1 par défaut. |
| VARCHAR2(n) | Chaînes de caractères de longueur variable: n octets au maximum (n<=4000).La longueur maximale doit être fournie. |
| NUMBER(p,s) | Valeur numérique avec une précision de p chiffres dont s décimales (p<=38).La précision est optionnelle et est de 22 par défaut. Le nombre de décimales est également optionnel. |
| DATE | Date comprise entre le 1ier janvier 4712 av JC et le 31 déc 9999 ap JC, incluant les heures, minutes, secondes.Par défaut, l’heure est à 00:00:00 AM si cette information n’est pas fournie lors de la saisie des données. |
Exemple :
CREATE TABLE etudiant (
noEtudiant NUMBER(7),
prenomEtudiant VARCHAR2(50),
nomEtudiant VARCHAR2(50),
dateNaissanceEtudiant DATE
);
Il existe d'autres types, tels que :
| TYPE | Description |
|---|---|
| TIMESTAMP | Plus précis que DATE, car il ajoute aussi les fractions de seconde.Utilisé lorsque la précision est importante. |
| CLOB | Stocke de très longs textes. Utilisé pour des articles ou autres textes très longs. |
| BLOB | Stocke des données binaires. Utilisé pour des images, des fichiers, etc. |
Oracle ne possède pas de type BOOLEAN directement dans les tables
On simule alors un booléen avec :
- NUMBER(1) où on met une valeur 0 ou 1
- CHAR(1) où on met une valeur 'O' ou 'N' / 'V' ou 'F'
Modifier (ALTER)¶
On peut avoir besoin de modifier un objet, comme une table, pour redéfinir ses colonnes, leur type, leurs contraintes, ou encore les propriétés de l'objet.
On modifie une table à l'aide de l'instruction ALTER.
Exemples :
- Ajouter une ou des colonnes à une table :
ALTER TABLE nomTable
ADD nomColonne Type;
ALTER TABLE nomTable
ADD (
nomColonne Type,
nomColonne Type
);
- Modifier le type d’une colonne :
ALTER TABLE nomTable
MODIFY nomColonne Type;
- Renommer une colonne :
ALTER TABLE nomTable
RENAME COLUMN nomColonne TO nouveauNomColonne;
- Supprimer une colonne :
ALTER TABLE nomTable
DROP COLUMN nomColonne;
Pour renommer une table, on utilise plutôt l'instruction Rename.
ALTER TABLE table_name
RENAME TO new_table_name;
Afficher (DESCRIBE)
Pour valider la structure d'une table, on utilise l'instruction Describe ou DESC.
DESC nomTable;
Supprimer (DROP)¶
La suppression d’un objet comme une table se fait avec la commande DROP.
Exemples :
DROP TABLE nomTable;
Nous verrons qu'une table aura des contraintes pour assurer l'intégrité des données. Ainsi, une table ne pourra être supprimée si les contraintes l'en empêchent.
Pour supprimer une table ainsi que ses contraintes :
DROP TABLE nomTable CASCADE CONSTRAINTS;
Cette commande supprime la table et toutes les contraintes d’intégrité référentielle que d’autres tables pourraient avoir sur la clé primaire ou un index de la table supprimée.