(prononcée []) est un système de gestion de bases de données relationnelles (SGBDR). Il est distribué sous une double licence GPL et propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde., autant par le grand public (applications web principalement) que par des professionnels, en concurrence avec Oracle, PostgreSQL et Microsoft SQL Server.

Son nom vient du prénom de la fille du cocréateur Michael Widenius, . SQL fait référence au Structured Query Language, le langage de requête utilisé.

MySQL AB a été acheté le par Sun Microsystems pour un milliard de dollars américains, blogs.mysql.com. En 2009, Sun Microsystems a été acquis par Oracle Corporation, mettant entre les mains d'une même société les deux produits concurrents que sont Oracle Database et MySQL. Ce rachat a été autorisé par la Commission européenne le L'UE autorise le rachat de Sun par Oracle, Reuters European Commission Unconditionally Approves Oracle’s Acquisition of Sun, Oracle.

Depuis , son créateur Michael Widenius a créé MariaDB (Maria est le prénom de sa deuxième fille) pour continuer son développement en tant que projet open source.

Caractéristiques MySQL est un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture, ce qui signifie qu'il est davantage orienté vers le service de données déjà en place que vers celui de mises à jour fréquentes et fortement sécurisées. Il est multi-thread et multi-utilisateur.

C'est un logiciel libre., open source., développé sous double licence selon qu'il est distribué avec un produit libre ou avec un produit propriétaire. Dans ce dernier cas, la licence est payante, sinon c'est la licence publique générale GNU (GPL) qui s'applique. Un logiciel qui intègre du code MySQL ou intègre MySQL lors de son installation devra donc être libre ou acquérir une licence payante. Cependant, si la base de données est séparée du logiciel propriétaire qui ne fait qu'utiliser des API tierces (par exemple en C# ou php), alors il n'y a pas besoin d'acquérir une licence payante MySQL. Ce type de licence double est utilisé par d'autres produits comme le framework de développement de logiciels Qt (pour les versions antérieures à la 4.5).

Systèmes d'exploitation supportés MySQL fonctionne sur de nombreux systèmes d'exploitation différents, incluant AIX, IBM i-5, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetWare, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SCO OpenServer, SCO UnixWare, Tru64 Unix, Windows.

Les bases de données sont accessibles en utilisant les langages de programmation C, C++, VB, VB .NET, C#, Delphi/Kylix, Eiffel, Java, Perl, PHP, Python, WinDev, Ruby et Tcl ; une API spécifique est disponible pour chacun d'entre eux. Une interface ODBC appelée MyODBC est aussi disponible. En Java, MySQL peut être utilisé de façon transparente avec le standard JDO.

Langages informatiques supportés MySQL supporte deux langages informatiques, le langage de requête SQL et le SQL/PSM (Persistent Stored Modules), une extension procédurale standardisée au SQL incluse dans la norme SQL:2003 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34135.. SQL/PSM, introduit dans la version 5 de MySQL, permet de combiner des requêtes SQL et des instructions procédurales (boucles, conditions…), dans le but de créer des traitements complexes destinés à être stockés sur le serveur de base de données (objets serveur), par exemple des procédures stockées ou des déclencheurs.

Utilisation MySQL fait partie du quatuor LAMP : Linux, Apache, MySQL, PHP. Il appartient également à ses variantes WAMP (Windows) et MAMP (macOS).

Le couple PHP/MySQL est très utilisé par les sites web et proposé par la majorité des hébergeurs web. Plus de la moitié des sites Web fonctionnent sous Apache, qui est le plus souvent utilisé conjointement avec PHP et MySQL.

Historique De nombreuses entreprises, dont Google, Yahoo!, YouTube, Adobe, Airbus, Alstom, Crédit agricole, AFP, Reuters, BBC News, Ernst & Young, Alcatel-Lucent MySQL :: MySQL Customers by Industry utilisent actuellement MySQL.

