En 94, M. Widenius crée un nouveau serveur basé sur les caractéristiques de msql.
En 95, Tcx distribue MySQL sur Internet.
Une version 3.11.1 est diffusée dès 1996 (serveur fonctionnant sur plusieurs plate-formes).
La version actuelle est la version 3.23.27
RapideLe serveur MySQL est trés rapide. Des tests de performances sont disponibles sur le site de MySQL
Facile à utiliserMySQL est beaucoup plus simple à utiliser que la plupart des serveurs de bases de données commerciaux.
API diversesOn peut effectuer diverses opérations sur une base MySQL en utilisant des interfaces écrits en C, Perl, C++, Java, Python, PHP.
CoûtJusqu'à la version 3.20.32a, mySQL était sous licence GPL.Il faut une licence pour faire tourner mySQL sous Windows.Sous les autres plates-formes, l'utilisation de mySQL est gratuite dans un but non commercial sinon il faudra acheter une licence pour environ 200 $ US.
Connexion et SécuritéMySQL dispose d'un système de sécurité permettant de gérer les personnes et les machines pouvant accéder aux différentes bases.
PortabilitéMySQL tourne sur divers systèmes tels que Unix, Windows, Linux ou OS/2.
Distribution ouverteLes sources étant fournies, il est possible d'améliorer mySQL.
MySQL ne peut pas gérer les points suivants :
Subselect.Les requêtes imbriquées ne sont pas supportées par MySQL.
Vous devez donc traduire vos requêtes imbriquées en requêtes classiques.
Si vous avez des difficultés une bonne solution est de sauvegarder les valeurs des sous requêtes dans une table temporaire, et d'accéder à cette table temporaire depuis la requête principale.
Un exemple de requête que ne supporte pas MySQL :
SELECT deptno, ename, sal
FROM emp x
WHERE sal > ( SELECT AVG(sal)
FROM emp
WHERE x.deptno = deptno )
ORDER BY deptno ;
Transanctions et commit / rollback.Une transaction est une unité logique de travail qui contient une ou plusieurs blocs SQL executés par un utilisateur.
Une transaction se termine lorsqu'elle est explicitement arrétée par l'utilisateur.
En SQL classique, une transaction commence par un COMMIT et se termine par un ROLLBACK.
MySQL ne supporte pas les transactions.
On peut toutefois simuler les transactions en utilisant LOCK_TABLES et UNLOCK_TABLES.
Clés étrangères et intégrité référentielle.Dans une base de données relationnelles, les identifiants (clefs primaires) d'une table se retrouvent en clefs étrangères d'une autre table en relation avec la première.
Ce système de clefs primaires et clefs secondaires permet d'assurer l'intégrité des données.
En effet, lorsqu'on modifie une clef primaire, les clefs secondaires sont automatiquement mis à jour.
MySQL ne supporte pas ce système.
Lorsqu'on crée une table, on peut très bien utiliser l'argument FOREIGN KEY (clef étrangère) pour un attribut mais ceci n'a aucune influence.
Cet argument est juste là pour assurer une meilleure importation de bases gérées par un autre SGBDR que MySQL.
Procédures stockées. Déclencheurs. Vues.Une vue est une présentation des données contenues dans une ou plusieurs tables (ou d'autres vues).
Une vue prend le résultat d'une requête et le traite comme si c'était une table.
C'est pourquoi une vue peut aussi porter le nom de "Requête sauvée" ou "Table virtuelle".
En SQL classique, une vue est définie comme suit :
SELECT View Vue_Employe as SELECT nom, numero FROM employe ;Les points ci-dessus devraient être développés au cours des prochaines versions.
Pour installer MySQL, il faut effectuer les étapes suivantes :
Récupérer les sources sur le site de MySQL tar zxf mysql-version.tar.gz ./configure - -prefix=« path » make make install lancer le script mysql_install_dbL'installation est on ne peut plus classique pour le monde Linux.
Pour démarrer le serveur vous pouvez lancez la commande safe_mysqld.
Pour un démarrage automatique :
Dans /etc/rc.d/init.d/ créer un lien symbolique mysql vers /usr/local/share/mysql.serverln –s /usr/local /share/mysql.server /etc/rc.d/init.d/mysql
Dans /etc/rc.d/rc3.d créer un lien symbolique S90mysql vers /etc/rc.d/init.d/mysqlln –s /etc/rc.d/init.d/mysql /etc/rc.d/rc3.d/S90mysql
Vous pouvez démarrer le serveur par la commande /etc/rc.d/init.d/mysql start