Partie I
SQL de base
44
© Éditions Eyrolles
Même si vous croyez mettre à NULL cette colonne avec une instruction UPDATE, elle contiendra toujours l’instant de votre vaine tentative !
Fonctions utiles
Les fonctions CURRENT_TIMESTAMP(), CURRENT_DATE() et CURRENT_TIME(), UTC_
TIME(), renseignent sur l’instant, la date, l’heure et l’heure GMT de la session en cours.
Il n’est pas nécessaire d’utiliser une table pour afficher une expression dans l’interface de
commande. L’exemple suivant montre que la requête a été exécutée le 1 er novembre 2005 à
10 heures, 11 minutes et 27 secondes. Le client est sur le fuseau GMT+1h.
mysql> SELECT CURRENT_TIMESTAMP(), CURRENT_TIME(), CURRENT_DATE(), UTC_
TIME();
+---------------------+----------------+----------------+------------+
| CURRENT_TIMESTAMP() | CURRENT_TIME() | CURRENT_DATE() | UTC_TIME() |
+---------------------+----------------+----------------+------------+
| 2005-11-01 10:11:27 | 10:11:27
| 2005-11-01
| 09:11:27
|
+---------------------+----------------+----------------+------------+
Séquences
Bien que « séquence » ne soit pas dans le vocabulaire de MySQL, car le mécanisme qu’il
propose n’est pas aussi puissant que celui d’Oracle, MySQL offre la possibilité de générer
automatiquement des valeurs numériques. Ces valeurs sont bien utiles pour composer des clés
primaires de tables quand vous ne disposez pas de colonnes adéquates à cet effet. Ce mécanisme répond en grande partie à ce qu’on attendrait d’une séquence.
En attendant que MySQL offre peut-être dans une prochaine version un mécanisme plus riche
que celui que nous allons étudier, je me permets d’appeler « séquence » une colonne indexée
de type entier (INTEGER, SMALLINT, TINYINT, MEDIUMINT et BIGINT), définie à l’aide de la
directive AUTO_INCREMENT. Cette colonne est clé primaire, ou unique et non nulle. Une
séquence est en général affectée à une table, mais vous pouvez l’utiliser pour plusieurs tables
ou variables.
Utilisation en tant que clé primaire
La figure suivante illustre la séquence appliquée à la colonne numAff pour initialiser les
valeurs de la clé primaire de la table Affreter. La fonction LAST_INSERT_ID() retourne
la dernière valeur de la séquence générée (ici le pas est de 1, la séquence débute par défaut à 1,
nous verrons par la suite qu’il est possible d’utiliser une valeur différente).
SQL de base
44
© Éditions Eyrolles
Même si vous croyez mettre à NULL cette colonne avec une instruction UPDATE, elle contiendra toujours l’instant de votre vaine tentative !
Fonctions utiles
Les fonctions CURRENT_TIMESTAMP(), CURRENT_DATE() et CURRENT_TIME(), UTC_
TIME(), renseignent sur l’instant, la date, l’heure et l’heure GMT de la session en cours.
Il n’est pas nécessaire d’utiliser une table pour afficher une expression dans l’interface de
commande. L’exemple suivant montre que la requête a été exécutée le 1 er novembre 2005 à
10 heures, 11 minutes et 27 secondes. Le client est sur le fuseau GMT+1h.
mysql> SELECT CURRENT_TIMESTAMP(), CURRENT_TIME(), CURRENT_DATE(), UTC_
TIME();
+---------------------+----------------+----------------+------------+
| CURRENT_TIMESTAMP() | CURRENT_TIME() | CURRENT_DATE() | UTC_TIME() |
+---------------------+----------------+----------------+------------+
| 2005-11-01 10:11:27 | 10:11:27
| 2005-11-01
| 09:11:27
|
+---------------------+----------------+----------------+------------+
Séquences
Bien que « séquence » ne soit pas dans le vocabulaire de MySQL, car le mécanisme qu’il
propose n’est pas aussi puissant que celui d’Oracle, MySQL offre la possibilité de générer
automatiquement des valeurs numériques. Ces valeurs sont bien utiles pour composer des clés
primaires de tables quand vous ne disposez pas de colonnes adéquates à cet effet. Ce mécanisme répond en grande partie à ce qu’on attendrait d’une séquence.
En attendant que MySQL offre peut-être dans une prochaine version un mécanisme plus riche
que celui que nous allons étudier, je me permets d’appeler « séquence » une colonne indexée
de type entier (INTEGER, SMALLINT, TINYINT, MEDIUMINT et BIGINT), définie à l’aide de la
directive AUTO_INCREMENT. Cette colonne est clé primaire, ou unique et non nulle. Une
séquence est en général affectée à une table, mais vous pouvez l’utiliser pour plusieurs tables
ou variables.
Utilisation en tant que clé primaire
La figure suivante illustre la séquence appliquée à la colonne numAff pour initialiser les
valeurs de la clé primaire de la table Affreter. La fonction LAST_INSERT_ID() retourne
la dernière valeur de la séquence générée (ici le pas est de 1, la séquence débute par défaut à 1,
nous verrons par la suite qu’il est possible d’utiliser une valeur différente).