Version de SQL MySQL supporte la norme SQL2 http://www.scriptol.com/programming/mysql.php (utilisation des RIGHT JOIN et LEFT JOIN.), la conformité à cette norme garantissant qu'il honorera les requêtes normalisées correspondantes. Cependant, les fonctionnalités des normes SQL les plus récentes ne sont pas toutes implémentées. et certaines ne respectent pas la syntaxe recommandée. (la concaténation par exemple), empêchant l'interopérabilité des requêtes entre différents SGBD.

Fonctionnalités Deux moteurs principaux sont présents dans MySQL : MyISAM et InnoDB.

MyISAM, contrairement à InnoDB, ne supporte ni transactions ni intégrité automatique des tables, il n'est pas destiné aux applications dont la cohérence des données est critique ; cependant, ses performances le font adopter pour des applications ayant besoin d'une base de données simple et peu onéreuse à mettre en œuvre.

Pour les utilisateurs, phpMyAdmin est un outil web souvent disponible pour créer, remplir et utiliser des bases MySQL.

Interopérabilité Les tables des bases de données SQL et celles des tableurs communiquent bien dans les deux sens (en ce qui concerne les seules données numériques et chaînes de caractères) au moyen du format CSV. Des formats de sauvegarde et restauration existent, sous forme d'ordres SQL, ainsi qu'en format XML.

Usage en production L'intérêt d'utiliser des outils ouverts a également poussé quelques établissements bancaires tels que le Crédit mutuel, le Crédit agricole, le Crédit lyonnais, la Banque de développement du Canada à inscrire MySQL au catalogue de leurs produits informatiques internes.

Dénomination MySQL est l'œuvre d'une société suédoise, MySQL AB, fondée par David Axmark, et Michael « Monty » Widenius.

Le nom MySQL vient de la combinaison de My, fille du cofondateur Michael « Monty » Widenius, avec l'acronyme SQL (selon la documentation de la dernière version en anglais« ».). D'autre part, le dossier base et une grande partie des bibliothèques utilisées par les développeurs utilisent le préfixe My.

. Sakila est aussi le nom d'une base de données faite pour la pratique..

Historique

La première version de MySQL est apparue le . Il a d'abord été créé pour un usage personnel à partir de mSQL en s'appuyant sur le langage de bas niveau ISAM qu'ils trouvaient trop lent et trop rigide. Ils ont créé une nouvelle interface SQL en gardant la même API que mSQL.

MySQL est passé en licence GPL à partir de la version 3.23.19 () Version 4.0 : première version en , stable depuis Version 4.1 : première version en , stable depuis Version 5.0 : première version en , stable depuis Version 5.1 : première version en , Release Candidate distribuée depuis Version 5.2 : distribuée en avant-première (ajout du nouveau moteur de stockage Falcon) en , cette ligne a ensuite été renommée 6.0 Version 5.5 : Version stable depuis Version 5.6 : Version stable depuis . Version 5.7 : Version stable depuis . Version 6.0 : première version alpha en , abandonnée depuis le rachat de MySQL par Oracle en Version 8.0 : Version stable depuis .

En 2003, MySQL AB et SAP AG concluent un accord. Le résultat s’appellera MaxDB. Il est issu de l'intégration du système de SAP (SAP DB) dans MySQL.

Le , Oracle Corporation annonce racheter Sun Microsystems pour de dollarsarticle ., qui venait lui-même de racheter MySQL AB, créant la crainte de voir MySQL disparaître – ou du moins ne plus être développé – au profit d'Oracle, le SGBD d'Oracle Corporation. MySQL est cependant loin d'avoir toutes les fonctionnalités d'Oracle, et pourrait donc être vu au contraire par la société comme un produit gratuit d'appel banalisant l'usage de SQL et préparant donc ses futures ventes.

Moteurs de base de données inclus L'une des spécificités de MySQL est de pouvoir gérer plusieurs moteurs au sein d'une seule base. Chaque table peut utiliser un moteur différent au sein d'une base. Ceci afin d'optimiser l'utilisation de chaque table.

