:: DEVELOPER ZONE
Le serveur MySQL inclut des extensions que vous ne trouverez probablement
pas dans les autres bases de données. Soyez prévenus que si vous les
utilisez, votre code ne sera probablement pas portable sur d'autres serveurs
SQL. Dans certains cas, vous pouvez écrire du code qui inclut des spécificités
de MySQL, mais qui restent portables, en les incluant dans des
commentaires de la forme /*! ... */. Dans ce cas, le serveur MySQL va
analyser la chaîne et exécuter le code à l'intérieur de ces commentaires
comme une commande normale, mais d'autres serveurs ignoreront ces commentaires.
Par exemple :
SELECT /*! STRAIGHT_JOIN */ col_name FROM table1,table2 WHERE ...
Si vous ajoutez le numéro de version après le point d'exclamation '!',
la syntaxe sera exécutée uniquement si la version du serveur MySQL est
égale ou plus récente que le numéro de version utilisé.
CREATE /*!32302 TEMPORARY */ TABLE t (a int);
Cela signifie que si vous avez la version 3.23.02 ou plus récente,
le serveur MySQL va utiliser le mot réservé TEMPORARY.
Voici une liste des apports spécifiques de MySQL :
Organisation des données sur le disque
MySQL fait correspondre à chaque base un dossier dans le dossier de données MySQL, et à chaque table des fichiers portant le même nom. Ceci a plusieurs implications :
Les noms des bases de données et des tables sont sensibles à la casse sur les systèmes d'exploitation qui ont des systèmes de fichiers sensibles à la casse (comme la plupart des systèmes Unix). See Section 10.2.2, « Sensibilité à la casse pour les noms ».
Vous pouvez utiliser les commandes systèmes standard pour sauver, renommer,
déplacer, effacer et copier des tables. Par exemple, pour renommer une table,
il suffit de renommer les fichiers .MYD, .MYI et .frm
et de leur donner un nouveau nom.
Les noms de bases, tables, index, colonnes ou alias peuvent commencer par des chiffres, mais ne peuvent pas être constitués uniquement de noms.
Syntaxe générale du langage
Les chaînes de caractères peuvent être soit délimitées par '"', soit
par '''. Pas seulement par '''.
L'utilisation du caractère de protection '\'.
Dans une requête SQL, vous pouvez accéder à des tables situées dans
différentes bases de données, avec la syntaxe db_name.tbl_name.
Certains serveurs SQL fournissent la même fonctionnalité, mais
l'appellent un User space. Le serveur MySQL ne supporte par les
espaces de nom de tables, comme dans
create table ralph.my_table...IN my_tablespace.
Syntaxe de commande SQL
Les commandes ANALYZE TABLE, CHECK TABLE, OPTIMIZE TABLE et
REPAIR TABLE.
Les commandes CREATE DATABASE et DROP DATABASE.
See Section 14.2.4, « Syntaxe de CREATE DATABASE ».
La commande DO.
La commande EXPLAIN SELECT pour avoir le détail des
jointures de tables.
Les commandes FLUSH et RESET.
La commande SET. See Section 14.5.3.1, « Syntaxe de SET ».
La commande SHOW.
See Section 14.5.3, « Syntaxe de SHOW ».
L'utilisation de la commande LOAD DATA INFILE. Dans de nombreuses situations,
cette syntaxe est compatible avec la commande d'Oracle
LOAD DATA INFILE. See Section 14.1.5, « Syntaxe de LOAD DATA INFILE ».
L'utilisation de RENAME TABLE. See Section 14.2.12, « Syntaxe de RENAME TABLE ».
L'utilisation de REPLACE au lieu de DELETE + INSERT.
See Section 14.1.6, « Syntaxe de REPLACE ».
L'utilisation de CHANGE col_name, DROP col_name ou
DROP INDEX, IGNORE ou RENAME dans une commande
ALTER TABLE. See Section 14.2.2, « Syntaxe de ALTER TABLE ».
L'utilisation de noms d'index, de préfixes d'index, et
l'utilisation des mots-clé INDEX or KEY dans
une commande de création de table CREATE TABLE.
See Section 14.2.6, « Syntaxe de CREATE TABLE ».
L'utilisation des clauses TEMPORARY et IF NOT EXISTS
avec CREATE TABLE.
L'utilisation de DROP TABLE avec les mots-clé IF EXISTS.
Vous pouvez effacer plusieurs tables avec une seule commande DROP TABLE.
La clause LIMIT de la commande DELETE.
La syntaxe INSERT INTO ... SET col_name = ....
La clause DELAYED des commandes INSERT et REPLACE.
La clause LOW_PRIORITY des commandes INSERT, REPLACE,
DELETE et UPDATE.
L'utilisation de INTO OUTFILE et STRAIGHT_JOIN dans les requêtes
SELECT. See Section 14.1.7, « Syntaxe de SELECT ».
L'option SQL_SMALL_RESULT de la commande SELECT.
Vous n'êtes pas obligé de nommer toutes les colonnes que vous
sélectionnez dans la clause GROUP BY. Cela donne de meilleures
performances pour certaines situations spécifiques, mais classiques.
See Section 13.9, « Fonctions et options à utiliser dans les clauses GROUP BY ».
Vous pouvez spécifier ASC ou DESC dans la clause GROUP BY.
La possibilité de modifier les variables dans les commandes avec l'opérateur
:= :
SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg FROM test_table; SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
Types de colonnes
Les types de colonnes MEDIUMINT, SET, ENUM et
les types BLOB et TEXT.
Les attributs de champs AUTO_INCREMENT, BINARY, NULL,
UNSIGNED et ZEROFILL.
Fonctions et opérateurs
Pour aider les utilisateurs qui viennent d'autres environnements SQL, le serveur MySQL supporte des alias de nombreuses fonctions. Par exemple, toutes les fonctions de chaînes de caractères supportent simultanément les syntaxes ANSI SQL et ODBC.
Le serveur MySQL comprend les opérateurs || et && comme
opérateurs logiques OR et AND, comme en langage C. Pour le serveur MySQL,
les opérateurs || et OR sont synonymes, ainsi que && et AND.
En conséquence, MySQL ne supporte pas l'opérateur de concaténation de chaînes
ANSI SQL ||. Utilisez plutôt la fonction CONCAT(). Comme
CONCAT() prend un nombre illimité d'arguments, il est facile de
convertir des expressions utilisant ||, pour qu'elles fonctionnent
sur le serveur MySQL.
L'utilisation de COUNT(DISTINCT list) où list contient
plus d'un élément.
Toutes les comparaisons de chaînes sont insensibles à la casse par défaut,
et l'ordre de tri est déterminé par le jeu de caractères courant
(ISO-8859-1 Latin1 par défaut). Si vous en souhaitez un autre, il faut
déclarer les colonnes avec l'attribut BINARY ou utiliser l'opérateur
BINARY pour forcer les comparaisons à prendre en compte la
casse, en fonction du jeu de caractères utilisé sur l'hôte du serveur
MySQL.
L'opérateur % est synonyme de MOD(). C'est à dire que
N % M est équivalent à MOD(N,M). % est supporté
pour les programmeurs C, et pour la compatibilité avec PostgreSQL.
Les opérateurs =, <>, <= ,<, >=,>,
<<, >>, <=>, AND, OR ou LIKE
peuvent être utilisés pour les comparaisons de colonnes à gauche
de la clause FROM dans les commandes SELECT. Par exemple :
mysql> SELECT col1=1 AND col2=2 FROM tbl_name;
La fonction LAST_INSERT_ID(), qui retourne la plus récente
valeur de colonne AUTO_INCREMENT.
See Section 13.8.3, « Fonctions d'informations ».
LIKE est possible avec des colonnes numériques.
Les opérateurs d'expressions régulières étendus REGEXP et NOT REGEXP.
CONCAT() et CHAR() avec un argument ou plus de deux arguments.
Avec le serveur MySQL, ces fonctions peuvent prendre n'importe quel nombre
d'arguments.
Les fonctions BIT_COUNT(), CASE, ELT(),
FROM_DAYS(), FORMAT(), IF(), PASSWORD(),
ENCRYPT(), MD5(), ENCODE(), DECODE(),
PERIOD_ADD(), PERIOD_DIFF(), TO_DAYS() et
WEEKDAY().
L'utilisation de la fonction TRIM() pour réduire les chaînes. L'ANSI SQL
ne supporte que les suppressions de caractères uniques.
Les fonctions de groupe de la clause GROUP BY STD(),
BIT_OR(), BIT_AND(), BIT_XOR() et GROUP_CONCAT().
See Section 13.9, « Fonctions et options à utiliser dans les clauses GROUP BY ».
Pour une liste hiérarchisée des nouvelles extensions qui seront ajoutées à MySQL, vous pouvez consulter la liste de tâche en ligne sur http://dev.mysql.com/doc/mysql/en/TODO.html. C'est la dernière liste qui est utilisée dans ce formulaire. See Section 1.6, « Les évolutions de MySQL (la liste des tâches) ».
© 1995-2005 MySQL AB. All rights reserved.
