# Introducción a MySQL

Una vez que hemos aprendido sobre el tipo de licencias por las cuales MySQL puede ser adquirido, pasemos a ver las características básicas de esta poderosa base de datos.

## Los componentes principales usados en MySQL

El servidor MySQL opera en un ambiente de red donde interoperan clientes con servidores. Los clientes y servidores funcionan o son hospedados en ordenadores a los cuales se los llama anfitriones. El anfitrión, entonces, es el conjunto de componentes electrónicos que conforman el ordenador lo cuales son controlados por un sistema operativo. Los componentes clientes y servidores son los programas que operan en los anfitriones para darnos un servicio. En este caso, los servidores y clientes nos proporcionan el servicio de una base de datos.
La base de datos MySQL contiene los siguientes componentes:
* mysqld:es el corazón de MySQL. Es el programa servidor el cual proporciona las bases de datos que se encuentran en memoria o en el disco duro. En los sistemas operativos Windows NT, 2000 o XP el servidor MySQL son los programas mysqld-nt o mysql-max-nt. Este último provee soporte para tablas BDB las cuales veremos más adelante.
Entre los clientes tenemos:
* MySQLCC: Ésta interfaz gráfica permite controlar todos los aspectos del servidor MySQL. Permite crear bases de datos, tablas, usuarios, cambiar permisos, acceder y cambiar la información almacenada, etc., de una forma muy intuitiva y muy fácil. Tiene todas las opciones y tiene mejoras de la interfaz de texto mysql. Ésta aplicación debe ser descargada independientemente.
* mysql: Ésta interfaz de texto permite también controlar todos los aspectos del servidor pero la interfaz es solamente texto. Permite leer instrucciones del usuario por medio del teclado como también puede leer archivos que contienen instrucciones. Ésta es la aplicación más usada por los programadores para controlar la base de datos. Ésta y otras aplicaciones que veremos a continuación son aplicaciones de texto que funcionan en la consola. (command prompt o cmd en Windows y un shell sh, bash, etc. en Unix, Linux, MacOS y demás).
* mysqlimport permite importar datos a través de archivos de texto. Provee una interfaz de texto para los comandos LOAD, DATA, INFILE.
* mysqldump permite hacer copias o respaldos de la información almacenada para restaurarlos en el mismo servidor o para exportarlo a otros servidores.
* mysqladmin permite administrar el servidor con una interfaz gráfica y de una forma muy sencilla
* mysqlcheck permite revisar la salud de la base de datos. Permite también reparar dichas bases si fuera necesario.
Aplicaciones que trabajan independientemente del servidor MySQL
* myisamchk revisa las tablas y realiza operaciones de reparación.
* myisampack crea versiones comprimidas de solo-lectura de tablas MyISAM.C
Más adelante en el capítulo 3 cubriremos con más detalle algunos de estos componentes.

## Sistemas operativos donde MySQL puede ser usado

El servidor MySQL y los clientes soportan los principales sistemas operativos existentes, entre los cuales se encuentran los siguientes:
* La familia de sistemas operativos Windows (Windows 95, 98, Me, NT, 2000 y XP). MySQL no soporta MS-DOS o Windows 3.1
* La familia UNIX y derivados entre los cuales se encuentran: Los sistemas BSD (ejemplo: FreeBSD, OpenBSD, NetBSD, etc.), el sistema operativo MacOS X, System V, Solaris, HP-UX, entre otros, la familia Linux (como Fedora, RedHat, SuSE, Debian, Mandrake, Gentoo, Ubuntu, etc.)
* y Novell Netware 6.5 y superior.
Para la mayoría de estos sistemas operativos ya se tienen paquetes compilados listos para ser usados. La ventaja que trae el software libre (GPL) es que el código de fuente es distribuido libremente por lo que si deseáis podéis compilar el programa en cualquier sistema operativo que deseeis.
Debido a que MySQL trabaja en un ambiente de Red (es decir entre computadores conectados en Red o al internet), el servidor MySQL y los clientes pueden inter-operar en diferentes sistemas operativos. Por ejemplo, podemos tener instalado el servidor MySQL en un sistema operativo tipo Unix (como Linux) y podemos acceder a la información a través de la red con un ordenador con sistema operativo tipo Windows a través de las aplicaciones clientes.

## Diferencias entre las distribuciones de MySQL