Voici les différents moteurs historiques de MySQL :

MyISAM : moteur par défaut de MySQL jusqu'à la version 5.5. Il est le plus simple à utiliser et à mettre en œuvre. Il utilise plusieurs fichiers qui grandissent au fur et à mesure que la base grossit. Il ne supporte pas les transactions, ni les clefs étrangères ; InnoDB : moteur créé et maintenu par InnoBase (racheté par Oracle le ). Il gère les transactions et les clefs étrangères (et donc l'intégrité de ses tables). En contrepartie, les bases qui l'utilisent occupent bien plus d'espace sur le disque. InnoDB est le moteur par défaut depuis la version 5.6. BerkeleyDB (BDB) : moteur fourni par Sleepycat Software qui gère les transactions ; Merge : moteur fait pour fusionner plusieurs tables qui doivent être identiques ; Archive : moteur adapté à l'archivage de données. Les lignes sont compressées au fur et à mesure de leur insertion. Les requêtes de recherches sont alors sensiblement plus lentes ; Memory (Heap) : moteur où les tables sont stockées uniquement en mémoire. La structure de la base est stockée sur le disque dur mais les données sont stockées dans la RAM, si la machine serveur redémarre, les données seront perdues. Cependant, étant donné qu'il n'y a plus d'accès disque, une requête de modification (UPDATE, INSERT…) s'exécutera bien plus rapidement et sans charger les bras d'accès ; convient pour les mémorisations temporaires, comme un panier en e-commerce ; CSV : moteur utilisant des fichiers textes (au format CSV) comme stockage ; Blackhole : moteur réceptionnant les données, les transférant mais ne les stockant pas. Il peut être utilisé comme répéteur ou comme filtre de données ; ISAM : moteur d'origine de MySQL, maintenant obsolète et remplacé par MyISAM. Il est resté pour des raisons de compatibilité ; NDB (uniquement dans la version MaxDB) : moteur de base de données réseau gérant les grappes de serveurs ; Federated : moteur permettant d'accéder à des tables d'une base de données distantes plutôt que dans les fichiers locaux ; Exemple : moteur fictif et inutilisable, mis à disposition pour les développeurs ; : ce nouveau moteur devait faire son apparition avec MySQL 6. À l'époque MySQL AB avait voulu créer un nouveau moteur transactionnel pour ne plus dépendre d'Oracle qui venait de racheter InnoBase, créateurs du moteur de stockage InnoDB. Ce moteur de stockage a été abandonné depuis le rachat de MySQL par Oracle. Aria (anciennement Maria) : évolution ACID de MyISAM.

Des moteurs de stockages open source : Infobright : moteur VLDB, orienté vers les applications décisionnelles ; Sphinx : moteur orienté recherche plein texte ; PBXT : moteur transactionnel proche des performances d'InnoDB ; Memcached : moteur orienté table de hash en mémoire ; M4q : moteur orienté gestion de file d'attente ; ColumnStore (MariaDB) : moteur orienté colonne.

Des moteurs de stockages commerciaux : DB2 : moteur transactionnel copyright IBM ; SolidDB : moteur transactionnel copyright IBM ; NitroEDB : moteur VLDB copyright BrightHouse ; Tokutek : moteur VLDB.

La facilité d'utilisation de plusieurs moteurs de stockage dans une seule base avec MySQL permet une énorme flexibilité dans l'optimisation de la base : on utilisera MyISAM pour stocker les données peu sensibles et nécessitant un accès rapide aux données (par exemple une liste d'utilisateurs), InnoDB pour les fonctions avancées et les données plus sensibles (par exemple pour une liste des transactions bancaires), MEMORY pour des données pouvant être perdues lors du redémarrage de la machine et souvent modifiées (par exemple une liste d'utilisateurs en ligne), ARCHIVE pour un historique (ou log) ne nécessitant que peu de lecture…

Grappes de serveurs