| 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 
 La commande  
HANDLER
  fournit un accès direct à l'interface de gestion de la table 
 
MyISAM
 .| 
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 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 : 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 ... 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) ...
 | 
 
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
  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 :| 
HANDLER tbl_name READ `PRIMARY` > (...);
 | 
 
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.
 |