| 14.5.3 Syntaxe de SHOW
 14.5 Référence de langage d'administration de la base de données
 14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française
 
 ->Syntaxe de SET
 . Commande SHOW CHARACTER SET
 . Syntaxe de SHOW COLLATION
 . Syntaxe de SHOW COLUMNS
 . Syntaxe de SHOW CREATE DATABASE
 . Syntaxe de SHOW CREATE TABLE
 . Syntaxe SHOW CREATE VIEW
 . Syntaxe de SHOW DATABASES
 . Syntaxe SHOW ENGINES
 . Syntaxe de SHOW ERRORS
 . SHOW GRANTS
 . Syntaxe de SHOW INDEX
 . Syntaxe de SHOW INNODB STATUS
 . Syntaxe de SHOW LOGS
 . SHOW PRIVILEGES
 . Syntaxe de SHOW PROCESSLIST
 . Syntaxe de SHOW STATUS
 . SHOW TABLE STATUS
 . Syntaxe de SHOW TABLES
 . Syntaxe de SHOW VARIABLES
 . SHOW WARNINGS | ERRORS
 
 
 | 
  14.5.3.1 Syntaxe de SET 
   SET
  permet de configurer plusieurs options qui affectent le comportement
de votre serveur ou de votre client.| 
SET variable_assignment [, variable_assignment] ...
 variable_assignment:
 user_var_name = expr
 | [GLOBAL | SESSION] system_var_name = expr
 | @@[global. | session.]system_var_name = expr
 | 
 
En MySQL 4.0.3, nous avons ajouté les options  
GLOBAL
  et  
SESSION
  
et permis la modification des variables systèmes les plus importantes dynamiquement,
durant l'exécution du serveur. Le système de variables que vous pouvez
utiliser est décrit dans  Variables dynamiques système .
Dans les anciennes versions de MySQL, nous avions autorisé l'utilisation de 
la syntaxe  
SET OPTION
 , mais elle est maintenant abandonnée.
Omettez simplement le mot  
OPTION
 . 
Les exemples suivants montrent les différentes syntaxes 
qu'on peut utiliser pour configurer des variables.
Une variable utilisateur s'écrit sous la forme  
@var_name
  et peut être
configurée comme ceci :  
 
Plus d'informations sur les variables utilisateurs sont données dans  Variables définies par l'utilisateur .Les variables système peuvent être identifiées dans une commande  
SET
  
sous la forme  
var_name
 . Le nom peut être optionnellement précédé par 
 
GLOBAL
  ou  
@@global.
  pour indiquer que cette variable est globale,
ou par  
SESSION
 ,  
@@session.
 , ou  
@@
  pour
indiquer que cette variable est une variable de session.  
LOCAL
  et  
@@local.
 
son synonymes de  
SESSION
  et  
@@session.
 . Si aucune option n'est
présente,  
SET
  spécifie une variable de session. 
La syntaxe  
@@var_name
  pour les variables système est supportée pour 
rendre la syntaxe MySQL compatible avec les autres bases.
Si vous configurez plusieurs variables sur une seule ligne de commande, le dernier
mode  
GLOBAL | SESSION
  utilisé est pris en compte. Si vous utilisez  
SESSION
  (par défaut) l'option que vous configurez garde
son effet jusqu'à ce que la session courante se termine, ou que vous modifiez à
nouveau cette option. Si vous utilisez  
GLOBAL
 , qui requière le privilège
 
SUPER
 , l'option est gardée en mémoire et utilisée pour les nouvelles
connexion jusqu'au redémarrage du serveur. Si vous voulez qu'un changement reste
permanent, vous devez l'effectuer dans l'un des fichiers d'options de MySQL.
 Utiliser les fichiers d'options .Pour éviter un mauvais usage, MySQL donnera une erreur si vous utilisez  
SET
GLOBAL
  avec une variable qui ne peut être inutilisée que par  
SET SESSION
  ou
si vous n'utilisez pas  
SET GLOBAL
  avec une variable globale.| 
SET sort_buffer_size=10000;SET @@local.sort_buffer_size=10000;
 SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;
 SET @@sort_buffer_size=1000000;
 SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
 | 
 
Si vous voulez configurer une variable  
SESSION
  à une valeur  
GLOBAL
  ou
une valeur  
GLOBAL
  à la valeur par défaut de MySQL, vous pouvez la configurer
à  
DEFAULT
 .
 Vous pouvez obtenir une liste de la plupart des variables avec  
SHOW VARIABLES
 .
 Syntaxe de 
SHOW VARIABLES
 . 
Vous pouvez obtenir la valeur d'une variable spécifique avec 
la syntaxe  
@@[global.|local.]nom_variable
  :| 
SET max_join_size=DEFAULT;SET @@session.max_join_size=@@global.max_join_size;
 | 
 Vous pouvez aussi obtenir une valeur spécifique d'une variable 
en utilisant la syntaxe  
@@[global.|local.]var_name
  avec  