MySQL tiene varias versiones y distribuciones. Para crear una nueva versión del programa, las versiones de MySQL siguen el siguiente patrón:
* pre-alpha: es cuando se han propuesto nuevas tecnologías a incorporarse y se ha diseñado la base de esa versión
* alpha: es cuando se hace público los códigos de fuente para que sea puesto a prueba para corregir cualquier error que tenga.
* beta: Los errores encontrados se han corregido y la versión parece estar estable.
* gamma: Es cuando no se han encontrado más errores en la versión Beta por al menos un mes.
* Produccion: Ésta es la etapa final. Todos los errores conocidos han sido corregidos.
Hasta el día de hoy tenemos la versión de producción MySQL 4.1 y la versión de prueba BETA 5.0 pero este libro se centrará solamente en las características de la versión estable ya que esa es la versión usada para el examen de certificación.
Como habíamos hablado anteriormente, MySQL también varía de acuerdo con el tipo de licencia. Éstas distribuciones se clasifican en :
Comercial:
* MySQL Classic
* MySQL Pro
GPL:
* MySQL standard
* MySQL MAX
Hay algunas diferencias importantes para notar entre estas distribuciones:
* MySQL classic no incluye soporte de tablas InnoDB
* MySQL MAX soporta Datos Geográficos (GIS) y la máquina de almacenamiento BDB.

## Clientes

MySQL AB ofrece varias aplicaciones clientes para comunicarse con el servidor. Entre ellas tenemos:
* La Librería en C libmysqlclient: Esta librería es la más usada para crear aplicaciones en el lenguaje C que se comuniquen con el servidor MySQL. De esta librería se han derivado varias aplicaciones para conectar a PHP, Pascal, Pyton y otros con la base de datos.
* El conector ODBC : Este conector provee compatibilidad entre las aplicaciones que usan el lenguaje ODBC para que puedan comunicarse con la base de datos MySQL
* El conector J : Este conector provee compatibilidad entre las aplicaciones Java que usan el lenguaje JDBC para que puedan comunicarse con la base de datos MySQL
Estos son los únicos clientes / componentes que son oficialmente respaldados por la empresa MySQL AB. Existen otros clientes y componentes que os podréis descargar de la página oficial de MySQL los cuales sirven para conectar otros lenguajes a MySQL. Estos programas, aun cuando han sido diseñados por los miembros del equipo MySQL, no son oficiales ni cuentan con respaldo por parte de la compañía. Si váis a desarrollar alguna aplicación con estos componentes extras, os recomendamos que os informéis bien acerca de ellos.
Tanto el servidor como los clientes y conectores oficiales se los puede obtener de con los dos tipos de licencia, comercial y GPL en distribuciones listas para usarse o en código de fuente para que podáis modificarlas a vuestro gusto.

## Preguntas de ejemplo para la certificación

* Nombre el tipo de distribuciones de MySQL de acuerdo con su licencia (comercial o GPL):
* Nombre 2 aplicaciones que trabajan independientemente del servidor MySQL.
* Un servidor MySQL que esté operando en Linux podrá ser accedido por un cliente que esté trabajando bajo la plataforma MacOS (Verdadero/Falso).
* Un cliente en Windows solo podrá acceder servidores MySQL que estén operando bajo el sistema Windows (Verdadero/Falso).
* El servidor mysqld no dispone del código de fuente, únicamente los componentes o clientes. (Verdadero/Falso).
* El nombre de la aplicación que funciona como servidor es (seleccione la mejor respuesta):
** mysql
** mysqlCC
** mysqladmin
** mysqld
** mysqlserver

### Respuestas

1. Comercial:
* MySQL Classic
* MySQL Pro
GPL:
* MySQL standard
* MySQL MAX
De todas estas versiones la única que no posee soporte para tablas InnoDB es la licencia comercial MySQL Classic.
2. myisamchk y myisampack estas dos aplicaciones trabajan directamente con los archivos de tablas MyISAM y no requieren del servidor MySQL mientras que los otros componentes y clientes si requieren del servidor.
3. Verdadero : Debido a que MySQL trabaja en un ambiente de red, tanto el servidor como los clientes pueden operar en diferentes plataformas y podrán comunicarse sin problema.
4. Falso: Debido a que MySQL trabaja en un ambiente de red, tanto el servidor como los clientes pueden operar en diferentes plataformas y podrán comunicarse sin problema.
5. Falso: Tanto el servidor como los clientes y conectores oficiales se los puede obtener de con los dos tipos de licencia, comercial y GPL en distribuciones listas para usarse o en código de fuente para que podáis modificarlas a vuestro gusto.
6. 4. mysqld es el nombre de la aplicación que funciona como servidor. mysql es una interfaz de texto del servidor. mysqlCC es una interfaz gráfica del servidor. mysqladmin permite administrar el servidor con una interfaz gráfica y de una forma muy sencilla. mysqlserver no existe.

