# MySQL

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: licencia pública general/licencia comercial por Oracle Corporation. Está considerada la base de datos de código abierto más popular del mundo y una de las más populares en general, junto a Oracle y Microsoft SQL Server, todas para entornos de desarrollo web.
MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David Axmark, Allan Larsson y Michael Widenius). MySQL AB fue adquirida por Sun Microsystems en 2008 y ésta a su vez fue comprada por Oracle Corporation en 2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa finlandesa desarrolladora del motor InnoDB para MySQL.
Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de doble licenciamiento anteriormente mencionado. La base de datos se distribuye en varias versiones, una Community, distribuida bajo la Licencia pública general de GNU, versión 2, y varias versiones Enterprise, para aquellas empresas que quieran incorporarlo en productos privativos. Las versiones Enterprise incluyen productos o servicios adicionales tales como herramientas de monitorización y asistencia técnica oficial. En 2009 se creó un fork denominado MariaDB por algunos desarrolladores (incluido algunos desarrolladores originales de MySQL) descontentos con el modelo de desarrollo y el hecho de que una misma empresa controle a la vez los productos MySQL y Oracle Database.
Está desarrollado en su mayor parte en ANSI C y C++. Tradicionalmente se considera uno de los cuatro componentes de las pilas de desarrollo LAMP y WAMP.
MySQL se usa en muchos sitios web grandes y populares, como Wikipedia, Google (aunque no para búsquedas), Facebook, Twitter, Flickr, y YouTube.

## Lenguajes de programación

Existen varias interfaces de programación de aplicaciones que permiten acceder a las bases de datos MySQL a aplicaciones escritas en diversos lenguajes de programación, incluyendo C, C++, C#, Pascal, Delphi (vía dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby, Gambas, REALbasic (Mac y Linux), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una interfaz de programación de aplicaciones específica. También existe una interfaz ODBC, llamado MyODBC, que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL. También se puede acceder desde el sistema SAP con el lenguaje ABAP.

## Aplicaciones

MySQL se utiliza mucho en aplicaciones web (Joomla, Wordpress, Drupal, phpBB), en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python) y en herramientas de seguimiento de errores (Bugzilla). Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL.
MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante monitorizar de antemano el rendimiento para detectar y corregir errores tanto de SQL como de programación.

## Interfaces de usuario
### Interfaces gráficas de usuario

Una interfaz gráfica de usuario (GUI) es un tipo de interfaz que permite a los usuarios interactuar con dispositivos o programas electrónicos mediante iconos gráficos e indicadores visuales como la notación secundaria, a diferencia de las interfaces basadas en texto, las etiquetas de comandos mecanografiadas o la navegación de texto. Las GUI son más fáciles de aprender que las interfaces de línea de comandos (CLI), que requieren que los comandos se escriban en el teclado.
Se dispone de aplicaciones de administración gráfica (o "frontales") de propiedad de terceros y gratuitas que se integran con MySQL y permiten a los usuarios trabajar con la estructura y los datos de la base de datos de forma visual. Algunos frontales muy conocidos son:

#### MySQL Workbench

MySQL Workbench es el entorno integrado oficial de MySQL. Fue desarrollado por MySQL AB, y permite a los usuarios administrar gráficamente las bases de datos MySQL y diseñar visualmente las estructuras de las bases de datos. MySQL Workbench reemplaza el anterior paquete de software, MySQL GUI Tools. Similar a otros paquetes de terceros, pero aún considerado como el front end autorizado de MySQL, MySQL Workbench permite a los usuarios administrar el diseño y modelado de bases de datos, el desarrollo de SQL (reemplazando al MySQL Query Browser) y la administración de bases de datos (reemplazando al MySQL Administrator).
MySQL Workbench está disponible en dos ediciones, la habitual Edición Comunitaria gratuita y de código abierto que puede descargarse del sitio web de MySQL, y la Edición Estándar patentada que amplía y mejora el conjunto de características de la Edición Comunitaria.

#### Adminer

