Le langage SQL : DDL : CREATE


Le mot clé CREATE permet de créer des objets :

  • base de données
  • table
  • domaine
  • index


CREATE DATABASE

Comme son nom l'indique, cette instruction permet de créer la base de donnée.

Elle exige que le nom de la base soit donné en argument.

Elle exige également de disposer de droits d'administration sur la base de donnée.

Lorsque la base est créée (instruction exécutée, on ne peut pas la créer une deuxième fois.


  • Exemple : CREATE DATABASE `ludobd`


CREATE TABLE

Cette instruction permet de créer la table e de lui associer les différents champs ainsi que leurs propriétés.

La syntaxe générale est :

CREATE TABLE `nomDeLaTable` (

`champ1` type,

`champ2` type,

`champ3` type,

...

`champn` type

)

Les types disponibles sont décrits dans le chapitre précédent.


Pour chaque champ il est également possible de définir des options supplémentaires :

      • NOT NULL : empêche d’enregistrer une valeur nulle pour un champ.
      • DEFAULT : attribuer une valeur par défaut si aucune donnée n’est indiquée pour ce champ lors de l’ajout d’un enregistrement.
      • PRIMARY KEY : indiquer si le champ est considéré comme clé primaire pour un index.
      • UNIQUE KEY : spécifie que la donnée saisie doit être unique pour ce champ dans la table.
      • AUTO_INCREMENT : indique que chaque nouvel enregistrement de la donnée numérique est incrémenté (+1). Particulièrement utile pour les champs d'index.




Pour définir une contrainte dans une table on utilisera le mot clé CONSTRAINT selon la syntaxe

CONSTRAINT nomDeLaContrainte FOREIGN KEY (nomCleEtrangere)

REFERENCES tableLiée (nomDuChampLié);


Remarque : un commentaire peut être lié à la table grâce au mot clé COMMENT. Ce commentaire ne sera visible qu'avec la commande SHOW.

CREATE DOMAIN

Un domaine est l’équivalent d'un type structuré. Il permet de définir un nouveau type de données.

Par exemple les jours de la semaine.


 CREATE DOMAIN nomDomaine

       AS type

DEFAULT ValeurDéfaut

CONSTRAINT nomContrainte CHECK prédicat;


Exemple : Domaine permettant de définir le nom d'un jour :

CREATE DOMAIN d_jour AS CHAR(8)

DEFAULT 'Dimanche'

CONSTRAINT c_d_jour CHECK

 (VALUE IN ('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'));


La commande CHECK permet de vérifier le respect d'une contrainte.

Exemple d'un champ eMail nécessitant le caractère '@' :

...

eMail VARCHAR(50),

UNIQUE KEY `eMail` (`eMail`),

CONSTRAINT `email_c` CHECK (`email` LIKE (`%@%.%`))

Attention MySQL ne reconnait  l'instruction CHECK qu'à partir de la version 8.0.15


CREATE INDEX

Il est plus facile et rapide de retrouver des données d'un champ indexé. Voila pourquoi, on procède parfois à l'indexation de champs particuliers.

CREATE INDEX idx_adherent ON `adherents` (`nom`)

On peut aussi combiner plusieurs champs dans un même index :

CREATE INDEX idx_adherent ON `adherents` (`nom`,`prenom`)

Remarques :

  • Les index sont invisibles pour les utilisateurs
  • La mise à jour d'une table avec des index prend plus de temps que la mise à jour d'une table sans (parce que les indices ont également besoin d' une mise à jour). Il ne faut donc créer que des index réellement nécessaires.