IV.2.2. Créer une table : CREATE TABLE
1. Généralités
Une table est un ensemble de lignes et de colonnes. La
création consiste à définir (en fonction de l'analyse) le
nom de ces colonnes, leur format (type), la valeur par défaut à
la création de la ligne (DEFAULT) et les règles de gestion
s'appliquant à la colonne (CONSTRAINT).
2. Création simple
Certes, la commande de création de table la plus simple ne
comportera que le nom et le type de chaque colonne de la table. 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,
...)
La commande CREATE TABLE permet de
définir une table, avec ses colonnes et ses contraintes :
CREATE TABLE nom_table {colonne|contrainte},
{colonne|contrainte_tbl}, ...
Soit, colonne définit à la fois le nom
de la colonne, mais aussi son type, sa valeur par défaut et ses
éventuelles contraintes de colonne (la colonne peut en effet accepter ou
non les valeurs nulles, certaines valeurs de validation, les doublons, ou bien
être une clé primaire ou étrangère) :
colonne:: nom_colonne {type|domaine} [DEFAULT val_default]
[contrainte_col] contrainte_col:: [NOT] NULL | CHECK (prédicat) | UNIQUE
| PRIMARY KEY | FOREIGN KEY [colonne] REFERENCES table(colonne)
spécif_référence
et où les contraintes de table permettent de
définir une clé multi-colonnes ainsi que des contraintes portant
sur plusieurs colonnes (unicité globale, validation multi-attributs ou
intégrité référentielle) :
contrainte_tbl:: CONSTRAINT nom_contrainte
{PRIMARY KEY (liste_cols) | UNIQUE | CHECK (prédicat_tbl)
| FOREIGN KEY (liste_cols) REFERENCES table(liste_cols)
spécif_référence}
70
Il sied de préciser que quand on crée une table, il
faut définir les contraintes d'intégrité que devront
respecter les données que l'on mettra dans la table.
Cas pratique : Si l'on souhaite imposer
les contraintes suivantes à la table Employés :
- les valeurs de département doivent appartenir à
l'intervalle 10..100
- les fonctions sont forcément 'Directeur', 'Analyste',
'Technicien', 'Commercial' ou 'President' - tout employé embauché
après 1986 doit gagner plus de 1000€
IV.2.3. Modifier une table : ALTER TABLE
La commande ALTER TABLE permet de modifier la
définition d'une table en y ajoutant ou en supprimant une colonne ou une
contrainte (mais elle ne permet pas de changer le nom ou le type d'une colonne,
ni d'ajouter une contrainte de ligne [NOT]NULL) :
ALTER TABLE nom_table {
ADD definition_colonne |
ADD CONSTRAINT definition_contrainte |
ALTER nom_colonne {SET DEFAULT valeur_def|DROP DEFAULT} |
DROP nom_colonne [CASCADE|RESTRICT] |
DROP CONSTRAINT nom_contrainte [CASCADE|RESTRICT] };
L'option CASCADE / RESTRICT permet de gérer
l'intégrité référentielle de la colonne ou la
contrainte.
Ajout ou modification de colonnes
ALTER TABLE nom_table {ADD/MODIFY} ([nom_colonne type
[contrainte], ...])
Cas pratique: Modifier la définition de
la table Employés pour que le salaire total dépasse
forcément 1000€ :
ALTER TABLE employes ADD CONSTRAINT ChkSalTot CHECK (salaire+comm
> 1000)
Ajout d'une contrainte de table
ALTER TABLE nom_table ADD [CONSTRAINT nom_contrainte]
contrainte
La syntaxe de déclaration de contrainte est identique
à celle vue lors de la création de table.
71
Si des données sont déjà présentes
dans la table au moment où la contrainte d'intégrité
est
ajoutée, toutes les lignes doivent vérifier la
contrainte. Dans le cas contraire, la contrainte
n'est pas posée sur la table.
Renommer une colonne
ALTER TABLE nom_table RENAME COLUMN ancien_nom TO nouveau_nom
Renommer une table
ALTER TABLE nom_table RENAME TO nouveau_nom
|