SELECT
  :| 
SHOW VARIABLES LIKE 'max_join_size';SHOW GLOBAL VARIABLES LIKE 'max_join_size';
 | 
 Lorsque vous lisez la valeur d'une variable avec la syntaxe 
 
SELECT @@var_name
  (c'est à dire, sans spécifier  
 
global.
 ,  
session.
  ou  
local.
 ), MySQL retourne la 
valeur de  
SESSION
  si elle existe, et la valeur  
GLOBAL
  sinon.| 
SELECT @@max_join_size, @@global.max_join_size;
 | 
 
Vous trouverez ici une description des variables qui utilisent une syntaxe non-standard
de  
SET
 . Les définitions des autres variables peuvent être trouvées
dans la section des  Variables sytème du serveur , avec les options de démarrage ou dans la
description de  
SHOW VARIABLES
 . 
Même si ces variables ne sont pas affichées par  
SHOW VARIABLES
 , 
vous pouvez obtenir leur valeur avec la commande  
SELECT
  (à
l'exception de  
CHARACTER SET
 ). Par exemple : | 
mysql> SELECT @@AUTOCOMMIT;+--------------+
 | @@autocommit |
 +--------------+
 |            1 |
 +--------------+
 | 
 
     AUTOCOMMIT= {0 | 1}
    
      Si définie à  
1
  tous les changements dans une table se feront
en une seule fois. Pour démarrer une transaction multi-commandes, vous devez
utiliser la commande  
BEGIN
 .  Syntaxe des 
BEGIN/COMMIT/ROLLBACK
 . 
Si définie à  
0
 
vous devez utiliser  
COMMIT
  /  
ROLLBACK
  pour accepter/annuler cette transaction.
Notez que quand vous passez du mode non  
AUTOCOMMIT
  vers le mode 
 
AUTOCOMMIT
 , MySQL fera un  
COMMIT
  automatique sur toutes les transactions
en cours.
      
     BIG_TABLES = {0 | 1}
     
Si définie à  
1
 , toutes les tables temporaires sont stockées
sur le disque plutôt qu'en mémoire. Cela sera un peu plus lent, mais vous
n'obtiendrez jamais l'erreur  
The table nom_de_table is full
  pour les grands 
 
SELECT
  qui requièrent une table temporaire.
La valeur par défaut pour une nouvelle connexion est  
0
  (qui est d'utiliser
la mémoire pour les tables temporaires).
Cette option se nommait avant  
SQL_BIG_TABLES
 .
      
     CHARACTER SET {charset_name | DEFAULT}
    
      Cela change le jeu de caractère dans toutes les chaînes du et vers le client avec le jeu donné.
Jusqu'à maintenant, la seule option pour  
nom_jeu_de_caractères
  est
 
cp1251_koi8
 , mais vous pouvez facilement ajouter d'autres possibilités en éditant le
fichier  
sql/convert.cc
  dans la distribution des sources MySQL. Le jeu de caractères
par défaut peut être restauré en utilisant la valeur  
DEFAULT
  de 
 
nom_jeu_de_caractères
 
DEFAULT
 .
 
Notez que la syntaxe pour configurer l'option  
CHARACTER SET
  diffère
de la syntaxe pour configurer les autres options.
 
     FOREIGN_KEY_CHECKS = {0 | 1}
    
      Si cette option vaut  
1
  (par défaut), les contraintes de clé étrangères
des tables  
InnoDB
  sont vérifiées. Si cette option vaut  
0
 , 
elles sont ignorées. Désactiver les clés étrangères peut être pratique
pour recharger des tables  
InnoDB
  dans un ordre différent que celui
qu'impose les relations de contraintes. Cette variable a été ajoutée
en MySQL 3.23.52.
 Contraintes 
FOREIGN KEY
 .
      
     IDENTITY = valeur
    
      Cette variable est un synonyme de la variable  
LAST_INSERT_ID
 .
Elle existe pour des raisons de compatibilité avec les autres bases.
Depuis MySQL 3.23.25, vous pouvez lire sa valeur avec  
SELECT @@IDENTITY
 .
Depuis MySQL 4.0.3, vous pouvez aussi modifier cette valeur avec  
SET IDENTITY
 .
      
     INSERT_ID = valeur
    
      Configure la valeur à utiliser par l'appel suivant à la commande  
INSERT
 
ou  
ALTER TABLE
  lors de l'insertion d'une valeur  
AUTO_INCREMENT
 .
Cela est souvent utilisé par le log des modifications.
      
     LAST_INSERT_ID = valeur
    
      Configure la valeur qui doit être retournée par  
LAST_INSERT_ID()
 . C'est
enregistré dans le log de mises à jour quand vous utilisez  
LAST_INSERT_ID()
 
dans une commande qui met à jour une table.
      
     NAMES {'charset_name' | DEFAULT}
    
SET NAMES
  spécifie les valeurs des trois variables systèmes de session
 
