3.6 Exemples de requêtes usuelles
3 Tutoriels d'introduction
Manuel de Référence MySQL 4.1 : Version Française
. La valeur maximale d'une colonne . La ligne contenant le maximum d'une certaine colonne . Maximum d'une colonne par groupe . La ligne contenant la plus grande valeur d'un certain champ par rapport à un groupe . Utiliser les variables utilisateur . Utiliser les clefs étrangères . Recherche sur deux clefs . Calcul du nombre de visites par jour ->Utiliser AUTO_INCREMENT
|
3.6.9 Utiliser AUTO_INCREMENT
L'attribut
AUTO_INCREMENT
peut être utilisé
pour générer un identifiant
unique pour les nouvelles lignes :
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"), ("lax"),("whale"),("ostrich"); SELECT * FROM animals;
|
Qui retourne :
+----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | lax | | 5 | whale | | 6 | ostrich | +----+---------+
|
Vous pouvez obtenir la valeur utilisée de la clef
AUTO_INCREMENT
avec
la fonction SQL
LAST_INSERT_ID()
ou la fonction d'API
mysql_insert_id()
.Note : Pour une insertion multi-lignes,
LAST_INSERT_ID()
/
mysql_insert_id()
retourneront la clef
AUTO_INCREMENT
de la
première
ligne insérée. Cela
permet de reproduire les insertions multi-lignes sur d'autres services.
Pour les tables
MyISAM
et
BDB
vous pouvez spécifier
AUTO_INCREMENT
sur une colonne
secondaire d'une clef multi-colonnes. Dans ce cas, la valeur générée pour la colonne
auto-incrémentée est calculée de la façon suivante :
MAX(auto_increment_column)+1)
WHERE prefix=given-prefix
. C'est utile lorsque vous voulez placer des données dans des
groupes ordonnés.
CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ); INSERT INTO animals (grp,name) VALUES("mammal","dog"),("mammal","cat"), ("bird","penguin"),("fish","lax"),("mammal","whale"), ("bird","ostrich"); SELECT * FROM animals ORDER BY grp,id;
|
Qui retourne :
+--------+----+---------+ | grp | id | name | +--------+----+---------+ | fish | 1 | lax | | mammal | 1 | dog | | mammal | 2 | cat | | mammal | 3 | whale | | bird | 1 | penguin | | bird | 2 | ostrich | +--------+----+---------+
|
Notez que dans ce cas, la valeur d'
AUTO_INCREMENT
sera réutilisée si vous
effacez la ligne avec la plus grande valeur d'
AUTO_INCREMENT
tous groupes
confondus. Cela n'arrive jamais avec les tables
MyISAM
, dont les valeurs
AUTO_INCREMENT
ne sont jamais réutilisées.
|