Adminer (antes conocido como phpMinAdmin) es un front-end gratuito de MySQL para gestionar el contenido de las bases de datos MySQL (desde la versión 2, también funciona en las bases de datos PostgreSQL, Microsoft SQL Server, SQLite y Oracle). El administrador se distribuye bajo la licencia Apache (o GPL v2) en forma de un único archivo PHP (de unos 300 KiB de tamaño), y es capaz de gestionar múltiples bases de datos, con muchas pieles CSS disponibles. Su autor es Jakub Vrána, quien comenzó a desarrollar esta herramienta como una alternativa ligera a phpMyAdmin, en julio de 2007.

#### ClusterControl

ClusterControl es un sistema de administración de MySQL de extremo a extremo que provee la habilidad de desplegar, monitorear, administrar y escalar instancias de MySQL desde una sola interfaz. Es desarrollado por Severalnines.
La versión comunitaria de ClusterControl es de uso libre y permite al usuario desplegar y monitorear sus instancias de MySQL. Las características avanzadas como el balanceo de carga, respaldo y restauración, conmutación por error, etc. son parte de una oferta de pago.

#### Database Workbench

Database Workbench es una aplicación de software para el desarrollo y la administración de múltiples bases de datos relacionales utilizando SQL, con interoperatividad entre diferentes sistemas de bases de datos, desarrollada por Upscene Productions.
Dado que Databases Workbench es compatible con múltiples sistemas de bases de datos, puede proporcionar a los desarrolladores de software la misma interfaz y el mismo entorno de desarrollo para estos sistemas de bases de datos que, de otro modo, serían diferentes, e incluye también herramientas de bases de datos cruzadas.
Database Workbench soporta las siguientes bases de datos relacionales: Oracle Database, Microsoft SQL Server, SQL Anywhere, Firebird, NexusDB, InterBase, MySQL y MariaDB. Database Workbench 5 funciona en plataformas Windows de 32 o 64 bits. Bajo Linux, FreeBSD o macOS Database Workbench puede funcionar con Wine.

#### DBeaver

DBeaver es un cliente SQL y una herramienta de administración de base de datos. DBeaver incluye soporte extendido para las siguientes bases de datos: MySQL y MariaDB, PostgreSQL, Oracle, DB2 (LUW), Exasol, SQL Server, Sybase, Firebird, Teradata, Vertica, Apache Phoenix, Netezza, Informix, Apache Derby, H2, SQLite y cualquier otra base de datos que tenga un controlador JDBC u ODBC. DBeaver es un software libre y de código abierto que se distribuye bajo la licencia Apache 2.0. El código fuente está alojado en GitHub.

#### DBEdit

DBEdit es un editor de base de datos, que puede conectarse a un Oracle, DB2, MySQL y cualquier base de datos que proporcione un controlador JDBC. Funciona en Windows, Linux y Solaris. DBEdit es un software libre y de código abierto y se distribuye bajo la Licencia Pública General GNU. El código fuente está alojado en SourceForge.

#### HeidiSQL

HeidiSQL, anteriormente conocido como MySQL-Front, es un cliente libre y de código abierto, o frontend para MySQL (y para sus bifurcaciones como MariaDB y Percona Server), Microsoft SQL Server y PostgreSQL. HeidiSQL es desarrollado por el programador alemán Ansgar Becker y algunos otros colaboradores en Delphi. Para manejar bases de datos con HeidiSQL, los usuarios deben ingresar a un servidor MySQL local o remoto con credenciales aceptables, creando una sesión. Dentro de esta sesión los usuarios pueden manejar las bases de datos MySQL dentro del servidor MySQL conectado, desconectándose del servidor cuando haya terminado. Su conjunto de características es suficiente para las operaciones más comunes y avanzadas de bases de datos, tablas y registros de datos, pero permanece en desarrollo activo para avanzar hacia la funcionalidad completa que se espera en un Frontend MySQL.

#### LibreOffice Base

La base de LibreOffice permite la creación y gestión de bases de datos, la preparación de formularios e informes que proporcionan a los usuarios finales un fácil acceso a los datos. Al igual que Microsoft Access, puede utilizarse como interfaz para diversos sistemas de bases de datos, incluidas las bases de datos Access (JET), las fuentes de datos ODBC y MySQL o PostgreSQL.