character_set_client
 ,  
character_set_connection
  et
 
character_set_results
  avec le jeu de caractères donné.La valeur par défaut de ces variables peut être rappelée avec
 
DEFAULT
 .
 
Notez que la syntaxe de  
SET NAMES
  diffère en cela
des autres options. Cette commande est disponible depuis
MySQL 4.1.0.
 
     SQL_AUTO_IS_NULL = {0 | 1}
    
      Si définie à  
1
  (par défaut) alors on peut trouver la
dernière ligne insérée dans une table avec une colonne 
 
AUTO_INCREMENT
  avec la construction suivante : 
Ceci est utilisé par des  programmes ODBC tel que Access.
 
SQL_AUTO_IS_NULL
  a été ajouté en MySQL 3.23.52.| 
WHERE auto_increment_column IS NULL
 | 
 
     SQL_BIG_SELECTS = {0 | 1}
    
      Si configuré à  
0
 , MySQL interrompra les requêtes  
SELECT
 
qui prendront probablement trop de temps. C'est utile lorsqu'une clause  
WHERE
  
déconseillée a été utilisée. Une grosse requête
est définie comme étant un  
SELECT
  qui devra probablement étudier
plus de  
max_join_size
  lignes. La valeur par défaut d'une nouvelle connexion 
est  
1
  (qui permet toutes les requêtes  
SELECT
 ).
      
     SQL_BUFFER_RESULT = {0 | 1}
    
SQL_BUFFER_RESULT
  forcera les résultats des requêtes  
SELECT
 
à être placés dans une table temporaire. Cela aidera MySQL à
libérer les verrous sur table plus tôt et améliorera les cas où
le jeu de résultats de la requête prend trop de temps à être 
envoyée au client.
      
     SQL_LOG_BIN = {0 | 1}
    
      Si cette option vaut  
0
 , aucun log n'est fait dans le log binaire
du client, si le client a les droits de  
SUPER
 .
      
     SQL_LOG_OFF = {0 | 1}
    
      Si cette option vaut  
1
 ,  aucun log n'est fait dans le log standard
du client, si le client a les droits de  
SUPER
 .
      
     SQL_LOG_UPDATE = {0 | 1}
    
      Si définie à  
0
 , aucune trace des requêtes ne sera gardée
dans le log des mises à jour pour le client, si le client à le privilège
 
SUPER
 . 
Cette variable est abandonnée depuis la version 5.0.0 et est remplacée
par  
SQL_LOG_BIN
  ( Changements de la version5.0.0 (22 décembre 2003 : Alpha) ).
      
     SQL_QUOTE_SHOW_CREATE = {0 | 1}
    
      Si vous le configurez à  
1
 ,  
SHOW CREATE TABLE
  protégera les
noms de tables et de colonnes. Ceci est activé par défaut,
pour que la réplication des tables avec des noms à risques fonctionne.
 Syntaxe de 
SHOW CREATE TABLE
 .
      
     SQL_SAFE_UPDATES = {0 | 1}
    
      Si définit à  
1
 , MySQL annulera si un  
UPDATE
  ou un  
DELETE
 
est exécuté alors qu'il n'utilise pas de clef ou de  
LIMIT
  dans la clause 
 
WHERE
 . Cela permet de bloquer les requêtes erronées crées à
la main.
      
     SQL_SELECT_LIMIT = valeur | DEFAULT
    
      Le nombre maximal des enregistrements que doivent retourner les requêtes  
SELECT
 .
Si un  
SELECT
  possède une clause  
LIMIT
 , celle-ci est utilisée. La
valeur par défaut pour une nouvelle connexion est ``illimitée.'' Si vous avez 
changé la limite, la valeur par défaut peut être retrouvée en 
utilisant la valeur  
DEFAULT
  avec  
SQL_SELECT_LIMIT
 .
      
     SQL_WARNINGS = {0 | 1}
    
      Cette variable contrôle le fait que les insertion mono-ligne  
INSERT
  
produisent une chaîne d'information si une alerte survient. La valeur par
défaut est 0. Donnez la valeur de 1 pour avoir un message d'information.
Cette variable a été ajoutée en MySQL 3.22.11.
      
     TIMESTAMP = valeur_timestamp | DEFAULT
    
      Configure le temps pour ce client. C'est utilisé pour obtenir le timestamp d'origine
si vous utilisez le log de mises à jour pour restaurer des lignes.  
valeur_timestamp
 
doit être un timestamp Unix, et non un timestamp MySQL.      
     UNIQUE_CHECKS = {0 | 1}
    
      Si cette option vaut  
1
  (par défaut), les tests d'unicité sur les
index secondaires des tables  
InnoDB
  sont effectués. Si l'option vaut  
0
 , 
aucun test d'unicité n'est fait. Cette variable a été ajouté en MySQL 3.23.52.
 Contraintes 
FOREIGN KEY
 .
      |