# MySQL/Introducción/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.