Sommaire
1.1 A propos du manuel..........................................................................................................1
1.1.1 Conventions utilisées dans ce manuel.....................................................................2
1.2 Qu'est ce que MySQL?.....................................................................................................3
1.2.5 Compatibilité an 2000..............................................................................................8
1.3 Qui est MySQL AB ?.......................................................................................................10
1.3.1 Les services et le modèle d'affaire de MySQL AB.................................................10
1.3.1.6 Publicité.........................................................................................................12
1.3.2 Contacts.................................................................................................................13
1.4 Support MySQL et licences............................................................................................13
1.4.3 Licences MySQL....................................................................................................15
1.4.3.2 Utiliser MySQL sous licence GPL libre.........................................................15
1.4.4 Logos MySQL AB et marque déposée...................................................................16
1.4.4.2 Logos MySQL qui peuvent être utilisés dans autorisation préalable............17
1.4.4.5 Utiliser le nom MySQL sur des documents imprimés ou des
présentations.................................................................................................18
1.4.4.6 Utilisation du nom MySQL dans un nom de société ou de produit...............18
1.5 MySQL 4.x In A Nutshell.................................................................................................18
1.5.6 MySQL 4.1 : Les nouvelles fonctionnalités............................................................20
1.6 Sources d'informations MySQL.......................................................................................20
1.6.2 Listes de diffusion MySQL.....................................................................................21
1.6.2.4 Conseils pour répondre sur la liste de diffusion............................................27
1.7 Quels standards respecte MySQL?................................................................................27
1.7.4 Différences de MySQL avec ANSI SQL92.............................................................30
1.7.4.1 Sous sélections (Sub SELECT s).................................................................31
1.7.4.7 '??' comme début de commentaire...............................................................36
1.7.5 Erreurs connues et problèmes de conceptions de MySQL....................................37
1.8 Les évolutions de MySQL (la liste des tâches)...............................................................40
1.8.5 Ce qui n'est pas prévu...........................................................................................45
1.9 Comparatif de MySQL avec les autres serveurs SQL....................................................45
1.9.1 MySQL face à mSQL.............................................................................................45
1.9.1.2 Différences entre les protocoles de communication de mSQL et de
MySQL..........................................................................................................48
1.9.1.3 Comparatif des syntaxes SQL de mSQL 2.0 et MySQL...............................48
1.9.2 Comparatif de MySQL avec PostgreSQL..............................................................51
1.9.2.3 Performances comparées de MySQL et PostgreSQL..................................55
2.1 Installation standard rapide de MySQL...........................................................................59
2.1.2 Installer MySQL sous Windows.............................................................................60
2.1.2.3 Démarrer le serveur pour la première fois....................................................62
2.2 Notes générales à propos de l'installation......................................................................63
2.2.7 Installer MySQL à partir d'une distribution binaire.................................................70
2.3 Installer MySQL à partir des sources..............................................................................72
2.3.7 La distribution source Windows.............................................................................82
2.4 Configuration après l'installation, et tests........................................................................83
2.4.3 Lancer et arrêter MySQL automatiquement...........................................................89
2.5 Changer de version de MySQL.......................................................................................90
2.5.5 Migrer depuis une autre architecture.....................................................................96
2.6 Notes spécifiques aux systèmes d'exploitation...............................................................97
2.6.1 Notes relatives à Linux (toutes versions)...............................................................97
2.6.1.7 Notes relatives à Linux IA64.......................................................................104
2.6.2 Notes relatives à Windows...................................................................................104
2.6.2.4 Connexion à un serveur MySQL distants, sous Windows avec SSH.........108
2.6.2.7 MySQL pour Windows face à MySQL pour Unix........................................109
2.6.3 Remarques pour Solaris......................................................................................111
2.6.3.2 Remarques pour Solaris x86.......................................................................114
2.6.4 Notes relatives à BSD..........................................................................................115
2.6.4.7 Notes relatives aux versions 4.x de BSD/OS..............................................118
2.6.5 Notes relatives à Mac OS X.................................................................................118
2.6.5.2 Mac OS X Server........................................................................................118
2.6.6 Notes sur les autres Unix.....................................................................................118
2.6.6.8 Notes relatives à SGI Irix............................................................................125
2.6.6.10 Notes relatives à la version 7.0 fr Caldera (SCO) Unixware.....................127
2.6.9 Notes relatives à Novell NetWare........................................................................128
2.7 Commentaires sur l'installation de Perl.........................................................................129
2.7.4 Problèmes lors de l'utilisation des interfaces Perl DBI et DBD............................130
3.3 Création et utilisation d'une base de données..............................................................136
3.3.4 Récupérer des informations à partir d'une table..................................................140
3.3.4.4 Trier les enregistrements............................................................................143
3.3.4.9 Utiliser plus d'une table...............................................................................151
3.5 Exemples de requêtes usuelles....................................................................................154
3.5.4 La ligne contenant la plus grande valeur d'un certain champ par rapport à un
groupe.....................................................................................................................156
3.5.9 Utiliser AUTO_INCREMENT................................................................................159
3.7 Requêtes du projet Twin...............................................................................................161
3.7.2 Afficher une table avec l'état des paires de jumeaux...........................................164
3.8 Utilisation de MySQL avec Apache...............................................................................164
4.1 Configuration de MySQL...............................................................................................165
4.1.4 Faire fonctionner plusieurs serveurs MySQL sur la même machine....................173
4.2 Règles de sécurité et droits d'accès au serveur MySQL..............................................175
4.2.3 Options de démarrage qui concernent la sécurité...............................................178
4.2.11 Causes des erreurs Access denied...................................................................191
4.3 Gestion des comptes utilisateurs de MySQL................................................................195
4.3.9 Utilisation des connexions sécurisées.................................................................207
4.3.9.3 Options de GRANT.....................................................................................208
4.4 Prévention des désastres et restauration.....................................................................209
4.4.6 Utilisation de myisamchk pour la maintenance des tables et leur
4.4.6.10 Optimisation de tables...............................................................................223
4.4.8 Obtenir des informations sur une table................................................................224
4.5 Référence de langage d'administration de la base de données...................................228
4.5.6 Syntaxe de SHOW...............................................................................................231
4.5.6.2 SHOW TABLE STATUS.............................................................................233
4.5.6.3 Syntaxe de SHOW STATUS.......................................................................234
4.5.6.8 Syntaxe de SHOW CREATE TABLE..........................................................247
4.6 Localisation de MySQL et utilisation internationale......................................................247
4.6.1 Le jeu de caractères utilisé pour les données et le stockage...............................247
4.6.1.1 Jeu de caractères allemand........................................................................248
4.6.7 Problèmes avec les jeux de caractères...............................................................252
4.7 Scripts serveur MySQL et utilitaires..............................................................................252
4.7.5 mysqld?max , la version étendue du serveur mysqld..........................................262
4.8 MySQL Scripts clients et utilitaires................................................................................263
4.8.10 Comment exécuter des commandes SQL depuis un fichier texte.....................281
4.9 Les fichiers de log de MySQL.......................................................................................282
4.9.6 Entretien des fichiers de log.................................................................................286
4.10 Réplication de MySQL................................................................................................286
4.10.8 Correction de problèmes courants.....................................................................303
5.1 Vue d'ensemble de l'optimisation..................................................................................306
5.1.1 Limitations et inconvénients des choix conceptuels de MySQL...........................306
5.1.5 Utiliser vos propres tests de performance............................................................310
5.2 Optimisation des SELECT s et autres requêtes...........................................................311
5.2.2 Mesurer les performances d'une requête............................................................317
5.2.12 Autres conseils d'optimisation............................................................................324
5.3 Verrouillage de tables...................................................................................................326
5.3.2 Problème de verrouillage de tables......................................................................327
5.4 Optimisation de la structure de la base de données.....................................................328
5.4.8 Inconvénients de la création d'un grand nombre de tables dans la même
base de données.....................................................................................................335
5.5 Optimisation du serveur MySQL...................................................................................335
5.5.1 Réglage du système, au moment de la compilation, et paramètres du
démarrage...............................................................................................................335
5.5.6 Syntaxe de SET...................................................................................................341
5.6 Problèmes avec les disques.........................................................................................344
5.6.1 Utiliser des liens symboliques..............................................................................345
5.6.1.2 Utiliser des liens symboliques avec les tables............................................345
6.1 Structure du langage.....................................................................................................347
6.1.1 Literals: Comment écrire les chaînes et les nombres..........................................347
6.1.1.4 Valeurs NULL..............................................................................................349
6.1.2 Noms de bases, tables, index, colonnes et alias.................................................350
6.1.7 Est?ce que MySQL est sensible aux mots réservés ?.........................................356
6.2 Types de colonnes........................................................................................................357
6.2.2 Les types date et heure........................................................................................363
6.2.2.4 Le type YEAR..............................................................................................368
6.2.3 Les types chaînes................................................................................................369
6.2.3.4 Le type SET................................................................................................372
6.2.6 Capacités des colonnes.......................................................................................374
6.3 Fonctions à utiliser dans les clauses SELECT et WHERE...........................................375
6.3.1 Opérateurs et fonctions tout?types......................................................................376
6.3.1.4 Les fonctions de contrôle............................................................................380
6.3.2 Fonctions de chaînes de caractères....................................................................381
6.3.2.2 Sensibilité à la casse...................................................................................390
6.3.3 Fonctions numériques..........................................................................................390
6.3.3.2 Fonctions mathématiques...........................................................................391
6.3.6 Autres fonctions...................................................................................................404
6.3.6.2 Fonctions diverses......................................................................................405
6.3.7 Fonctions avec la clause GROUP BY..................................................................410
6.4 Manipulation de données : SELECT , INSERT , UPDATE , DELETE..........................412
6.4.1 Syntaxe de SELECT............................................................................................412
6.4.1.2 Syntaxe de UNION......................................................................................417
6.4.3 Syntaxe de INSERT.............................................................................................418
6.4.3.1 Syntaxe de INSERT ... SELECT.................................................................420
6.4.9 Syntaxe de LOAD DATA INFILE..........................................................................425
6.4.10 Syntaxe de DO...................................................................................................431
6.5 Définition de données : CREATE , DROP , ALTER......................................................431
6.5.3 Syntaxe de CREATE TABLE...............................................................................432
6.5.3.1 Modification automatique du type de colonnes...........................................439
6.5.8 Syntaxe de DROP INDEX....................................................................................444
6.6 Commandes de bases de l'utilisateur de MySQL.........................................................444
6.6.2 Syntaxe de DESCRIBE (obtenir des informations sur les colonnes)...................444
6.7 Commandes relatives aux verrous et aux transactions................................................445
6.7.3 Syntaxe de SET TRANSACTION........................................................................447
6.8 Recherche en Texte?entier (Full?text) dans MySQL....................................................448
6.8.3 A faire dans la recherche Full?text......................................................................452
6.9 Cache de requêtes MySQL...........................................................................................452
6.9.4 Status du cache de requêtes et maintenance......................................................455
7.1 Tables MyISAM.............................................................................................................456
7.1.2 Formats de table MyISAM....................................................................................459
7.1.2.3 Caractéristiques des tables compressées..................................................461
7.1.3 Problèmes avec les tables MyISAM.....................................................................462
7.1.3.2 Clients is using or hasn't closed the table properly.....................................462
7.2 Tables assemblées MERGE.........................................................................................463
7.2.1 Problèmes avec les tables MERGE.....................................................................465
7.3 Tables ISAM.................................................................................................................466
7.4 Tables HEAP................................................................................................................466
7.5 Tables InnoDB..............................................................................................................467
7.5.3 Créer des bases InnoDB......................................................................................473
7.5.3.1 Si quelque chose se passe mal à la création de la base de données........474
7.5.6 Sauver et restaurer une base InnoDB..................................................................477
7.5.6.1 Points de contrôle.......................................................................................479
7.5.8 Modèle transactionnel de InnoDB........................................................................479
7.5.8.9 Le moniteur InnoDB....................................................................................487
7.5.10 Structures de tables et d'index...........................................................................489
7.5.10.4 Structure physique d'une ligne..................................................................491
7.5.11 Gestion de l'espace fichiers et des entrées/sorties disque................................491
7.5.11.3 Défragmentation des tables......................................................................493
7.5.15 Informations de contact InnoDB.........................................................................502
7.6 Tables BDB ou BerkeleyDB..........................................................................................503
7.6.8 Erreurs pouvant survenir lors de l'utilisation des tables BDB...............................506
8.1 API PHP pour MySQL...................................................................................................508
8.1.1 Problèmes fréquents avec MySQL et PHP..........................................................508
8.2 API Perl pour MySQL....................................................................................................508
8.2.3 Plus d'informations relatives à DBI / DBD............................................................514
8.3 Support ODBC avec MySQL........................................................................................514
8.3.2 Comment remplir les différents champs dans le programme d'administrateur
ODBC......................................................................................................................515
8.3.7 Rapporter des problèmes avec MyODBC............................................................522
8.4 Interface C pour MySQL...............................................................................................523
8.4.3 Description des fonctions de l'API C....................................................................529
8.4.3.11 mysql_eof()...............................................................................................535
8.4.3.26 mysql_get_proto_info().............................................................................543
8.4.3.47 mysql_select_db().....................................................................................558
8.4.3.52 mysql_use_result()....................................................................................561
8.4.4 Description des fonctions threadées de C...........................................................562
8.4.4.4 mysql_thread_safe()...................................................................................563
8.4.5 Description des fonctions C du serveur embarqué..............................................563
8.4.5.2 mysql_server_end()....................................................................................564
8.4.6 Questions courantes sur la librairie C..................................................................564
8.4.6.1 Pourquoi est ce qu'après mysql_query() ait indiqué un résultat positif,
mysql_store_result() retourne parfois NULL ?............................................564
8.4.6.4 Problèmes lors de la liaison avec l'API C....................................................566
8.4.9 libmysqld, la librairie du serveur embarqué MySQL.............................................568
8.4.9.7 Licence du serveur embarqué.....................................................................573
8.5 Interfaces MySQL pour C++.........................................................................................573
8.5.1 Borland C++.........................................................................................................573
8.9 Couche MySQL pour Eiffel...........................................................................................574
9.1 Rouages de MySQL......................................................................................................575
9.1.2 Suite de test de MySQL.......................................................................................575
9.1.2.3 Rapporter des bugs dans la suite de tests MySQL.....................................577
9.2 Ajouter des fonctions à MySQL....................................................................................578
9.2.2 Ajouter une nouvelle fonction définie par l'utilisateur (UDF)................................579
9.2.2.5 Compiler et installer des fonctions utilisateurs............................................586
9.2.3 Ajouter de nouvelles fonctions natives.................................................................587
9.3 Ajouter une nouvelle procédure à MySQL....................................................................588
9.3.2 Ecrire une procédure............................................................................................589
10.2 Erreurs communes rencontrées avec MySQL............................................................591
10.2.16 Fichier non trouvé............................................................................................600
10.3 Notes relatives à l'installation......................................................................................601
10.3.3 Problèmes avec les permissions sur fichiers.....................................................603
10.4 Notes relatives à l'administration................................................................................604
10.4.6 Problèmes de fuseaux horaires.........................................................................609
10.5 Problèmes relatifs aux requêtes.................................................................................609
10.5.7 Problèmes de comparaisons avec nombres à virgule flottante..........................614
10.6 Questions relatives aux définitions de tables..............................................................616
10.6.3 Problèmes avec les tables temporaires.............................................................617
12.3 Supporters de MySQL................................................................................................630
13.1 Changes in release 4.1.x (Alpha)................................................................................632
13.1.1 Changes in release 4.1.0...................................................................................632
13.2 Changes in release 4.0.x (Beta).................................................................................633
13.2.7 Changes in release 4.0.0 (Oct 2001: Alpha)......................................................643
13.3 Changes in release 3.23.x (Stable).............................................................................644
13.3.35 Changes in release 3.23.21.............................................................................667
13.3.56 Changes in release 3.23.0 (05 Aug 1999: Alpha)............................................677
13.4 Changes in release 3.22.x (Older; still supported)......................................................679
13.4.29 Changes in release 3.22.7 (Sep 1998: Beta)...................................................687
13.4.36 Changes in release 3.22.0...............................................................................691
13.5 Changes in release 3.21.x..........................................................................................692
13.5.35 Changes in release 3.21.0...............................................................................704
13.6 Changes in release 3.20.x..........................................................................................705
13.6.7 Changes in release 3.20.11...............................................................................708
13.6.14 Changes in release 3.20.0...............................................................................711
13.7 Changes in release 3.19.x..........................................................................................712
13.7.3 Changes in release 3.19.3.................................................................................712
14.1 Déboguer un serveur MySQL.....................................................................................714
14.1.5 Utilisation des fichiers de log pour trouver d'où viennent les erreurs de
mysqld.....................................................................................................................718
14.1.6 Faire une batterie de tests lorsque vous faites face à un problème de table
corrompue...............................................................................................................719
14.6 Différences entre les différents packages de threads.................................................725
xvii
1 Informations générales
Le logiciel MySQL (TM) est un serveur de base de données SQL très rapide, multi threadé,
multi utilisateur et robuste. Le serveur MySQL est destiné aux missions stratégiques et aux
systèmes de production à forte charge, ainsi qu'à l'intégration dans des logiciels déployés à grande
échelle. MySQL est une marque déposée de MySQL AB . Le logiciel MySQL dispose de deux
licenses . Les utilisateurs peuvent choisir entre utiliser MySQL comme un logiciel Open Source /
Logiciel libre , sous les termes de la licence GNU General Public License (
MySQL AB . MySQL Support and Licensing . Le site web de MySQLfournit les dernières informations sur le serveur MySQL .
La liste suivante décrit les sections particulières de ce manuel :
Pour plus d'informations sur la société derrière le
•
serveur de base de données
MySQLPour une présentation des capacités de
•
serveur de base de données MySQL , voyez
Pour les instructions d'installation, voyez Installation de MySQL .
•
Pour des conseils sur le port du
•
serveur de base de données MySQL sur de
Pour des informations sur la mise à jour vers la version 3.23, voyez Passer de la version
•
Pour des informations sur la mise à jour vers la version 3.22, voyez Passer de la version
•
Pour une introduction au
•
serveur de base de données MySQL , voyez Tutoriel
Pour des exemples de
•
SQL et des tests de performances, voyez le dossier de tests (
sql?bench de la distribution.
Pour connaître l'historique des fonctionnalités et bogues, voyez Historique des versions de
•
Pour une liste des bogues connus et des limitations, voyez Erreurs connues et manques de
•
Pour les plans de développement, voyez MySQL and the future (The TODO) .
•
Pour une liste de tous les contributeurs à ce projet, voyez Contributeurs .
•
Important : Les rapports d'erreurs (aussi appelés bogues), ainsi que les questions et
rapporter des bogues ou problèmes .Le script mysqlbug doit être utilisé pour générer le rapport de
bogues. Pour les distributions sources, le script mysqlbug est accessible dans le dossier scripts
. Pour les distributions binaires, mysqlbug est installé dans le dossier bin . Si vous avez trouvé un
problème de sécurité critique dans le code du serveur MySQL , vous devez envoyez un email à
.
1.1 A propos du manuel
Ceci est le manuel de référence de MySQL ; il documente MySQL jusqu'à la version 4.0.5a. Les
évolutions fonctionnelles sont toujours indiquées avec une référence à la version d'évolution, de
manière à ce que ce manuel soit toujours valable, même si vous utilisez une ancienne version de
MySQL . Etant un manuel de référence, il ne fournit aucune description générale sur le langage SQL
ou les concepts de bases de données relationnelles.Comme le logiciel de base de données
MySQL est en développement constant, ce manuel es mis à jour fréquemment. La version la plus
1 Informations générales
1
HTML, PDF et Windows HLP.
L'original du document est un fichier au format Texinfo. La version HTML est produite
automatiquement avec une version modifiée de texi2html . La version en texte plein et version
Info sont produites par makeinfo . La version PostScript est produite avec texi2dvi et dvips .
La version PDF est produite avec pdftex .
Si vous avez du mal à trouver des informations dans ce manuel, vous pouvez essayer notre version
suggestions concernant des ajouts ou des corrections à ce manuel, vous pouvez les envoyez à
Axmark et Michael (Monty) Widenius. Il est actuellement entretenu par Michael (Monty) Widenius,
Arjen Lentz et Paul DuBois. Pour les autres contributeurs, voyez les Contributeurs .
La traduction de ce manuel a été faite sous la direction de Damien Seguy, et organisée par Mehdi
Achour. David Manusset, Guillaume Plessis, Patrick Haond, Sylvain Maugiron et Yannick Torres ont
contribué largement à cette traduction et son entretien.
Le copyright (2002) de ce manuel est la propriété de la société suédoise MySQL ABlicenses utilisées par MySQL .
1.1.1 Conventions utilisées dans ce manuel
Ce manuel utilise certaines conventions typographiques :
constant
La police à largeur fixe est utilisée pour les noms de commandes et les options, les
requêtes SQL, les noms de bases de données, de tables et de colonnes, le code C
et Perl, les variables d'environnement. Par exemple, ``Pour voir comment
mysqladmin fonctionne, exécutez?le avec l'option ??help .''
filename
La police à largeur fixe avec des guillemets d'encadrement indique des noms de
fichiers et de chemins de dossiers. Par exemple : ``La distribution est installée dans
le dossier /usr/local/ .''
'c'
La police à largeur fixe avec des guillemets d'encadrement est aussi utilisée pour
indiquer des séquences de caractères. Par exemple : ``Pour spécifier un caractère
joker, utilisez le caractère '%' .''
italic
Les polices en italique sont utilisées pour attirer l'attention, comme ceci .
boldface
Le gras est utilisé pour les entêtes de tables, et aussi pour attirer fortement votre
attention .
Lorsque les commandes qui sont affichées sont destinées à être exécutées par un programme
particulier, le nom du programme est indiqué dans l'invite de la commande. Par exemple, shell>
indique une commande que vous exécutez depuis votre console shell, et mysql> indique une
commande que vous exécutez depuis le client mysql :
shell> tapez une commande shell ici
mysql> tapez une requête SQL ici
Les commandes shell sont affichées en utilisant la syntaxe du Bourne. Si vous utilisez le style csh
1.1.1 Conventions utilisées dans ce manuel
2
?shell, vous aurez peut être a adapter légèrement les commandes. Par exemple, la syntaxe de
modification d'une variable et d'exécution d'une commande ressemble à ceci en Bourne shell :
shell> NOMVAR=valeur une_commande
En csh , vous auriez a exécuter la commande suivante :
shell> setenv NOMVAR valeur
shell> une_commande
Souvent, les noms de bases de données, tables ou colonnes doivent être remplacés dans les
commandes. Pour indiquer qu'une telle substitution est nécessaire, ce manuel utilise les noms de
nom_de_base , nom_de_table et nom_colonne . Par exemple, vous pourriez avoir une requête
comme ceci :
mysql> SELECT nom_colonne FROM nom_de_base.nom_de_table;
Cela signifie que si vous devez saisir une requête semblable, vous devriez utiliser votre propre nom
de colonne, table et base de données, ce qui pourrait se traduire par ceci :
mysql> SELECT author_name FROM biblio_db.author_list;
Les mot réservés SQL ne sont pas sensibles à la casse, et peuvent être écrits en majuscules ou
minuscules. Ce manuel utilise les les illustrations de syntaxe, les crochets ( '['
et ']' ) sont utilisés pour indiquer des clauses ou mots optionnels. Par exemple, dans la requête
suivante, IF EXISTS est optionnel :
DROP TABLE [IF EXISTS] nom_de_table
Lorsqu'un élément de syntaxe est constitué d'un certain nombre d'alternatives, les alternatives sont
séparées par des barres verticales ( '|' ). Lorsqu'un membre d'un tel jeu de possibilités peut être
choisi, les alternatives sont listées entre crochets ( '[' et ']' ):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
Lorsqu'un élément d'un jeu de possibilités doit être choisi, les alternatives sont placées entre
accolades ( '{' et '' }):
{DESCRIBE | DESC} nom_de_table {nom_colonne | wild}
1.2 Qu'est ce que MySQL?
MySQL , le plus populaire des serveurs de bases de données SQL Open Source , est développé,
distribué et supporté par MySQL AB . MySQL AB est une société commerciale, fondée par les
développeurs de MySQL, qui développent leur activité en fournissant des services autour de MySQL
. Qu'est ce que MySQL AB ? Le site web de MySQLdernières actualités sur le logiciel MySQL et sur la société MySQL AB .
MySQL est un système de gestion de bases de données.
Une base de données est un ensemble organisé de données. Cela peut aller d'une
simple liste de courses au supermarché à une galerie de photos, ou encore les
grands systèmes d'informations des multi?nationales. Pour ajouter, lire et traiter des
données dans une base de données, vous avez besoin d'un système de gestion de
bases de données tel que le serveur MySQL . Comme les ordinateurs sont très bons
à manipuler de grandes quantités de données, le système de gestion de bases de
données joue un rôle central en informatique, aussi bien en tant qu'application à part
entière, qu'intégré dans d'autres logiciels.
MySQL est un serveur de bases de données relationnel.
Un serveur de bases de données stocke les données dans des tables séparées
plutôt que de tout rassembler dans une seule table. Cela améliore la rapidité et la
souplesse de l'ensemble. Les tables sont reliées par des relations définies, qui
rendent possible la combinaison de données entre plusieurs tables durant une
requête. Le SQL dans `` MySQL '' signifie `` Structured Query Language '' : le
langage standard pour les traitements de bases de données.
MySQL est Open Source .
Open Source (Standard Ouvert) signifie qu'il est possible à chacun d'utiliser et de
modifier le logiciel. Tout le monde peut télécharger MySQL sur Internet, et l'utiliser
1.2 Qu'est ce que MySQL?
3
sans payer aucun droit. Toute personne en ayant la volonté peut étudier et modifier
le code source pour l'adapter à ses besoins propres. Le logiciel MySQL utilise la
licence GPL ( GNU General Public Licensepour définir ce que vous pouvez et ne pouvez pas faire avec ce logiciel, dans
différentes situations. Si vous ne vous sentez pas confortable avec la licence GPL ou
bien que vous devez intégrer MySQL dans une application commerciale, vous pouvez
acheter une licence commercial auprès de MySQL AB. Licences MySQL .
Pourquoi utiliser le serveur de bases de données MySQL ?
Le serveur de bases de données MySQL est très rapide, fiable et facile à
utiliser. Si c'est ce que vous recherchez, vous devriez faire un essai. Le serveur de
bases de données MySQL dispose aussi de fonctionnalités pratiques, développées
en coopération avec nos utilisateurs. Vous pouvez trouver une comparaison des
performances du serveur MySQL avec d'autres systèmes de bases de données
dans nos pages de tests de performances. La suite de tests comparatifs de MySQL .
Le serveur MySQL a été développé à l'origine pour gérer de grandes bases de
données plus rapidement que les solutions existantes, et a été utilisé avec succès
dans des environnements de production très contraints et très exigeants, depuis
plusieurs années. Bien que toujours en développement, le Le serveur MySQL offre
des fonctions nombreuses et puissantes. Ses possibilités de connexions, sa rapidité
et sa sécurité font du serveur MySQL une serveur hautement adapté à Internet.
Les caractéristiques techniques du serveur MySQL .
logiciel de bases de données MySQL est un système client/serveur,
constitué d'un serveur SQL multi threadé qui supporte différents systèmes de
stockage, plusieurs logiciels clients et librairies, outils d'administration, ainsi que de
nombreuses interfaces de programmation (des API ).
Nous fournissons aussi le serveur MySQL sous la forme d'une librairie
multi threadé que vous pouvez inclure dans vos applications, pour obtenir un produit
plus compact, plus rapide et plus facile à gérer.
Il existe un grand nombre de contributions à MySQL .
Il est très probable que vous pourrez trouver votre éditeur préféré ou que votre
environnement de programmation supporte déjà le serveur de base de
données MySQL .
La prononciation officielle de MySQL est ``My Ess Que Ell'' (en anglais), ce qui donne ``Maille Esse
Cu Elle'' en phonétique française. Evitez d'utiliser la prononciation ``my sequel'', mais nous ne nous
formaliserons pas que vous utilisiez ``my sequel'' ou une autre prononciation adaptée.
1.2.1 Histoire de MySQL
Nous avons débuté avec l'intention d'utiliser mSQL pour se connecter à nos tables en utilisant nos
propres routines bas niveau ISAM. Cependant, après quelques tests, nous sommes arrivés à la
conclusion que mSQL n'était pas assez rapide et flexible pour nos besoins. Cela nous a conduit à
créer une nouvelle interface SQL pour notre base de données, mais en gardant la même API que
mSQL . Cette API a été choisie pour la facilité de port des programmes de tiers.
Les liens avec le nom MySQL ne sont pas parfaitement établis. Notre dossier de base et un grand
nombre de librairies et outils étaient préfixés par ``my'' depuis plus de 10 ans. Mais la fille de Monty,
plus jeune que lui, était aussi appelée My. Lequel des deux a conduit au nom de MySQL est toujours
un mystère, même pour nous.
1.2.1 Histoire de MySQL
4
1.2.2 Les fonctionnalités principales de MySQL
La liste suivante décrit les caractéristiques principales du logiciel de bases de données
MySQL . MySQL 4.x In A Nutshell .
Interne et portabilité
Ecrit en C et C++. Testé sur un large éventail de compilateurs différents.
Utilise GNU Automake, Autoconf et Libtool pour une meilleure portabilité.
Dispose d'API pour C, C++, Eiffel, Java, Perl, PHP, Python, Ruby et Tcl.
Complètement multi threadé, grâce aux threads du noyau. Cela signifie que
vous pouvez l'utiliser facilement sur un serveur avec plusieurs processeurs.
Tables B?tree très rapide, avec compression d'index.
Système l'allocation mémoire très rapide, exploitant les threads.
Jointures très rapides, exploitant un système de jointures multiples en une
seule passe optimisé.
Tables en mémoire, pour réaliser des tables temporaires.
Les fonctions SQL sont implémentées grâce à une librairie de classes
optimisées, qui sont aussi rapides que possible! Généralement, il n'y a
aucune allocation mémoire une fois que la requête a été initialisée.
Le code de MySQL est vérifié avec Purify (un utilitaire de détection des fuites
mémoires commercial) ainsi qu'avec Valgrind, un outil GPL (
).
Column Types
Nombreux types de colonnes : entiers signés ou non, de 1, 2, 3, 4, et 8
octets, FLOAT , DOUBLE , CHAR , VARCHAR , TEXT , BLOB , DATE , TIME ,
DATETIME , TIMESTAMP , YEAR , SET et ENUMEnregistrements de taille fixe ou variable.
Toutes les colonnes ont des valeurs par défaut. Vous pouvez utiliser la
commande INSERT pour insérer un sous ensemble de colonnes : les
colonnes qui ne sont pas explicitement cités prennent alors leur valeur par
défaut.
Commandes et fonctions
Support complet des opérateurs et fonctions dans la commande SELECT et la
clause WHERE . Par exemple :
mysql> SELECT CONCAT(first_name, " ", last_name)
?> FROM tbl_name
?> WHERE income/dependents > 10000 AND age > 30;
Support complet des clauses SQL GROUP BY et ORDER BY . Support des
fonctions de groupages ( COUNT() , COUNT(DISTINCT ...) , AVG() ,
STD() , SUM() , MAX() et MIN() ).
Support des clauses LEFT OUTER JOIN et RIGHT OUTER JOIN avec les
syntaxes ANSI SQL et ODBC.
Les alias de tables et colonnes sont compatibles avec le standard SQL92.
DELETE , INSERT , REPLACE et UPDATE retourne le nombre de lignes
affectées. Il est possible d'obtenir le nombre de lignes trouvées en modifiant
une option lors de la connexion au serveur.
La commande spécifique à MySQL SHOW est utilisée pour obtenir des
informations sur les bases, tables et index. La commande EXPLAIN sert à
optimiser les requêtes.
Les noms de fonctions ne sont jamis en conflit avec les noms de tables ou
colonnes. Par exemple, ABS est un nom de colonne valide. La seule
restriction est que, lors d'un appel de fonction, aucun espace n'est toléré