Menu

   Next

Index/help


Les tables

Créer une table

La table est la structure de base contenant les données des utilisateurs. Quand on crée une table, on peut spécifier les informations suivantes :

Création simple

La commande de création de table la plus simple ne comportera que le nom et le type de chaque colonne de la table. L'on peut créer une table par la commande CREATE TABLE en spécifiant le nom et le type de chaque colonne. A la création, la table sera vide mais un certain espace lui sera alloué. La syntaxe est la suivante :

CREATE TABLE nom_table
       (nom_col1 TYPE1,
        nom_col2 TYPE2,
        ...)

L'option NOT NULL assure qu'ORACLE interdit lors d'un INSERT ou d'un UPDATE que cette colonne contienne la valeur NULL, par défaut elle est autorisée.

Création avec Insertion de données

On peut insérer des données dans une table lors de sa création par la commande suivante :

CREATE TABLE nom_table
       [(nom_col1,
         nom_col2,
	 ...)]
AS SELECT...

On peut ainsi, en un seul ordre SQL créer une table et la remplir avec des données provenant du résultat d'un SELECT. On n'a pas besoin alors de spécifier de type pour les colonnes : les types des données sont ceux provenant du SELECT. Si des conversions de type sont à faire, on peut dans le SELECT utiliser les fonctions TO_CHAR, TO_DATE, TO_NUMBER. Par défaut les noms des colonnes de la nouvelle table sont les noms des colonnes du SELECT. Si des expressions apparaissent dans le SELECT, les colonnes correspondantes doivent impérativement être renommées.
Le SELECT peut contenir des fonctions de groupes mais pas d'ORDER BY car les lignes d'une table ne peuvent pas être classées. On peut, et même on doit, quand on crée une table définir les contraintes d'intégrité que devront respecter les données que l'on mettra dans la table (voir un peu plus bas).

Les types de données

Les types de données peuvent être :

 NUMBER[(longueur,[précision])

Ce type de données permet de stocker des données numériques à la fois entières et réelles dont la valeur est comprise entre 10^-130 et 10^125 avec une précision de 38 chiffres.

longueur

précise le nombre maximum de chiffres significatifs stockés (par défaut 38),

précision

donne le nombre maximum de chiffres après la virgule (par défaut 38), sa valeur peut être comprise entre -84 et 127. Une valeur négative signifie que le nombre est arrondi à gauche de la virgule.

 

 

 CHAR(longueur)

Ce type de données permet de stocker des chaînes de caractères de longueur fixe. Longueur doit être inférieur à 255, sa valeur par défaut est 1.

 VARCHAR(longueur)

Ce type de données permet de stocker des chaînes de caractères de longueur variable. Longueur doit être inférieur à 2000, il n'y a pas de valeur par défaut.

 DATE

Ce type de données permet de stocker des données constituées d'une date et d'une heure.

 RAW(longueur)

Ce type de données permet de stocker des caractères non imprimables.

 LONG

Ce type de données permet des stocker des chaînes de caractères de longueur variable et inférieure à 2^31 -1. Les colonnes de ce type sont soumises à certaines restrictions ;

Contraintes d'intégrité

A la création d'une table, les contraintes d'intégrité se déclarent de la façon suivante :

CREATE TABLE nom_table (
nom_col_1 type_1,
nom_col_2 type_2,
...
nom_col_n type_n
CONSTRAINT [nom_contrainte_1] contrainte_1,
CONSTRAINT [nom_contrainte_2] contrainte_2,
...
CONSTRAINT [nom_contrainte_m] contrainte_m
);

Ou bien de la façon suivante :

CREATE TABLE nom_table (
nom_col_1 type_1  CONSTRAINT [nom_contrainte_1_1] contrainte_1_1
                  CONSTRAINT [nom_contrainte_1_2] contrainte_1_2
		  ...
                  CONSTRAINT [nom_contrainte_1_m] contrainte_1_m,

nom_col_2 type_2  CONSTRAINT [nom_contrainte_2_1] contrainte_2_1
                  CONSTRAINT [nom_contrainte_2_2] contrainte_2_2
		  ...
                  CONSTRAINT [nom_contrainte_2_p] contrainte_2_p,

...
nom_col_n type_n  CONSTRAINT [nom_contrainte_n_1] contrainte_n_1
                  CONSTRAINT [nom_contrainte_n_2] contrainte_n_2
		  ...
                  CONSTRAINT [nom_contrainte_n_q] contrainte_n_q
);

Les contraintes différentes que l'on peut déclarer sont les suivantes :

NOT NULL

La colonne ne peut pas contenir de valeurs NULL.

UNIQUE

Chaque ligne de la table doit avoir une valeur différente ou NULL pour cette (ou ces) colonne.

PRIMARY KEY

Chaque ligne de la table doit avoir une valeur différente pour cette (ou ces) colonne. les valeurs NULL sont rejetées.

FOREIGN KEY

Cette colonne fait référence à une colonne clé d'une autre table.

CHECK

Permet de spécifier les valeurs acceptables pour une colonne.

Modifier une table

On peut modifier dynamiquement la définition d'une table grace a la commande ALTER TABLE. Deux types de modifications sont possibles : ajout d'une colonne et modification d'une colonne existante. Il n'est pas possible de supprimer une colonne. Par contre une colonne qui n'est plus utilisée peut être mise à la valeur NULL, auquel cas elle n'occupe plus d'espace disque. Si on désire vraiment supprimer une colonne, il faut :  

Ajouter une colonne

La commande suivante permet d'ajouter une ou plusieurs colonnes à une table existante :

ALTER TABLE nom_table ADD
      (nom_col1 TYPE1,
       nom_col2 TYPE2,
       ...)

Les types possibles sont les mêmes que ceux décrits avec la commande CREATE TABLE. Si la table contient déjà des lignes, la nouvelle colonne aura des valeurs NULL pour les lignes existantes.

Modifier une colonne

Il est possible de modifier la définition d'une colonne, à condition que la nouvelle définition soit compatible avec le contenu de la colonne et en respectant les contraintes suivantes :

Supprimer une table

La commande DROP TABLE permet de supprimer une table, sa syntaxe est la suivante :

DROP TABLE nom_table ;

La table nom_table est alors supprimée. La définition de la table ainsi que son contenu sont détruits, et l'espace occupé par la table est libéré.

Renommer une table

On a la possibilité de changer le nom d'une table par la commande RENAME, la syntaxe est la suivante :

RENAME ancien_nom TO nouveau_nom ;



Menu

   Next

Index/help