# Licencias de MySQL

Bienvenidos al Capítulo primero de nuestro curso. En este capítulo aprenderemos las diferencias entre MySQL y MySQL AB y los tipos de licencias bajo las cuales opera esta base de datos.

## Diferencias entre MySQL y MySQL AB

El nombre MySQL muchas veces es usado intercambiablemente entre la compañía que produce la base de datos MySQL y la base de datos propiamente dicha. Esto se debe a que la compañía que produce la base de datos MySQL se llama MySQL AB (AB son los distintivos de "compañía de inversión" en Suecia). Recalcamos esta diferencia para conocimiento general. MySQL AB entonces es la compañía que desarrolla y vende la base de datos MySQL y las demás herramientas que le acompañan.
En sus inicios la base de datos MySQL pasó desapercibida sin recibir casi ninguna atención sino hasta hace un par de años en la que la base de datos pasó a ser una de las bases de datos más usada en el internet. Este cambio se debe principalmente a las mejoras que empezó a incorporar: su estabilidad, velocidad y costo la hacen única entre sus competidores. También esta popularidad se debe al crecimiento del movimiento Open Source y a la popularidad del lenguaje gratuito de programación para el Web PHP.
Todos estos factores fueron decisivos para que MySQL sea en nuestros días la base de datos usada por millones de personas, una de las más populares en el mercado.

## Licencias de MySQL

Parte de ésta popularidad se debe también al hecho de que MySQL puede ser utilizada o modificada por cualquier persona o empresa sin ningún costo. El programa incorpóra dos tipos de licencias:
1. La licencia GNU GPL: la cual permite a cualquier persona, empresa o entidad usar el programa sin ningúna restricción. También se da la libertad de modificar el producto y nuevamente re-distribuirlo bajo la misma licencia. Esta licencia se caracteríza por ser completamente gratuita. Para leer la licencia puedes visitar: Licencia de documentación libre GNU
2. MySQL también incorpora una licencia comercial con la cual las empresas pueden re-distribuir el producto bajo sus propios términos. La licencia sin embargo tiene un precio pero no es costosa comparada con licencias de bases de datos comerciales como SQL Server de Microsoft.
Estos dos tipos de licencias se aplican tanto al servidor como a las interfaces y librerias clientes como el C client library, mysqladmin, MySQLCC, mysqldump, libmysqlclient, MySQL Connector/ODBC y J. Y no se aplican a la documentación producida por MySQL AB la cual está bajo la licencia de propiedad intelectual.
Algo importante para recalcar es que si uno utiliza la licencia GPL no obtendrá ningun tipo de asistencia técnica, soporte o garantía por parte de MySQL AB. Si vuestra empresa requiere de alguno de estos servicios es recomendable que se compre la licencia comercial. Sin embargo, en el internet existe un amplio grupo de usuarios que siempre están dispuestos a ayudaros con cualquier pregunta que tengáis. Para acceder a ellos podrás suscribirte a una lista de correo. Para suscribirte podéis ingresar a : http://lists.mysql.com

## Preguntas de ejemplo para la certificación

Verdadero o Falso:
1. Cualquier persona puede usar y distribuir la base de datos MySQL de forma gratuita sin tener que pagar ninguna Licencia y sin preocuparse por ningún tipo de reglas.
2. La licencia comercial no se aplica a las utilidades MySQLCC ni mysqladmin
3. La licencia gratuita es solo para empresas pequeñas o para uso personal
4. La documentación de MySQL también puede ser copiada, modificada y redistribuida libremente.
Respuestas:
* Falso: El programa MySQL puede ser usado y distribuido gratuitamente solamente bajo las reglas de la licencia GPL.
* Falso: Los dos tipos de licencias (GPL y comercial) se aplican para los programas distribuidos por MySQL AB con excepción de la documentación
* Falso: Cualquier persona o empresa puede hacer uso de los dos tipos de licencia
* Falso: La documentación esta amparada bajo la licencia de propiedad intelectual.