SQL PRIMARY KEY

Dans le langage SQL la « PRIMARY KEY », autrement la clé primaire, permet d’identifier chaque enregistrement dans une table de base de données. Chaque enregistrement de cette clé primaire doit être UNIQUE et ne doit pas contenir de valeur NULL.

La clé primaire est un index, chacune des tables ne peut contenir qu’une seule clé primaire, composée d’une ou plusieurs colonnes.

L’usage le plus fréquent consiste à créer une colonne numérique qui s’incrémente automatiquement à chaque enregistrement grâce à AUTO_INCREMENT.

Syntaxe

L’usage courant de PRIMARY KEY peut être effectué lors de la création d’une table à l’aide de la syntaxe suivante :

CREATE TABLE `nom_de_la_table` (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  [...]
);

Dans cet exemple, la clé primaire sera une colonne numérique de type INT, intitulée « id » (diminutif de « identifiant ») et cette colonne s’incrémentera automatiquement à chaque enregistrement.

Il est également possible d’utiliser la syntaxe suivante :

CREATE TABLE `nom_de_la_table` (
  `id` INT NOT NULL AUTO_INCREMENT,
  [...],
  PRIMARY KEY (`id`)
);

Exemple 1

Prenons l’exemple d’une table « utilisateur » qui listera le nom, l’email et la date d’inscription d’un utilisateur. Pour créer cette table, il serait possible d’utiliser la requête suivante :

CREATE TABLE `utilisateur` (
`id` INT NOT NULL AUTO_INCREMENT,
`nom` VARCHAR(50),
`email` VARCHAR(50),
`date_inscription` DATE,
PRIMARY KEY (`id`)
);

A noter : il serait techniquement possible de définir la clé primaire sur 2 colonnes, même si ce n’est pas habituel dans cet usage.

Exemple 2

Prenons l’exemple d’une table « email_utilisateur » qui listera les emails des utilisateurs. Cette table contiendrait un enregistrement unique pour chaque email. La clé primaire peut être définie sur la colonne contenant les emails, ainsi l’index UNIQUE permet de s’assurer qu’il n’y aura pas de doublon d’email. Voici la syntaxe de la requête SQL :

CREATE TABLE `email_utilisateur` (
`email` VARCHAR(50) NOT NULL,
`date_inscription` DATE,
PRIMARY KEY (`email`)
);
Partager