14.1 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
14 Syntaxe des commandes SQL
Manuel de Référence MySQL 4.1 : Version Française
. Syntaxe de DELETE . Syntaxe de DO ->Syntaxe de HANDLER . Syntaxe de INSERT . Syntaxe de LOAD DATA INFILE . Syntaxe de REPLACE . Syntaxe de SELECT . Sous-sélections ( SubSELECT ) . Syntaxe de TRUNCATE . Syntaxe de UPDATE
|
14.1.3 Syntaxe de HANDLER
HANDLER tbl_name OPEN [ AS alias ] HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...) [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name READ { FIRST | NEXT } [ WHERE ... ] [LIMIT ... ] HANDLER tbl_name CLOSE
|
La commande
HANDLER
fournit un accès direct à l'interface de gestion de la table
MyISAM
.
La première forme de
HANDLER
ouvre la table, la rendant accessible via la requête
HANDLER ... READ
qui la suit.
Cette objet table n'est pas partagé par les autres threads et ne sera refermé que si le
thread appelle
HANDLER nom_de_table CLOSE
ou que celui ci se termine.
La seconde forme récupère une ligne (ou plus, à spécifier dans la clause
LIMIT
)
où l'index spécifié remplit les conditions et où la clause
WHERE
est répondue.
Si l'index se compose de plusieurs parties, (s'étend sur plusieurs colonnes) les valeurs sont
spécifiées dans une liste séparée par des virgules, fournir des valeurs pour quelques premières
colonnes est possible. Par exemple :
HANDLER ... index_name = (col_a_val,col_b_val,col_c_val) ... HANDLER ... index_name = (col_a_val,col_b_val) ... HANDLER ... index_name = (col_a_val) ...
|
La troisième forme récupère une ligne
(ou plus, à spécifier dans la clause
LIMIT
)
de la table dans l'ordre de l'index, qui répond à
la clause
WHERE
.La quatrième forme (sans spécifications relatives à l'index) récupère une ligne (ou plus, à
spécifier dans la clause
LIMIT
) de la table dans un ordre naturel des lignes (comme stocké
dans le fichier de données) qui correspond à la condition
WHERE
. C'est plus rapide que
HANDLER nom_de_table READ nom_index
quand une lecture entière de la table est requise.
Syntaxe de
SELECT
.
HANDLER ... CLOSE
ferme une table qui a été ouverte avec
HANDLER ... OPEN
.
Note : pour utiliser l'interface
HANDLER
avec la clé primaire d'une table
PRIMARY KEY
, utilisez l'identifiant entre guillemets obliques
`PRIMARY`
:
HANDLER tbl_name READ `PRIMARY` > (...);
|
HANDLER
est en quelque sorte une commande bas-niveau. Par exemple, elle ne propose pas
de consistance. En clair,
HANDLER ... OPEN
ne se base
pas
sur une image de la table, et ne verrouille
pas
la table.
Cela signifie qu'après l'exécution d'une requête
HANDLER ... OPEN
, les données de la table peuvent
être modifiées (par ce ou un autre thread) et ces
modifications peuvent apparaître partiellement dans les lectures
de
HANDLER ... NEXT
ou
HANDLER ... PREV
.Les raisons d'utiliser cette interface plutôt que les commandes MySQL usuelles sont :
-
Plus rapide qu'un
SELECT
car :
-
Un pointeur sur table dédié est alloué au thread dans
HANDLER open
.
-
Il y a moins de traitements.
-
Pas de pertes de temps en optimisation ou vérifications de requêtes.
-
La table utilisée n'a pas besoin d'être verrouillée entre deux requêtes de gestion.
-
L'interface de gestion n'a pas à fournir une vue consistante des données (par exemple, les lectures
corrompues sont autorisées), ce qui permet au gestionnaire d'effectuer des optimisations que SQL ne
permet pas.
-
Cela facilite le port des applications qui utilisent l'interface ISAM pour MySQL.
-
Cela permet de traverse plus facilement la base de données qu'avec SQL (dans certains cas, cette
opération est impossible avec SQL). L'interface de gestion amène une façon plus naturelle de manipuler
les données lorsque vous travaillez avec des applications qui proposent une interface interactive entre
l'utilisateur et la base de données.
|