Nouvelle fonctionnalité
Commande CONNECT BY PRIOR ...
,
inspirée d'Oracle, pour traiter les structures de type
arbre (hiérarchisée).
Tous les types manquants de ANSI92 et ODBC 3.0.
Ajout de SUM(DISTINCT)
.
INSERT SQL_CONCURRENT
et
mysqld --concurrent-insert
pour faire
des insertions concurrents à la fin du fichier, même
si il est verrouillé en lecture.
Permettre la modification de variables dans une commande
UPDATE
. Par exemple :
UPDATE TABLE foo SET @a=a+b,a=@a,
b=@a+c
.
Changer le moment de modifications des variables, pour
que l'on puisse les utiliser avec les commandes de
groupement GROUP BY
, comme ceci :
SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM
table_name GROUP BY id
.
Ajout de l'option IMAGE
à la
commande LOAD DATA INFILE
pour ne pas
modifier les champs TIMESTAMP
et
AUTO_INCREMENT
.
Ajout de la syntaxe LOAD DATE INFILE ...
UPDATE
, qui fonctionne comme ceci :
Pour les tables ayant des clés primaires, si les données contiennent une clé primaire, les données qui existent et correspondent à cette clé, sont modifiées. Cependant, les colonnes omises sont ignorées.
Pour les tables ayant une clé primaire dont il
manque une partie dans les données entrantes, ou
qui n'ont pas de clé primaire, le flux est traité
comme LOAD DATA INFILE ... REPLACE
INTO
.
Rendre la syntaxe LOAD DATA INFILE
utilisable comme ceci :
LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name TEXT_FIELDS (text_field1, text_field2, text_field3) SET table_field1=CONCAT(text_field1, text_field2), table_field3=23 IGNORE text_field3
Cela peut être utilisé pour ignorer des colonnes supplémentaires dans le fichier texte, ou pour modifier des colonnes en fonction de données dans les valeurs entrantes.
De nouvelles fonctions pour travailler avec le type de
colonne SET
:
ADD_TO_SET(value,set)
REMOVE_FROM_SET(value,set)
Si vous interrompez mysql
au beau
milieu d'une requête, vous pouvez ouvrir une autre
connexion pour tuer la requête en cours. Ou bien, une
tentative doit être faite pour détecter cela sur le
serveur.
Ajout d'une interface au moteur de sauvegarde pour que
vous puissiez l'utiliser comme table système. Cela sera
un peu lent si vous demandez toutes les informations de
toutes les tables, mais très souple. SHOW INFO
FROM tbl_name
doit être implémenté pour
connaître les informations de bases des tables.
Permettre SELECT a FROM crash_me LEFT JOIN
crash_me2 USING (a)
; dans ce cas,
a
est supposé provenir de la table
crash_me
.
Les options DELETE
et
REPLACE
dans les commandes
UPDATE
(cela va effacer les lignes
lors d'un doublon dans la requête).
Modification du format de DATETIME
pour stocker les fractions de secondes.
Rendre possible l'utilisation de la bibliothèque GNU
regexp
au lieu de la bibliothèque
actuelle (la bibliothèque GNU devrait être plus rapide
que l'ancienne).
Compatibilité avec les standards, migration et portabilité.
Ne pas utiliser de valeur par défaut
(DEFAULT
) pour les colonnes. Indiquer
une erreur lors des commandes INSERT
,
si elle contient une colonne qui n'a pas de valeur par
défaut.
Ajout des fonctions de groupement
ANY()
, EVERY()
et
SOME()
. En ANSI SQL, elles ne
fonctionnent que sur les colonnes de type booléens,
mais nous pouvons étendre leur champ d'action aux
colonnes et expression, en appliquant la règle
suivante : value == 0 -> FALSE et value <> 0
-> TRUE.
Correction du type pour que
MAX(column)
ait le même type de
colonne :
mysql>CREATE TABLE t1 (a DATE);
mysql>INSERT INTO t1 VALUES (NOW());
mysql>CREATE TABLE t2 SELECT MAX(a) FROM t1;
mysql>SHOW COLUMNS FROM t2;
Amélioration des performances
Ne permettre qu'à un nombre défini de threads
d'exécuter des réparations MyISAM
simultanément.
Changer INSERT ... SELECT
pour
utiliser optionnellement des insertions simultanées.
Ajouter une option pour écrire sur le disque les pages de clés pour les tables à clés retardées, qui n'ont pas été sauvées dernièrement.
Permettre les jointures sur des parties de clés (problème d'optimisation).
Un analyseur de logs, qui permettrait d'extraire des informations sur les tables les plus souvent utilisées, les jointures, etc... Cela permettra aux utilisateurs d'identifier les tables qui peuvent être optimisées.
Internationalisation
Ergonomie
Retourner le type de champs original lors des requêtes
SELECT MIN(column) ... GROUP BY
.
Rendre possible la spécification de
long_query_time
avec une granularité
de l'ordre de la microseconde.
Intégrer le code de myisampack
dans
le serveur, activer les commandes
PACK
or COMPRESS
depuis le serveur.
Ajouter un cache de buffer de clé temporaire durant les
commandes INSERT/DELETE/UPDATE
pour
que nous puissions nous rétablir si jamais le fichier
d'index est plein.
Si vous effectuez la commande ALTER
TABLE
sur une table qui est un lien symbolique
sur un autre disque, les tables temporaires seront aussi
faites sur ce disque.
Implémenter un type DATE/DATETIME
qui gère les fuseaux horaire correctement, pour
résoudre le problème du décalage horaire.
Corriger la configuration pour que l'on puisse compiler
toute les bibliothèques (comme
MyISAM
) sans les threads.
Permettre toutes les variables SQL dans la clause
LIMIT
, comme LIMIT
@a,@b
.
Affichage automatique de mysql
vers
un navigateur web.
LOCK DATABASES
(avec différentes
options).
De nombreuses nouvelles variables dans SHOW
STATUS
. Les lignes lues et modifiées. Les
sélections sur tables uniques et les jointures. Le
nombre moyen de tables dans une sélection. Le nombre de
requêtes ORDER BY
et GROUP
BY
.
mysqladmin copy database
new-database
; a besoin de la commande
COPY
dans mysqld
.
La liste des processus doit afficher le nombre de requêtes et de threads.
SHOW HOSTS
affichera les informations
concernant le cache de noms d'hôtes.
Changer le nom des tables de chaîne vide à
NULL
pour les colonnes calculées.
Ne pas utiliser la fonction
Item_copy_string
sur les valeurs
numériques, pour éviter les conversions nombre ->
chaîne -> nombre en cas de : SELECT
COUNT(*)*(id+0) FROM table_name GROUP BY id
Changer ALTER TABLE
pour qu'il
n'interrompe pas le client qui exécute des
INSERT DELAYED
.
Lorsque les colonnes sont spécifiées dans
UPDATE
, elles contiennent les
anciennes valeurs d'avant la modification.
Nouveaux systèmes d'exploitation.
Port des clients MySQL vers LynxOS.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.