La commande CREATE TABLE permet de créer une table avec des colonnes d'un type de données spécifiés.
CREATE TABLE nom_table ( nom_col type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ], [ nom_colN type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ] ] ); |
Avant d'exécuter une telle commande, il est nécessaire de rassembler certains éléments indispensables.
Un nom de table unique doit être précisé afin de l'identifier dans la base de données.
Pour chaque colonne à créer à l'intérieur de la table, il faut spécifier des noms de colonnes distincts.
Chaque colonne nécessitant un type de donnée, il faut indiquer le type de données à assigner à chacune des colonnes à créer.
Toute table nécessitant une colonne faisant office de clé primaire, il faut impérativement en déterminer une avec une contrainte d'unicité UNIQUE.
Des contraintes peuvent être également spécifier pour les valeurs d'une colonne lors de la création de la table.
Contrainte | Description |
---|---|
NULL | indique que la colonne peut contenir des valeurs nulles. |
NOT NULL | indique que la colonne ne peut contenir de valeurs nulles. |
PRIMARY KEY | indique que la colonne constitue la clé primaire de la table. |
UNIQUE | impose que chaque valeur de la colonne doit être unique. |
Plus précisément, les contraintes peuvent être appliquées au moyen de la clause CONSTRAINT.
nom_colonne type [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } ] | [ [ FOREIGN KEY ] REFERENCES table_référence [ ( colonne_référence ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] | [ CHECK ( expression_logique ) ] } [ ,...n ]
Une clé étrangère sur une colonne est déclarée par l'intermédiaire de FOREIGN KEY qui pointe la clé primaire de la table de référence. Ainsi, les tables mises en jeu tissent des liens d'intégrité référentielle entre elles. D'ailleurs, les éventuelles modifications (DELETE ou UPDATE) sur la table créée peuvent être appliquées en cascade (CASCADE), c'est-à-dire sur chacune des tables liées, ou à elle seule (NO ACTION).
Une table peut être créée à partir d'une autre table mais également d'une vue.
ExempleCREATE TABLE nom_table AS SELECT nom_colonne,...,nom_colonneN FROM nom_table | nom_vue WHERE nom_colonne = 'valeur';
CREATE TABLE "Fiche_Personne" (ID NUMBER(8) UNIQUE, Sexe VARCHAR(50) NOT NULL, Nom VARCHAR(50) NOT NULL, Prenom VARCHAR(50) NOT NULL, Snd_Prenom VARCHAR(50) NULL, Adresse VARCHAR(100) NOT NULL, Code_Postal NUMBER(5) NOT NULL, Ville VARCHAR(30) NOT NULL, Telephone NUMBER(10) NULL, eMail VARCHAR(30) NULL) Engendre la création de la table ci-dessous : |
Fiche_Personne | |||||||||
---|---|---|---|---|---|---|---|---|---|
id | Sexe | Nom | Prenom | Snd_ Prenom |
Adresse | CP | Ville | Telephone | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |