Les tables
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 :
- la définition des colonnes,
- les contraintes d'intégrité,
- La tablespace contenant la table,
- les caractéristiques de stockage,
- le cluster contenant la table,
- les données résultant d'une éventuelle requête.
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.
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 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 ;
- une table ne peut pas contenir plus d'une colonne de ce type ;
- les colonnes de ce type ne peuvent pas apparaître dans des contraintes
d'intégrité ;
- les colonnes de ce type ne peuvent pas être indexées ;
- les colonnes de ce type ne peuvent pas apparaître dans des clauses :
WHERE,
GROUP BY,
ORDER BY ou
CONNECT BY ainsi que dans un
DISTINCT.
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.
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 :
- se créer une nouvelle table sans la colonne en question
- détruire l'ancienne table,
- donner à la nouvelle table le nom de l'ancienne.
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.
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 :
- dans tous les cas il est possible d'augmenter la taille d'une colonne ;
- il est possible de diminuer la taille, ou même de changer le type
d'une colonne vide ;
- on peut spécifier NOT NULL si la colonne ne contient aucune valeur NULL ;
- on peut dans tous les cas spécifier NULL pour autoriser les valeurs NULL.
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é.
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 ;
©
nasrlarbi@free.fr
Dernière modification :