#### Navicat

Navicat es una serie de software de gestión y desarrollo de bases de datos gráficas producido por PremiumSoft CyberTech Ltd. para MySQL, MariaDB, Oracle, SQLite, PostgreSQL y Microsoft SQL Server. Tiene una interfaz gráfica de usuario similar a la de Explorer y admite múltiples conexiones de bases de datos locales y remotas. Su diseño está hecho para satisfacer las necesidades de una variedad de audiencias, desde administradores y programadores de bases de datos hasta diversas empresas/empresas que atienden a los clientes y comparten información con los socios.
Navicat es una herramienta multiplataforma y funciona en plataformas Microsoft Windows, OS X y Linux. En el momento de la compra, los usuarios pueden seleccionar un idioma para el software entre los ocho idiomas disponibles: Inglés, francés, alemán, español, japonés, polaco, chino simplificado y chino tradicional.

#### OpenOffice.org

La base de OpenOffice.org es de libre acceso y puede manejar bases de datos MySQL si se instala toda la suite.

#### phpMyAdmin

phpMyAdmin es una herramienta gratuita y de código abierto escrita en PHP destinada a manejar la administración de MySQL con el uso de un navegador web. Puede realizar diversas tareas como crear, modificar o eliminar bases de datos, tablas, campos o filas; ejecutar sentencias SQL o gestionar usuarios y permisos. El software, que está disponible en 78 idiomas, es mantenido por The phpMyAdmin Project.
Puede importar datos de CSV y SQL, y transformar los datos almacenados en cualquier formato utilizando un conjunto de funciones predefinidas, como la visualización de datos BLOB como imágenes o enlaces de descarga.

#### SequelPro

Sequel Pro es una aplicación MacOS gratuita y de código abierto para trabajar con bases de datos MySQL de forma local o remota. Utiliza el modelo freemium, en el que los usuarios de Gratis están obteniendo características de la mayoría de los servicios básicos. Se necesita una tabla SQL para manejar estas solicitudes. Puede manejar las nuevas y "divertidas" características de UTF-8 para el nuevo unicode, así como tener múltiples tablas de GB sin problemas.

#### SQLBuddy

SQLBuddy es una aplicación de código abierto basada en la web y escrita en PHP, destinada a manejar la administración de MySQL y SQLite con el uso de un navegador web. El proyecto hace hincapié en la facilidad de instalación y en una interfaz de usuario sencilla.

#### SQLyog

SQLyog es una herramienta GUI disponible tanto en versión gratuita como de pago. Las manipulaciones de datos (por ejemplo, insertar, actualizar y eliminar) pueden realizarse desde una interfaz similar a una hoja de cálculo. Su editor tiene resaltado de sintaxis y varias opciones de formato automático. Se pueden manipular tanto los datos de la tabla en bruto como el conjunto de resultados de una consulta. Su función de búsqueda de datos utiliza una sintaxis de búsqueda similar a la de Google y se traduce a SQL de forma transparente para el usuario. Cuenta con una herramienta de respaldo para realizar copias de seguridad desatendidas. Las copias de seguridad pueden ser comprimidas y opcionalmente almacenadas como un archivo por tabla, así como identificadas con una marca de tiempo.

#### Toad for MySQL

Toad for MySQL es una aplicación de software de Dell Software que los desarrolladores de bases de datos, administradores de bases de datos y analistas de datos utilizan para administrar tanto bases de datos relacionales como no relacionales utilizando SQL. Toad es compatible con muchas bases de datos y entornos. Funciona en todas las plataformas Windows de 32 bits/64 bits, incluyendo Microsoft Windows Server, Windows XP, Windows Vista, Windows 7 y 8 (32 o 64 bits). Dell Software también ha lanzado una edición de Toad para Mac. Dell provee Toad en versiones comerciales y de prueba/gratuitas. La versión gratuita está disponible en la comunidad de ToadWorld.com.

#### Webmin

