)R[3UHVV±$EULO
0\64/\9)3
KWWSZZZISUHVVFRP
3RUOD5HGDFFLyQGH)R[3UHVV
0\64/ es un gestor de Bases de Datos multi-thread, multiusuario que
gestiona bases de datos relacionales poniendo las tablas en ficheros
diferenciados (en vez de en un solo fichero) sometida a las licencias del Open
Source Software.
MySQL funciona sobre plataformas Windows/Linux/SCO/SUN/IBM
AIX/HP-UX. En la sede de [Link] están disponibles esas versiones y
los fuentes correspondientes. La última versión estable es la 3.23
MySQL es muy conocido en el mundo Linux y es una de las Bases de
Datos más usadas. Las críticas que recibe suelen venir de las carencias que el
producto tiene entre las que se citan:
1.- Inexistencia de Transacciones
2.- Imposibilidad de hacer subconsultas (Subquerys)
3.- Inexistencia de Procedimientos almacenados
4.- Carencia de Tiggers en las Claves externas
5.- Sin soporte para integridad referencial.
Esto hace que sea uno de los Gestores de Bases de Datos más rápidos y
así con Bases de Datos de menos de 500.000 registros es practicamente
imbatible. La web tiene una comparativa que es impactante:
[Link] en la que se compara su
rendimiento con las más conocidas Bases de Datos.
Sus autores defienden el producto diciendo que para realizar
transacciones ya tienen los bloqueos (exclusivamente a nivel de tabla) y que las
transacciones son difíciles de implementar y que poca gente las usa.
Las anteriores limitaciones hacen que el producto no sea apto para
entornos críticos o lugares con masivas entradas de datos. Sí por el contrario
para entornos no críticos y de mera lectura como por ejemplo un catalogo Web.
En las pruebas que hemos hecho se ha observado que las Bases
de Datos se pueden borrar desde Windows (algo parecido a lo que sucede con
los DBF) y es algo diferente de otras bases de datos como SQL Server u Oracle
que no se pueden borrar desde el sistema operativo y así tienen una mayor
seguridad.
En contra de lo que se piensa, MySQL sólo es gratis si se usa
privadamente y como servidor Web (aunque sea comercial). Su uso comercial
por otras aplicaciones no servidoras Web (que necesiten MySQL para
funcionar) está sometido a las condiciones de la licencia.
En el entorno Open Source hay otras Bases de Datos como
PostGresSQL que sí soporta transacciones y tecnicamente está mejor que
MySQL aunque por el contrario tiene un código menos depurado. PostGreSQL
tiene fallos de gestión de memoria mientras que a MySQL es muy difícil hacerla
fallar. Por el contrario, PostGreSQL es Gratis y MySQL no siempre.
Además, mientras PostGres está disponible para todas las
plataformas compatibles con UNIX. Para correr sobre Windows se deben usar
las librerias de transporte de Cygnus Unix/NT. Lá ultima versión disponible es la
PostgreSQL es la 7.0.3. A diferencia de MySQL que se puede bajar
directamente la versión binaria para windows. PostGreSQL no tiene disponible
una versión binaria para windows y deben realizarse todas las operaciones que
en la documentación se indican para que funcione en esos sistemas operativos:
cosa harto engorrosa.
,QVWDODFLyQGH0\64/HQXQ(QWRUQR:LQGRZV
A la hora de instalarlo hay que diferenciar si estamos en Win 9x o en
entornos NT/W2k pues las instalaciones son diferentes.
En nuestro caso lo probamos en un Win95 (primera versión). En este
entorno hubo que hacer lo siguiente para ponerla en marcha:
1.- Instalar el soporte de Microsoft Socket 2 (como se sabe Win 95
(primera versión) y la versión OEM de la Release 2 de Win 95 no venían con el
socket 2 y es necesario intalarlo). En los ficheros de este mes está el instalador.
Si lo instalas sobre Win98 o NT/w2k no es necesario que instales esto.
2.- Instalar MySQL 3.23. El instalador es el mismo para todas las
versiones Win./NT/2000. Es mejor instalarlo en C:\ pues si se escoje otra unidad
hay que hacer algunos cambios. En los ficheros del mes está la versión binaria
de MySQL
3.- Instalar el Driver ODBC para MySQL. También está entre los ficheros
del mes. El instalador tiene un aire de 16 bits pero ya da totalmente soporte a
32 bits. Al instalarlo en una máquina Win 95 limpia no quedó bien la instalación
y hubo que repetirla una vez instalado VFP 6.0 que ya incorporó el
administrador ODBC32. Una vez instalado El Administrador se volvió a instalar
y en este caso ya quedó correctamente instalado.
Un comentario añadido a la instalación es que todos los ficheros
necesarios se instalan en el directorio que se le indique y ninguno en
Windows/System. Esto hace que:
1.- Reinstalar Windows sin formateo no afecta a la Base de Datos
2.- Los ficheros copiados son, tal cual, trasladables a otras
máquinas sin complejas inscripciones en el Registry o cosas similares.
3XHVWDHQPDUFKD
Una vez instalado debemos ponerlo en marcha. Para ponerlo en marcha
basta con ejecutar desde una ventana de órdenes DOS la instrucción:
C:\mySQL\bin\MySQLd
Si estás trabajando con Win NT la instrucción sería:
C:\mySQL\bin\MySQLd-nt
Para desconectarlo habría que poner:
C:\bin\mysqladmin -u root shutdown
Esto sorprende un poco pues una vez puesto en marcha no se
observa ningún icono o advertencia de que está en marcha: quizás es una
deformación del mundo Windows...
Para comprobar que está en marcha podemos escribir:
C:\ bin\mysqlshow
Que nos diría qué bases de datos tenemos en este momento en el
Servidor
0DQLSXODUOD%DVHGH'DWRVGHVGHHO6KHOO
MySQL como una herencia de sus raices Linux se puede
interactuar con ella desde la ventana de DOS cargando su shell. Las cosas que
se pueden llegar a hacer son las siguientes:
&UHDUXQ%DVHGH'DWRV
C:\mysql\bin>P\VTODGPLQFUHDWHGDWDEDVH
Esto nos creará dentro de c:\mySQL\Datos\ un directorio con ese nombre pero
vacío. Según vayamos creando tablas se irán incorporando a ese directorio.
$FWLYDUHO6KHOO
C:\mySQL\bin\mySQL
Con esto queda activo el shell y ahora podemos empezar a escribir instrucciones
SQL
/LVWDUWRGDVODVWDEODVGHXQD%DVHGH'DWRV
mysql> VKRZWDEOHV
+----------------------+
| Tables in database01 |
+----------------------+
| table01 |
| table02 |
+----------------------+
/LVWDUORVFDPSRVGHODWDEOD
mysql> VKRZFROXPQVIURPWDEOH
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| field01 | int(11) | YES | | | |
| field02 | char(10) | YES | | | |
+---------+----------+------+-----+---------+-------+
,QVHUWDUXQUHJLVWURHQXQDWDEOD
mysql> LQVHUWLQWRWDEOHILHOGILHOGYDOXHV
ILUVW
Query OK, 1 row affected (0.00 sec)
/LVWDUWRGRVORVUHJLVWURVGHXQDWDEOD
mysql> VHOHFW
IURPWDEOH
+---------+---------+
| field01 | field02 |
+---------+---------+
| 1 | first |
+---------+---------+
0RGLILFDU7DEODV
mysql> DOWHUWDEOHWDEOHDGGFROXPQILHOGFKDU
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0
7DPELpQVHSXHGHHMHFXWDUYDULDVOtQHDVGHLQVWUXFFLRQHV
El Shell de MySQL te permite poner las instrucciones en una sola línea o en
múltiples líneas . Ten en cuenta que como un residuo de las épocas del teleproceso el
final deberá tener un punto y coma
Se muestra a continuación las dos formas de hacerlo:
Una sola línea:
mysql> FUHDWHWDEOHWDEOHILHOGLQWHJHUILHOGFKDU
Varias líneas:
mysql> FUHDWHWDEOHWDEOH
!ILHOG
!LQWHJHU
!ILHOG
!FKDU
El resto es mirar la documentación y ver todas las opciones disponibles.
(MHFXFLyQGHVGH9LVXDO)R[3UR
Para acceder a la Base de Datos MySQL desde Fox lo primero que deberemos
hacer es configurar el Origen de Datos, para eso hay que ir al Administrador ODBC y configurar,
en nuestro caso un DSN (la instalación del Driver ODBC MySQL por defecto te instala un
Origen de Datos llamado mySQL-Test que apunta a la Base de Datos de prueba Test que se
instala con MySQL.
Para nuestro caso vamos a cambiar el usuario por root que es el que tiene todos
los permisos de creación de Bases de Datos, etc... y poner como Host la dirección IP de nuestra
máquina. En nuestro caso [Link] Al final nuestro origen de datos queda de la siguiente
forma:
Una vez hecho lo anterior intentamos conectarnos desde Fox con
las instrucciones:
64/&211(&7
Un código sencillo de inicio para probar que todo va bien podría ser:
FOHDU
FORVHDOO
1RVFRQHFWDPRV
1KDQGOH 64/&211(&7
VDPSOHP\VTO
URRW
HOYDORUGHEHVHUVXSHULRUD
"Q+DQGOH
6L\DH[LVWHOD%DVHGHGDWRVODERUUDPRV
"VTOH[HFQ+DQGOH
'523'$7$%$6(,)(;,676PL%'DWRV
&UHDPRVOD%DVHGHGDWRV\QRVSRVLFLRQDPRVHQHOODSDUDFUHDUXQDWDEOD
"VTOH[HFQ+DQGOH
&5($7('$7$%$6(PL%'DWRV
"VTOH[HFQ+DQGOH
86(PL%'DWRV
"VTOH[HFQ+DQGOH
&5($7(7$%/(DJHQGDQRPEUH&+$5GLUHFFLRQ&+$5
WHOHIRQR&+$5HPDLO&+$5
,QVHUWDPRVXQUHJLVWUR
"VTOH[HFQ+DQGOH,16(57,172DJHQGD9$/8(6
-XDQ3pUH]
&/DJXQD
6HYLOOD
MXDQ#DJHQGDFRP
1RVWUDHPRVWRGR
"VTOH[HFQ+DQGOH6HOHFW
IURPDJHQGD
"VTOGLVFRQQQ+DQGOH
EURZ
Siempre que exista un dato incorrecto o se desconozca un dato se nos
mostrará esta ventana. Una vez correctamente configurada, es mejor marcar el
Don’t prompt on conect.
A partir de aquí el resto es usar las opciones que Visual FoxPro tiene para
el tratamiento Cliente/Servidor que no las comentamos pues no son tema de
este artículo
/RV%ORTXHRV
Al no tener transacciones, los bloqueos toman bastante importancia, sobre todo al ver
que los bloqueos son exclusivamente de tabla (no hay de registro) y pueden ser de lectura o de
escritura. El siguiente código nos ilustra su fucionamiento:
mysql> LOCK TABLES trans READ, customer WRITE;
mysql> select sum(value) from trans where customer_id= some_id;
mysql> update customer set total_value=sum_from_previous_statement
where customer_id=some_id;
mysql> UNLOCK TABLES;
Como ves este código es muy parecido al de Fox 2.x usando el FLOCK y
UNLOCK.
,QWHUIDFHV*UiILFRV
Esta versión viene con un muy pero que muy rudimentario interfaz gráfico que sería el
equivalente del Query Analizer de SQL Server y que permite visualmente saber que Bases de
Datos tenemos y qué tablas y también hacer consultas a las tablas.
Para cargarlo deberemos ejecutar el [Link] y ver el interfaz
que nos muestra que es de lo más espartano que se ha conocido.
Al margen de este interfaz gráfico tenemos otros como el de Mascon en
[Link] De todos modos, en
la documentación del producto se indican unos cuantos gratuitos y de pago.
FoxPress–Abril
de
2001
© 2001 All rights reserved