Webmin es una herramienta de configuración de sistemas basada en la web para sistemas de tipo Unix, aunque las versiones recientes también pueden ser instaladas y ejecutadas en Windows. Con él es posible configurar los elementos internos del sistema operativo, como los usuarios, las cuotas de disco, los servicios o los archivos de configuración, así como modificar y controlar las aplicaciones de código abierto, como el servidor HTTP Apache, PHP o MySQL.
Webmin se basa en gran medida en Perl, ejecutándose como su propio proceso y servidor web. Se comunica por defecto a través del puerto TCP 10000 y puede ser configurado para usar SSL si se instala OpenSSL con los módulos adicionales de Perl necesarios.
Está construido alrededor de módulos, que tienen una interfaz con los archivos de configuración y el servidor Webmin. Esto hace que sea fácil añadir nuevas funcionalidades. Debido al diseño modular de Webmin, es posible para cualquiera que esté interesado en escribir plugins para la configuración del escritorio.
Webmin también permite controlar muchas máquinas a través de una sola interfaz, o el inicio de sesión sin problemas en otros hosts de Webmin en la misma subred o LAN.

### Interfaz de línea de comandos

Una interfaz de línea de comandos es un medio de interactuar con un programa informático en el que el usuario emite comandos al programa escribiendo en líneas sucesivas de texto (líneas de comandos). MySQL se envía con muchas herramientas de línea de comandos, de las cuales la interfaz principal es el cliente mysql.
Las utilidades de MySQL son un conjunto de utilidades diseñadas para realizar tareas comunes de mantenimiento y administración. Incluidas originalmente como parte del Banco de Trabajo de MySQL, las utilidades son una descarga independiente disponible en Oracle.
Percona Toolkit es un kit de herramientas multiplataforma para MySQL, desarrollado en Perl. Percona Toolkit puede ser usado para probar que la replicación funciona correctamente, arreglar datos corruptos, automatizar tareas repetitivas y acelerar los servidores. Percona Toolkit está incluido en varias distribuciones de Linux como CentOS y Debian, y los paquetes están disponibles para Fedora y Ubuntu también. Percona Toolkit fue desarrollado originalmente como Maatkit, pero a partir de finales de 2011, Maatkit ya no está desarrollado.
El shell de MySQL es una herramienta para el uso interactivo y la administración de la base de datos MySQL. Soporta los modos JavaScript, Python o SQL y puede ser utilizado para la administración y el acceso.

## Interfaces de programación de aplicaciones

Muchos lenguajes de programación con APIs de lenguaje específico incluyen bibliotecas para acceder a bases de datos MySQL. Entre ellas se encuentran MySQL Connector/Net para la integración con Visual Studio de Microsoft (los lenguajes más utilizados son C# y VB) y el controlador JDBC para Java. Además, una interfaz ODBC llamada MySQL Connector/ODBC permite que los lenguajes de programación adicionales que soportan la interfaz ODBC se comuniquen con una base de datos MySQL, como ASP o ColdFusion. El método de consulta basado en HTSQL - URL también se envía con un adaptador MySQL, permitiendo la interacción directa entre una base de datos MySQL y cualquier cliente web a través de URLs estructuradas. Existen otros controladores para lenguajes como Python o Node.js.

### Forks

Existe una variedad de forks de MySQL, incluyendo las siguientes.

### Actual
#### MariaDB

MariaDB es un fork desarrollado por la comunidad del sistema de gestión de bases de datos relacionales MySQL que pretende permanecer libre bajo la GPL de GNU. Al ser una bifurcación de un sistema líder de software de código abierto, es notable por estar liderado por los desarrolladores originales de MySQL, que lo bifurcaron debido a las preocupaciones sobre su adquisición por Oracle. Los colaboradores deben compartir sus derechos de autor con la Fundación MariaDB. MariaDB pretende mantener una alta compatibilidad con MySQL, asegurando una capacidad de sustitución "drop-in" con equivalencia binaria de la biblioteca y una coincidencia exacta con las API's y comandos de MySQL. Hay algunas diferencias e incompatibilidades documentadas entre las versiones de MySQL y MariaDB, sin embargo, y algunas herramientas para interactuar con MySQL, como el MySQL Workbench, no son totalmente compatibles con MariaDB. Incluye el motor de almacenamiento XtraDB para reemplazar a InnoDB, así como un nuevo motor de almacenamiento, Aria, que pretende ser tanto un motor transaccional como no transaccional, quizás incluso incluido en futuras versiones de MySQL.

#### Percona Server for MySQL

Percona Server for MySQL, fork por Percona, tiene como objetivo mantener una estrecha compatibilidad con las versiones oficiales de MySQL, mientras se centra en el rendimiento y el aumento de la visibilidad de las operaciones del servidor. También se incluye en Percona Server for MySQL XtraDB, la bifurcación de Percona del motor de almacenamiento InnoDB. Percona incluye libremente un número de características de escalabilidad, disponibilidad, seguridad y respaldo que solo están disponibles en la edición comercial Enterprise de MySQL.

### Abandonado
#### Drizzle

Drizzle era un sistema de gestión de bases de datos relacionales (DBMS) de código abierto y software libre que se creó a partir de la ahora desaparecida rama de desarrollo 6.0 del DBMS de MySQL. Al igual que MySQL, Drizzle tenía una arquitectura cliente/servidor y utiliza SQL como su principal lenguaje de comandos. Drizzle fue distribuido bajo la versión 2 y 3 de la Licencia Pública General de GNU (GPL) con partes, incluyendo los controladores de protocolo y la replicación de mensajes bajo la licencia BSD.

#### WebScaleSQL

WebScaleSQL era una rama de software de MySQL 5.6, y fue anunciada el 27 de marzo de 2014 por Facebook, Google, LinkedIn y Twitter como un esfuerzo conjunto para proporcionar una estructura de desarrollo centralizada para ampliar MySQL con nuevas características específicas para sus despliegues a gran escala, como la construcción de grandes bases de datos replicadas que se ejecutan en granjas de servidores. Así, WebScaleSQL abrió un camino hacia la deduplicación de los esfuerzos que cada empresa había estado poniendo en el mantenimiento de su propia rama de MySQL, y hacia la unión de más desarrolladores. Al combinar los esfuerzos de estas empresas e incorporar varios cambios y nuevas características en MySQL, WebScaleSQL se dirigió a apoyar el despliegue de MySQL en entornos de gran escala. El código fuente del proyecto está licenciado bajo la versión 2 de la Licencia Pública General de GNU, y está alojado en GitHub.

## Versiones de MySQL

El siguiente gráfico provee un resumen de varias versiones de MySQL y sus estados actuales de desarrollo:

### Ediciones más recientes

| Lanzamiento | Disponibilidad general | Última versión menor | Último lanzamiento | Fin de soporte |
| Versión antigua, sin servicio técnico: 5.1 LTS | 14 de noviembre de 2008 | 5.1.73 | 2013-12-03 | Dic 2013 |
| Versión antigua, sin servicio técnico: 5.5 LTS | 3 de diciembre de 2010 | 5.5.62 | 2018-10-22 | Dic 2018 |
| Versión antigua, sin servicio técnico: 5.6 LTS | 5 de febrero de 2013 | 5.6.51 | 2021-01-20 | Feb 2021 |
| Versión antigua, sin servicio técnico: 5.7 LTS | 21 de octubre de 2015 | 5.7.44 | 2023-10-25 | Oct 2023 |
| Versión antigua, con servicio técnico: 8.0 LTS | 19 de abril de 2018 | 8.0.37 | 2024-04-30 | Abr 2026 |
| Versión antigua, sin servicio técnico: 8.1 IR | 18 de julio de 2023 | 8.1.26 | 2023-07-18 | Oct 2023 |
| Versión antigua, sin servicio técnico: 8.2 IR | 25 de octubre de 2023 | 8.2.0 | 2023-10-25 | Ene 2024 |
| Versión antigua, sin servicio técnico: 8.3 IR | 16 de enero de 2024 | 8.3.0 | 2024-01-16 | Abr 2024 |
| Versión estable actual: 8.4 LTS | 30 de abril de 2024 | 8.4.0 | 2024-04-30 | Abr 2032 |
| Versión antigua, sin servicio técnico: 9.0 IR | 01 de julio de 2024 | 9.0.1 | 2024-07-23 | Oct 2024 |
| Última versión prevista para lanzamiento: 9.1 IR | 15 de octubre de 2024 | 9.1.0 | 2024-10-15 | Ene 2025 |
| Leyenda:Versión antiguaVersión antigua, con soporte técnicoÚltima versiónÚltima versión previaLanzamiento futuro |||||
| LTS = Long-Term Support, IR = Innovation Release |||||
El trabajo en la versión 6 se detuvo después de la adquisición de Sun Microsystems. El producto MySQL Cluster utiliza la versión 7. Se tomó la decisión de saltar a la versión 8 como el siguiente número de versión principal.

## Especificaciones
### Plataformas

MySQL funciona sobre múltiples plataformas, incluyendo:
* AIX
* BSD
* FreeBSD
* HP-UX
* Kurisu OS
* GNU/Linux
* Mac OS X
* NetBSD
* OpenBSD
* OS/2 Warp
* QNX
* SGI IRIX
* Solaris
* SunOS
* SCO OpenServer
* SCO UnixWare
* Tru64
* eBD
* Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10 y Windows Server (2000, 2003, 2008 y 2012).
* OpenVMS
Oracle provee el código fuente de MySQL Community Edition y versiones compiladas para diferentes sistemas operativos, aunque el rendimiento de MySQL se encuentra optimizado para sistemas GNU/Linux, con pequeñas diferencias de rendimiento entre las diferentes distribuciones .

## Características adicionales

* Usa GNU Automake, Autoconf, y Libtool para portabilidad
* Uso de multihilos mediante hilos del kernel.
* Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice
* Tablas hash en memoria temporales
* El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL.
* Completo soporte para operadores y funciones en cláusulas select y where.
* Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación
* Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada en el host y el tráfico de contraseñas está cifrado al conectarse a un servidor.
* Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de registros.
* Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).
* Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows se pueden conectar usando named pipes y en sistemas Unix usando ficheros socket Unix.
* En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria compartida.
* MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código fuente de la distribución de MySQL.

### Características

Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de ello, atrajo a los desarrolladores de páginas web con contenido dinámico, justamente por su simplicidad.
Poco a poco los elementos de los que carecía MySQL están siendo incorporados tanto por desarrollos internos, como por desarrolladores de software libre. Entre las características disponibles en las últimas versiones se puede destacar:
* Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.
* Disponibilidad en gran cantidad de plataformas y sistemas.
* Posibilidad de selección de mecanismos de almacenamiento que ofrecen diferentes velocidades de operación, soporte físico, capacidad, distribución geográfica, transacciones...
* Transacciones y claves foráneas.
* Conectividad segura.
* Replicación.
* Búsqueda e indexación de campos de texto.
MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.
MySQL es software de fuente abierta. Fuente abierta significa que es posible para cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el código fuente de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el código fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License) para definir qué puede hacer y qué no puede hacer con el software en diferentes situaciones. Si usted no se ajusta al GPL o requiere introducir código MySQL en aplicaciones comerciales, usted puede comprar una versión comercial licenciada.

### Características distintivas

Las siguientes características son implementadas únicamente por MySQL:
* Permite escoger entre múltiples motores de almacenamiento para cada tabla. En MySQL 5.0 éstos debían añadirse en tiempo de compilación, a partir de MySQL 5.1 se pueden añadir dinámicamente en tiempo de ejecución:
** Los hay nativos como MyISAM, Falcon, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example.
** Desarrollados por partners como solidDB, NitroEDB, ScaleDB, TokuDB, Infobright (antes Brighthouse), Kickfire, XtraDB, IBM DB2. InnoDB Estuvo desarrollado así pero ahora pertenece también a Oracle.
** Desarrollados por la comunidad como memcache, httpd, PBXT y Revision.
* Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo.

### Tipos de compilación del servidor

Hay tres tipos de compilación del servidor MySQL:
* Estándar: Los binarios estándar de MySQL son los recomendados para la mayoría de los usuarios, e incluyen el motor de almacenamiento InnoDB.
* Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen características adicionales que no han sido lo bastante probadas o que normalmente no son necesarias.
* MySQL-Debug: Son binarios que han sido compilados con información de depuración extra. No debe ser usada en sistemas en producción porque el código de depuración puede reducir el rendimiento.

### Especificaciones del código fuente

MySQL está escrito en una mezcla de C y C++.

## Desarrollo del proyecto

El desarrollo de MySQL se fundamenta en el trabajo de los desarrolladores contratados por la empresa MySQL AB quienes se encargan de dar soporte a los socios comerciales y usuarios de la comunidad MySQL y dar solución a los problemas encontrados por los usuarios. Los usuarios o miembros de la comunidad MySQL pueden reportar bugs revisando el manual en línea que contiene las soluciones a problemas encontrados; el historial de cambios ; la base de datos bugs que contiene bugs reportados y solucionados y en las listas de correo MySQL .
A través de las listas de correo los usuarios pueden enviar preguntas y éstas serán contestadas por desarrolladores brindándoles mejor soporte.

## Otras funcionalidades de las listas de correo

* Anuncios: informan sobre nuevas versiones de MySQL y programas relacionados.
* MySQL: lista principal de discusión de MySQL y SQL.
* Bugs: permite a la gente buscar y arreglar bugs.
* Temas internos: para gente que trabaja con el código de MySQL. Es el fórum para discutir sobre el desarrollo de MySQL.
* MySQLdoc: para gente que trabaja en documentación.
* Pruebas de rendimiento: para gente interesada en temas de rendimiento no solo de MySQL, sino de otros motores de bases de datos.
* Empaquetadores: para discusiones sobre empaquetamiento y distribución de MySQL.
* Java: discusiones sobre MySQL Server y Java.
Otras listas de correo son: MyODBC, Herramientas GUI, Cluster, Dotnet, PlusPlus y Perl.
Adicional a las listas de correo, se encuentra el soporte de IRC de la comunidad MySQL. Además, hay soporte a través de foros agrupados en categorías tales como: Migración, Uso de MySQL, Conectores MySQL, Tecnología MySQL y Negocios.

## Estructuras organizativas/asociativas o de decisión

La dirección y el patrocinio de los proyectos MySQL están a cargo de la empresa MySQL AB quien posee el copyright del código fuente MySQL, su logo y marca registrada. MySQL, Inc. y MySQL GmbH son ejemplos de empresas subsidiarias de MySQL AB. Están establecidas en los Estados Unidos y Alemania respectivamente. MySQL AB, cuenta con más de 200 empleados en más de 20 países y funcionan bajo la estrategia de teletrabajo.
En enero del 2008 Sun Microsystems anuncia su compra. En abril de 2009 Oracle anunció la compra de Sun Microsystems.

## Industria relacionada

La industria radica en la venta de productos software y de algunos servicios relacionados con numerosas empresas que utilizan estos productos.
MySQL AB clasifica los productos así:
* MySQL Enterprise: incluye MySQL Enterprise Server, Monitoreo de la red MySQL, servicios de consulta y soporte de producción MySQL.
* MySQL Cluster
* MySQL Embedded Database.
* MySQL Drivers: para JDBC, ODBC y.Net
* MySQL Tools: MySQL Administrator, MySQL Query Browser, and the MySQL Migration Toolkit.
* MaxDB: MaxDB es una base de datos de código abierto certificada para SAP/R3.
Los ingresos de esta empresa por la venta de licencias privativas de sus productos y los servicios suma los U$12 millones.

## MySQL en cifras

* Según las cifras del fabricante, existirían más de seis millones de copias de MySQL funcionando en la actualidad, lo que supera la base instalada de cualquier otra herramienta de bases de datos.
* El tráfico del sitio web de MySQL AB superó en 2004 al del sitio de IBM.

## Licencia

La licencia GNU GPL de MySQL obliga a que la distribución de cualquier producto derivado (aplicación) se haga bajo esa misma licencia. Si un desarrollador desea incorporar MySQL en su producto pero desea distribuirlo bajo otra licencia que no sea la GNU GPL, puede adquirir una licencia comercial de MySQL que le permite hacer justamente eso.