Está en la página 1de 40

Bases de datos y

software libre.
MySQL bsico 08
En esta Unidad
aprenders a:
Q Instalar, configurar y utilizar
el sistema gestor de bases de
datos MySQL.

Q Realizar cualquier operacin de


creacin, mantenimiento o
eliminacin de bases de datos
y tablas en MySQL.

Q Gestionar aspectos de seguridad


en MySQL, como el control de los
usuarios, o la realizacin de copias
de seguridad.

Q Instalar, configurar y utilizar un


paquete grfico para realizar
visualmente la administracin
y mantenimiento de una
base de datos MySQL.
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

8.1 MySQL: un SGBD de cdigo abierto


MySQL es un sistema gestor de bases de datos que se la empresa MySQL AB la que contrata y coordina los tra-
puede encuadrar dentro de la categora de los progra- bajos de mantenimiento del producto. No obstante, los
mas open-source. trabajadores contratados, procedentes de todo el
mundo, son usuarios del producto que realizan sus
encargos a travs de Internet.
Un programa open-source es aquel cuyo cdigo
fuente est disponible para los usuarios y abierto
a modificaciones. Orgenes
El origen de MySQL se remonta a la dcada de los
El trmino open-source surgi del anteriormente usado ochenta. Michael Widenius, tambin conocido como
free-software, que haca referencia a los programas cuyo Monty, un joven programador que realizaba complejas
cdigo estaba disponible para el usuario, fueran gratui- aplicaciones en lenguaje BASIC, al no encontrar un sis-
tos o no. Como free en ingls significa libre pero tam- tema de almacenamiento de archivos que le resultara
bin gratis, se prestaba bastante a confusin, por lo satisfactorio, pens en construir el suyo propio.
que pas a utilizarse open-source (cdigo abierto).
Aos despus, en 1995, y en colaboracin con David
Aunque open-source no siempre implica que su uso sea Axmark, Widenius desarroll un producto que bsica-
gratuito, MySQL s que lo es. mente era el resultado de sus investigaciones, ms dos
aportaciones nuevas: el uso del lenguaje SQL y la acce-
sibilidad a travs de Internet. As naci MySQL y tam-
En el caso de que el programa open-source se pueda bin la empresa MySQL AB.
adquirir gratis, el usuario debe distribuir tambin
gratis los cambios que pueda realizar, o los productos
que pueda desarrollar basndose en el original. En
caso contrario, si el usuario desea hacer negocio con
el producto, entonces debe adquirir la licencia
comercial de pago.

Mencin aparte merecen las licencias de tipo GPL,


que pueden consultarse en la siguiente pgina web:
www.gnu.org/copleft/gpl.html.

En esta unidad trataremos el funcionamiento de MySQL


por considerarlo altamente representativo de las bases
de datos de libre uso.

A Orgenes e historia de MySQL Fig. 8.1. Michael Widenius.

MySQL es un caso particular, pues se trata de un pro-


Evolucin
grama de licencia open-source y gratuito pero que, sin
embargo, est mantenido por una empresa, MySQL AB, La evolucin de MySQL se produce con las sugerencias
con sede en Suecia. de los usuarios, canalizadas por la empresa MySQL AB,
que contrata a programadores de todo el mundo para que,
El cdigo fuente de MySQL est slo relativamente a travs de Internet, vayan ampliando y mejorando el
abierto y disponible para modificaciones, puesto que es producto.

225
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

Las versiones, como es costumbre en este tipo de soft-


ware libre, se van colgando en Internet para que los
usuarios puedan disponer de ellas.
B Instalacin y configuracin

Como se ha comentado en repetidas ocasiones ya,


Sin embargo, tambin como es habitual, hay que distin- MySQL es un producto de libre uso, siempre y cuando no
guir entre versiones de prueba o beta y versiones esta- se utilice posteriormente con fines comerciales. Por este
bles o de produccin. motivo, MySQL se encuentra disponible en Internet para
que cualquier usuario se lo pueda descargar.
Las versiones de prueba o beta estn a disposicin de
los usuarios para ser testadas en busca de posibles La direccin web de MySQL es www.mysql.com. Este
mejoras. Por su parte, las versiones estables o de pro- sitio web est en ingls y tiene el aspecto que se apre-
duccin son las que ya estn preparadas para ser utili- cia en la Figura 8.2.
zadas a pleno rendimiento.

En la actualidad, 4.1. 14 es la ltima versin estable.


Esta versin dispone de caractersticas como gestin de
transacciones, integridad referencial (bajo ciertas con-
diciones), uso de ndices, incorporacin de libreras,
etctera.

La versin de prueba actualmente disponible es la 5.0,


que empieza a incorporar elementos hasta ahora no
incluidos en MySQL, como el uso de procedimientos,
cursores, triggers o vistas.

Existe una versin incluso ms reciente, la 5.1, pero que


an es un proyecto. Esta versin promete mejoras en la
Fig. 8.2. Pgina principal de la Web oficial de MySQL.
seguridad y en la gestin de claves ajenas, aunque
todava no se conoce cmo se plasmarn dichas carac-
tersticas en posteriores versiones estables. Existen multitud de pginas dedicadas a MySQL, bastan-
tes de ellas en castellano. Sin embargo, nosotros des-
cargaremos el producto directamente desde la pgina
Caractersticas de MySQL
principal de MySQL, pues al ser la oficial ofrece mayo-
Aparte de las caractersticas que definen MySQL como res garantas al respecto.
programa open-source, existen aspectos que lo diferen-
cian de otros productos como, por citar uno conocido,
Access. Los atributos a los que hacemos referencia son: Puedes encontrar informacin en castellano sobre
MySQL en multitud de pginas de Internet.
Q Posibilidad de crear y configurar usuarios, asignando Algunos ejemplos son:
a cada uno de ellos permisos diferentes. www.desarrolloweb.com (taller de MySQL);
Q Facilidad de exportacin e importacin de datos, www.programacion.com; www.mysql-hispano.org;
incluso de la base de datos completa. www.lawebdelprogramador.com.
Q Posibilidad de ejecutar conjuntos de instrucciones
guardadas en ficheros externos a la base de datos.
Descarga del producto
Todas estas caractersticas, junto con las operaciones ms
frecuentes que se realizan sobre bases de datos, se En la parte derecha de la pgina web www.mysql.com se
estudiarn en los siguientes Apartados. De todas formas, puede ver un apartado denominado Downloads cuya pri-
veamos en principio la manera de obtener el producto mera opcin es MySQL Database. As pues, en primer
y, posteriormente, cmo realizar su instalacin. lugar, haremos clic en este enlace.

226
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

A continuacin, se abrir una pgina donde aparece una La Web ha detectado, a travs de la IP de mi ordenador,
exposicin del producto, de las licencias de uso, de las que el servidor ms prximo y seguramente el que ms
novedades que ofrece la ltima distribucin disponible me interesa est en Espaa: se trata de RedIris. As
y, finalmente, una exhaustiva relacin de versiones a pues, elegiremos dicho servidor y, a continuacin, esco-
descargar, agrupadas por la plataforma a la que van diri- gemos la opcin de bajada por http pulsando en el
gidas (Linux, Solaris, Windows, etc.). Por nuestra parte, enlace correspondiente.
trabajaremos con la versin de Windows; por tanto, ire-
mos bajando la pgina hasta encontrar la seccin Win- Una vez elegida la opcin Guardar del cuadro de di-
dows Downloads (vase la Figura 8.3). logo, empezar la descarga del archivo.

Instalacin
En primer lugar, es importante tener en cuenta que el
fichero descargado slo sirve para actualizar versiones
de MySQL a partir de la 4.1.5. Si se dispone de una ver-
sin ms antigua, entonces es necesario desinstalarla
previamente.

Fig. 8.3. Opciones de descarga de MySQL para Windows. Para instalar la nueva versin, buscaremos la carpeta en
la que hemos guardado el fichero de instalacin. Des-
Como se puede apreciar, existen varias opciones. Por pus, ejecutaremos dicho fichero haciendo doble clic
nuestra parte, elegiremos Windows Essentials, que es la sobre el mismo y, seguidamente, aparecer una panta-
versin ms adecuada para el presente texto. Para lla como la que se reproduce en la Figura 8.5.
empezar la descarga haremos clic en Pick a mirror, el
enlace que puede verse a la derecha de la figura.

En el CD del alumno puedes encontrar el fichero de


instalacin de MySQL en su versin 4.1.14. Su
nombre es mysql-essential-4.1.14-win32.msi.

Una vez seleccionado el producto que deseamos descar-


gar, surgir una pantalla de registro, que se puede pasar
por alto siguiendo hacia abajo o haciendo clic en Just
take me to the downloads, y aparecer una lista con los
servidores disponibles desde los que se puede bajar el
fichero de instalacin. Esta lista ser similar a la que se
reproduce en la Figura 8.4.
Fig. 8.5. Inicio de la instalacin de MySQL.

De entre las diferentes modalidades de instalacin que


se nos ofrecen a continuacin, escogeremos la opcin
Typical. Esta modalidad es la ms bsica y la que se reco-
mienda para un uso general y personal de la aplicacin.

Las otras posibilidades de instalacin son Complete,


mediante la cual se instalan todas las caractersticas del
producto, y Custom, que deja al usuario la eleccin
Fig. 8.4. Servidores de descarga de MySQL. sobre qu partes instalar y cules no.

227
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

En la Figura 8.6 podemos apreciar la pantalla con los El registro del producto sirve, entre otras cosas, para
tres modos de instalacin. tener acceso a contenidos especiales de la pgina web
de MySQL. A continuacin, aparecer una pantalla
donde se nos presentar la opcin de configurar el ser-
vidor de MySQL. Tal como se aprecia en la Figura 8.8,
dejaremos marcada la casilla correspondiente y pulsare-
mos Terminar (Finish) para que MySQL se configure y se
finalice la instalacin.

Fig. 8.6. Modos de instalacin de MySQL.

Una vez pulsado el botn Siguiente (Next), aparecer


una pantalla en la que se nos muestra un resumen de Fig. 8.8. Fin de la instalacin, con opcin a iniciar el
las opciones escogidas. En esta pantalla todava dispo- proceso de configuracin.
nemos de la posibilidad de detener la instalacin, o
bien dar un paso atrs. Si decidimos continuar, pulsare-
Configuracin
mos el botn Instalar (Install) para finalmente empe-
zar la instalacin propiamente dicha. Si hemos dejado marcada la casilla Configurar ahora el
servidor MYSQL (Configure the MySQL Server now) de la
Tras las correspondientes pantallas de espera, una vez ltima pantalla de instalacin (vase la Figura 8.8),
terminada la copia de ficheros a nuestro disco, se nos entonces en este momento empezar el proceso de con-
indicar la posibilidad de realizar un registro del pro- figuracin.
ducto: esta operacin la dejaremos aplazada de
momento. As pues, procederemos a seleccionar Saltar Conviene tener en cuenta que si tenemos versiones
registro (Skip sign-up), tal como se puede observar en anteriores de MySQL instaladas en nuestra mquina, se
la Figura 8.7. nos ofrecer la posibilidad de volver a configurar el pro-
ducto, o bien desinstalarlo. De esta manera, se elimina-
rn los servicios de Windows correspondientes.

Tanto si se trata de la primera instalacin, como si


estamos volviendo a configurar una instalacin ante-
rior, a continuacin aparecer una pantalla que nos
invita a decidir si queremos llevar a cabo una instala-
cin detallada (detailed) o estndar (standard).

Q La instalacin detallada propone una configuracin


automtica y ptima para el servidor.
Q La instalacin estndar ofrece una configuracin
para un uso general del producto. Adems, la insta-
lacin estndar permite seguir el proceso paso a
paso y, si procede, hacer cambios en las opciones por
Fig. 8.7. Registro on-line de MySQL. defecto que se van ofreciendo.

228
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

En la Figura 8.9 se pueden ver ambas posibilidades de Como se observa en la Figura 8.9, otra opcin de confi-
configuracin. Como se observa, por nuestra parte guracin de la que disponemos es incluir el directorio
hemos optado por la estndar. Bin en el PATH de Windows. En este directorio se
encuentran las instrucciones necesarias para ejecutar
MySQL desde la lnea de comandos. Esta casilla tambin
la dejaremos marcada.

El PATH (termino ingls cuya traduccin podra


ser camino) es una variable que suelen tener
todos los sistemas operativos. Contiene una lista
de directorios o carpetas donde se buscar la
informacin que no se encuentra en la carpeta
actual, es decir, en la que nos hallamos en ese
momento. Es muy til sobre todo para, desde la
lnea de comandos, poder ejecutar instrucciones
guardadas en ficheros que no se encuentran en la
misma carpeta de trabajo.
Fig. 8.9. Opciones de configuracin de MySQL.
A continuacin, se nos brindar la posibilidad de asig-
Al elegir el modo estndar, en primer lugar aparecer nar una contrasea al usuario que va a crearse. Dicho
una nueva pantalla con dos caractersticas a configu- usuario se denominar root y ser el administrador del
rar. Por una parte, se nos pregunta si deseamos insta- sistema. Este nombre de usuario es muy comn, sobre
lar MySQL como un servicio de Windows. Como hemos todo en sistemas multiusuario basados en UNIX.
visto al estudiar otros productos, es conveniente efec-
tuar la instalacin de esta forma, puesto que as tene- En cuanto a la contrasea, se puede asignar cualquiera.
mos la opcin de hacer que se inicie automticamen- Por nuestra parte, la contrasea que elegiremos ser
te cada vez que arranque Windows. obdoc, la misma que hemos empleado en unidades ante-
riores (vase la Figura 8.11).
Por tanto, si se desea habilitar dicho inicio automtico,
entonces dejaremos marcada la casilla Arrancar el servi-
dor MySQL automticamente (Launch the MySQL Server
automatically), tal como aparece en la Figura 8.10. No
obstante, si preferimos iniciar el servicio manualmente,
entonces desmarcaremos dicha opcin.

Fig. 8.11. Configuracin del usuario root.

En esta misma pantalla se encuentran otras dos posibi-


lidades ms que el usuario puede configurar:

Q Crear un usuario annimo (sin nombre ni contra-


sea), opcin que lgicamente rehusaremos dejando
Fig. 8.10. Opciones de configuracin del servidor MySQL. sin marcar la casilla correspondiente.

229
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

Q Entrar a nuestro servidor desde mquinas remotas, a vicios. Una opcin es ir al registro de Windows y buscar
travs de la red o incluso desde Internet (Enable root el siguiente apartado:
access from remote machines). Por obvios motivos,
esta posibilidad tampoco la contemplaremos. Esta HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
segunda opcin deber activarse slo si se instala Services
MySQL en un servidor de red al cual se acceder
desde los diferentes terminales que se le conectan. Desde este apartado localizaremos y eliminaremos el
servicio correspondiente.
Una vez pulsado el botn Siguiente (Next), aparecer una
pantalla similar a la que se reproduce en la Figura 8.12, La otra opcin es ir a Inicio/Ejecutar y teclear cmd.exe
donde se nos ofrece la posibilidad de volver atrs o can- para salir del entorno MS-DOS. Seguidamente escribire-
celar la instalacin. Por nuestra parte continuaremos y, mos sc delete nombre-servicio ___ y, automtica-
para ello, pulsaremos el botn Ejecutar (Execute). mente, desaparecer el servicio correspondiente. As,
por ejemplo, podramos borrar el servicio de MySQL con
sc delete mysql ___.

Finalmente, si todo el proceso se ha llevado a cabo de


forma adecuada, debera aparecer una pantalla similar
a la que se reproduce en la Figura 8.13.

Fig. 8.12. Ejecucin del proceso de configuracin.

Tras pulsar el botn Execute, irn marcndose las casi-


llas que se ven en la Figura 8.12 segn se vayan reali-
zando las distintas tareas.
Fig. 8.13. MySQL se ha instalado y configurado correcta-
Si surge algn problema, entonces se detendr el pro- mente.
ceso y aparecer un aviso de error con una breve expli-
cacin de lo sucedido. Muchos de los errores que tienen As pues, ya tenemos instalado y configurado nuestro
lugar durante esta fase de la configuracin provienen de servidor. En la Figura 8.14 puede observarse, dentro
instalaciones anteriores, con lo que la solucin ser de la lista de servicios de Windows, el correspon-
desinstalar totalmente cualquier otra versin de MySQL diente a MySQL.
que haya en el ordenador.

En otras ocasiones el problema puede deberse a la falta


de permisos para crear el servicio, puesto que la insta-
lacin la debera realizar un usuario con permisos de
administrador en el ordenador. El error tambin puede
obedecer a la presencia de un servicio de MySQL ante-
rior o incompatible con el que se intenta instalar. En
este caso habra que eliminar los servicios que ocasio- Fig. 8.14. El servicio Windows de MySQL.
nan el problema.
Si no has elegido la opcin de inicio automtico,
Los servicios de Windows se pueden eliminar de varias debes arrancar manualmente el servicio cada vez
formas, pero no desde Herramientas Administrativas/Ser- que quieras trabajar con MySQL.

230
8. Bases de datos y software libre. MySQL bsico
8.1 MySQL: un SGBD de cdigo abierto

Caso prctico

1 Si has ido realizando los pasos explicados Dado que nos encontramos en Windows, tambin
en el Apartado anterior y todo ha podemos consultar el valor de cualquier variable del
funcionado correctamente, entonces sistema. Para ello, nos dirigiremos al panel de con-
tendrs MySQL instalado en tu ordenador. trol, entraremos en Sistema y seleccionaremos segui-
Sin embargo, vas a efectuar una sencilla damente la pestaa Opciones avanzadas.
comprobacin.
Como puede observarse en la Figura 8.16, en la parte
Se pide inferior del recuadro aparece un botn con el ttulo
Variables de entorno. Si hacemos clic en dicho botn,
Comprueba si la variable de sistema PATH se ha veremos el contenido de las variables de sistema,
actualizado, incluyendo ahora la referencia a las car- tanto su valor en general como el valor actual para
petas correspondientes a MySQL. el usuario activo.

Solucin

Hay dos formas de consultar el contenido de la varia-


ble de sistema PATH. Una de ellas es, tal como se
haca en MS-DOS, saliendo a la lnea de comandos
(Inicio/Ejecutar/cmd.exe) y, a continuacin, tecle-
ando SET que nos muestra el contenido de todas las
variables del sistema. En la Figura 8.15 puede verse
el resultado.

Fig. 8.15. Consulta de PATH desde la lnea de comandos. Fig. 8.16. Consulta de las variables de sistema desde
Windows.

Un SGBD cliente/servidor Ambos componentes pueden instalarse por separado en


diferentes ordenadores, generalmente un servidor y
MySQL, como SGBD cliente/servidor que es, est for- varios clientes, si durante la instalacin se elige la
mado por dos componentes: variante personalizada. Una vez presentado el modo de
configurar el servidor, ha llegado el momento de abor-
Q Servidor. Se encarga de recoger, interpretar y ejecu- dar el componente cliente, que es el ms importante de
tar todas las peticiones de los usuarios de la base de cara al usuario final.
datos. Todas las tareas de configuracin que hemos
realizado se refieren a l. En primer lugar, vamos a estudiar el programa cliente
Q Cliente. Es la parte con la que trabajarn directa- bsico, que ofrece acceso a MySQL en modo texto desde
mente los usuarios. una lnea de comandos.

231
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

8.2 El cliente de MySQL en modo texto


El cliente en modo texto de MySQL es un programa En esta sentencia, servidor es el nombre del servidor
que, a travs de la lnea de comandos, permite trabajar al que nos conectamos (localhost si trabajamos en
con las bases de datos en un entorno interactivo donde modo local) y usuario es el nombre de usuario con el
el usuario debe escribir las sentencias que desea ver que queremos entrar a la base de datos. Para entrar
ejecutadas. como local y con el usuario root, por ejemplo, debe-
ramos incorporar una instruccin como la que se

A Entorno de trabajo reproduce en la Figura 8.19.

Veamos, para empezar, la manera de acceder al cliente


de MySQL en modo texto.

Acceso al programa
El acceso al programa cliente en modo texto puede rea- Fig. 8.19. Entrada al cliente MySQL desde la lnea de
lizarse de dos formas distintas: comandos.

Q A travs del punto del men que se ha creado Si escogemos la segunda opcin, podremos seleccionar
durante la instalacin y que puede apreciarse en la tanto el servidor como el usuario. Sin embargo, al ele-
Figura 8.17. gir la primera posibilidad, accederemos directamente a
la mquina local y como usuario root, que tiene permi-
sos de administrador. Por tanto, esta opcin automtica
no debera estar accesible para los usuarios finales.

Conviene tener en cuenta que la instruccin mysql se


Fig. 8.17. Acceso al cliente MySQL desde el men. encuentra en la carpeta c:\Archivos de programa\MySQL\
MySQL Server 4.1\bin, pero nosotros hemos podido eje-
Si optamos por este tipo de acceso, entraremos direc- cutarlo desde C:\ sin ningn problema. se era precisa-
tamente como usuario root. Para completar el pro- mente el objetivo de la modificacin que se ha realiza-
ceso slo se nos pedir la contrasea, como se mues- do sobre la variable PATH, tal como hemos visto
tra en la Figura 8.18. Conviene recordar que la anteriormente.
contrasea, a no ser que se haya cambiado, es obdoc.
Entorno de trabajo
Si la conexin ha sido correcta, el indicador de sistema
habr cambiado y ahora aparecer como mysql>. As
pues, podremos empezar a trabajar sobre el SGBD.

Desde el indicador ejecutaremos normalmente senten-


cias SQL como las que se han presentado en unidades
anteriores del libro.
Fig. 8.18. Entrada al cliente MySQL desde el men.
Por tanto, podremos consultar, por ejemplo, la versin
de MySQL con la que estamos trabajando y, al mismo
Q Saliendo en primer lugar a la lnea de comandos y, tiempo, la fecha actual. La versin de MySQL nos la pro-
despus, tecleando la siguiente orden: porciona la funcin version(), mientras que la fecha
mysql h servidor u usuario p actual se guarda en la variable del sistema current_date.

232
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Finalmente, si deseamos salir de MySQL volviendo a la


Como ya sabes por unidades anteriores, en una
sentencia SQL pueden utilizarse tanto funciones del
lnea de comandos de Windows, podemos usar por igual
lenguaje, como es el caso de version(), como exit o quit.
variables del sistema, por ejemplo current_date.
Uso de bases de datos

De esta manera, la sentencia completa que deberamos


B en modo texto

introducir sera la que se aprecia en la Figura 8.20. Ahora que ya conocemos el entorno de trabajo, es hora
de que presentemos el modo de acceder a las bases de
datos para comenzar a utilizarlas.

En primer lugar, es importante conocer el sitio donde se


guardan las bases de datos que iremos creando, as
como el fichero de configuracin en el cual se guarda la
informacin acerca de dicha ubicacin.

Fig. 8.20. Consulta de variables en MySQL. Localizacin de las bases de datos


Las sentencias SQL deben acabar con un punto y coma. Las bases de datos de MySQL se guardan, en entornos
En caso contrario, dicha sentencia se considera inaca- Windows, en la carpeta c:\Archivos de Programa\
bada y aparece una lnea nueva cuyo indicador es una MySQL\MySQL Server 4.1\Data, su ubicacin por
flecha. En esta lnea terminaremos de escribir la senten- defecto, como puede apreciarse en la Figura 8.23. Sin
cia que ha quedado incompleta, tal como puede obser- embargo, dicha ubicacin puede cambiarse. Para ello
varse en la Figura 8.21. deberamos:

Q Copiar todo el contenido de la carpeta Data a la


nueva localizacin.
Q Modificar el fichero my.ini que se encuentra en la
misma carpeta que Data, tal como tambin se
observa en la Figura 8.23. Para ello, nos dirigiremos
a la seccin SERVER SECTION y cambiaremos el valor
de la variable Datadir (vase la Figura 8.24).
Fig. 8.21. Finalizacin de una sentencia incompleta.

Por otra parte, si queremos abandonar la sentencia sin


que sta se ejecute, lo conseguiremos escribiendo \c.
A modo de ejemplo, en la Figura 8.22 aparece una
consulta donde se ha cometido un error y se cancela
sin ejecutarse.

Fig. 8.22. Interrupcin de una sentencia. Fig. 8.23. Localizacin de la carpeta Data y el fichero de
configuracin my.ini.

233
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Como se aprecia en esta figura, el nmero de bases de


datos, as como sus nombres, coincide con el de subcar-
petas dentro de Data, algo que ya se poda prever.

De todas formas, ya sabemos de unidades anteriores que


las bases de datos estn formadas por tablas y que son
stas las que contienen la informacin de la base de
datos. As pues, para realizar una consulta deberemos
siempre conocer el nombre de las tablas en las que se
Fig. 8.24. Contenido del fichero my.ini. encuentra la informacin que queremos recuperar.

Dentro de la carpeta Data se irn creando diversas car- Existe una sentencia para ver las tablas que forman una
petas para las diferentes bases de datos que se vayan base de datos, pero para ello debemos, en primer lugar,
dando de alta. Por defecto, MySQL incluye una base de abrir dicha base de datos.
datos denominada mysql que guarda informacin sobre
el propio sistema. En la Figura 8.25 puede observarse la Al contrario de otros sistemas como Oracle, la
subcarpeta correspondiente a dicha base de datos. conexin al SGBD no est asociada a la apertura de
una base de datos en concreto, sino que este pro-
ceso se realiza con posterioridad a la conexin.

La instruccin que permite abrir una base de datos es


USE, seguida del nombre de la base de datos que se
quiere abrir. Otra posibilidad que veremos ms adelante
consiste en utilizar el comando CONNECT. En la Figura
8.27 se muestra cmo se abre la base de datos mysql.

Fig. 8.25. Subcarpetas para las bases de datos.

Utilizacin de las bases de datos


Lgicamente, deberemos saber qu bases de datos
estn disponibles antes de poder empezar a usarlas.
Para obtener una lista de las bases de datos accesibles
al usuario, usaremos la sentencia SHOW DATABASES. El
resultado, en nuestro caso, es el que se muestra en la Fig. 8.27. Apertura de una base de datos.
Figura 8.26.
El mensaje Database changed nos indica que la apertura
de la base de datos se ha realizado correctamente.

Una vez abierta la base de datos mysql, estamos en con-


diciones de obtener una lista de las tablas que dicha base
de datos contiene. Para ello, usaremos la instruccin SHOW
TABLES sin ningn parmetro adicional, ya que no se
necesita hacer referencia a la base de datos, puesto que
slo podremos listar las tablas que previamente hemos
abierto y estn contenidas en dicha base de datos. En
la Figura 8.28 se muestra la lista de la base de datos en
Fig. 8.26. Lista de bases de datos disponibles. cuestin obtenida tras este proceso.

234
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Fig. 8.29. Consulta de seleccin sobre la tabla user.

Las contraseas se encriptan para ser guardadas en la


tabla user. Por tanto, al realizar la consulta el conte-
nido de la columna password aparece de forma indes-
cifrable, tal como se aprecia en la Figura 8.29.

Las bases de datos que se han presentado hasta ahora


contienen informacin sobre el sistema, as que es
mejor no trabajar con ellas. Vamos a recordar las ins-
trucciones de creacin y manipulacin, tanto de bases
Fig. 8.28. Tablas que forman la base de datos mysql. de datos como de tablas, as como su utilizacin en
MySQL.
A partir de aqu, podemos usar las instrucciones del len-
guaje SQL que ya conocemos de unidades anteriores. As
Creacin de bases de datos y tablas
pues, si deseamos ver el contenido de la tabla user, por
ejemplo, escribiramos: Las instrucciones para crear bases de datos y tablas no
difieren de las que se han estudiado en las unidades
mysql> select * from user; correspondientes al lenguaje SQL. As pues, no nos
extenderemos demasiado en este Apartado, donde
Sin embargo, el resultado del comando anterior dista vamos a presentar algunos ejemplos simplemente como
bastante de ser inteligible, lo cual se debe a un exce- recordatorio, al tiempo que creamos una base de datos
sivo nmero de campos en la consulta. nueva que nos servir para trabajar durante el resto de
la Unidad.
Ahora bien, para realizar una consulta sobre un nmero
menor de campos deberemos, en primer lugar, conocer La sentencia para crear una base de datos, como ya se
la estructura de la tabla. En MySQL disponemos de la sabe, es CREATE DATABASE. As pues, vamos a dar de alta
instruccin DESCRIBE que proporciona informacin sobre una nueva base de datos, que denominaremos pruebas.
los campos que forman una tabla determinada. Por A continuacin, volveremos a ejecutar SHOW DATABASES
ejemplo, para ver los campos que forman la tabla user, para comprobar si, efectivamente, nuestra nueva base
escribiramos: de datos aparece en la lista. Esta ltima operacin se
puede apreciar en la Figura 8.30.
mysql> describe user;

No reproducimos el resultado de la sentencia debido al


excesivo nmero de campos que forman la tabla, lo cual
hace que la informacin obtenida mediante la instruc-
cin DESCRIBE ocupe, en nuestro caso, bastante ms de
una pantalla.

En cualquier caso, al visualizar la estructura de la tabla


user podemos encontrar, al principio, los campos Host,
User y Password. En la Figura 8.29 se reproduce el resul-
tado de la consulta slo con estos tres campos. Fig. 8.30. Creacin de una base de datos.

235
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Si abrimos la base de datos mediante use y ejecutamos Al igual que ocurre con otros lenguajes, los tipos pue-
SHOW TABLES, comprobaremos que la base de datos den combinarse con otros atributos como, por ejemplo,
est vaca, ya que la acabamos de crear. Para dar de UNSIGNED, que indica que slo se admiten valores posi-
alta una tabla usaremos otra sentencia que ya se cono- tivos, o bien ZEROFILL, que hace que los espacios en
ce: CREATE TABLE. blanco a la izquierda se rellenen con ceros.

Al crear una tabla debes enumerar los campos


A continuacin, presentamos un Caso prctico que nos
que la formarn, as como el nombre y el tipo de servir para consolidar los conocimientos adquiridos.
cada campo.

Caso prctico
Es conveniente conocer los tipos de datos que pode-
mos usar en MySQL, a pesar de que no varan sustancial-
mente respecto a los que se han ido presentando a lo 2 Vas a repasar la creacin de tablas.
largo de este manual. No obstante, en la Tabla 8.1 pre-
sentamos los tipos de datos ms importantes. Se pide

Tipo Descripcin En la base de datos pruebas debes crear dos tablas,


Puede contener cualquier carcter. Longitud variable con un tamao alumnos y asignaturas, con la siguiente descripcin:
varchar (n)
mximo de n bytes, siendo el lmite para n de 65536
Puede contener cualquier carcter, pero con longitud fija de n bytes. alumno(#idalu, nomalu, fnacimiento)
char (n) Los espacios no ocupados se rellenan con blancos. asignatura(#idasi, nomasi)
Valor mximo de n es 255
date Una fecha
Solucin
datetime Una fecha y una hora Con los conocimientos que hemos adquirido hasta el
time Una hora momento, podemos crear las tablas con las siguien-
year (n) tes instrucciones:
Un ao con n dgitos (2 o 4)
bit (n) Un nmero de n bits. Slo en versiones de MySQL superiores a la 5 mysql> create table alumnos
bool Lgico: 0 falso, 1 verdadero
(idalu int(4) unsigned,
nomalu varchar(30),
tinyint (n) Un entero con un mximo de n cifras. Valores entre 128 y 127 fnacimiento date);
mysql> create table asignatura
smallint (n) Un entero con un mximo de n cifras. Valores entre 32768 y 32767
(idasi smallint(2) unsigned,
Un entero con un mximo de n cifras. Valores entre 8388608 y nomasi varchar(20));
mediumint (n)
8388607

int (n) Un entero con un mximo de n cifras. Valores entre 2147483648 y


2147483647 La solucin propuesta es slo una de las posibles
Un entero con un mximo de n cifras. Para valores no incluidos en
soluciones a este caso. Es probable que se eche en
bigint (n)
los intervalos anteriores falta la presencia de claves primarias, puesto que la
definicin de claves primarias, forneas y otras res-
float (n, d) Un nmero real con n cifras de las cuales d son decimales. Valores
tricciones similares se presentarn ms adelante.
entre 3.402823466E+38 y 3.402823466E+38
Un nmero real con n cifras de las que d son decimales.
double (n, d) Para valores con mayor precisin que los anteriores, o no incluidos Introduccin y manipulacin de datos
en el intervalo
enum (a, Las instrucciones para introducir y manipular datos en
b, c...) Puede incluir cualquiera de los elementos enumerados en la lista una tabla han sido ampliamente estudiadas en unidades
anteriores. Sin embargo, aprovecharemos este punto
Tabla 8.1. Tipos de datos en MySQL. para recordar las ms importantes en la siguiente tabla.

236
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Instruccin Funcin mysql> load data infile asig.txt into table


asignatura;
INSERT INTO Introducir nuevas filas en la tabla
Como se puede observar, el nombre del fichero de texto
DELETE FROM
va entre comillas simples, mientras que el nombre de la
Borrar filas en la tabla tabla se introduce sin ningn delimitador. Si el proceso
se realiza correctamente, aparecer por pantalla el
UPDATE Modificar filas en la tabla nmero de filas que se han aadido a la tabla.
Tabla 8.2. Instrucciones de introduccin y modificacin
En la Figura 8.32 se puede apreciar el proceso completo,
de filas.
as como la posterior comprobacin.

No vamos a insistir en la sintaxis y el uso de estas ins-


trucciones. Nos parece ms importante incidir en aque-
llos aspectos en los que MySQL dispone de alguna fun-
cionalidad aadida o diferente.

As pues, para insertar filas en una tabla podemos, ade-


ms de hacerlo manualmente con INSERT, aprovechar la
instruccin LOAD DATA INFILEINTO TABLE que permite
la importacin de datos contenidos en un fichero de
texto. Los requisitos para que esta sentencia funcione
Fig. 8.32. Importacin de filas desde un archivo.
son los siguientes:

Q El fichero de texto debe estar en la misma carpeta Si la importacin da problemas, en ocasiones se resuelven
que la tabla a la cual desea importarse. aadiendo en el fichero de texto un carcter al final de
Q En el fichero de texto debe haber un tabulador de cada lnea que sirva para marcar el salto a la siguiente.
separacin entre cada columna. Si optamos por esta posibilidad, entonces la instruccin
de importacin queda de la siguiente manera:
Supongamos que disponemos del fichero asig.txt con
el formato que puede apreciarse en la Figura 8.31. LOAD DATA INFILE fichero.txt INTO TABLE tabla
LINES TERMINATED BY carcter;

Como es lgico, deber usarse como marcador de final


de lnea un carcter que no pueda encontrarse en otro
punto de la fila, lo cual llevara a confusin y a una
errnea importacin de los datos.

Si recordamos el funcionamiento de INSERT, la importa-


cin que acabamos de hacer sera equivalente a haber
tecleado desde la lnea de comandos la siguiente ins-
Fig. 8.31. El fichero de texto asig.txt. truccin:

El fichero debe estar guardado en la misma carpeta mysql> insert into asignatura
pruebas, dentro de Data. El espacio entre las dos colum- values(1,OBDOC),(2,FOL),(3,RET),(4,IMESI
nas ha de insertarse pulsando el tabulador y no la barra ),(5,IMAOC);
espaciadora.
Veamos seguidamente cmo implementar las claves,
A continuacin, nos dirigiremos a MySQL, abriremos la tanto primarias como ajenas, as como otras restriccio-
base de datos pruebas, y teclearemos: nes de uso comn.

237
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

C Restricciones en MySQL

En MySQL, como en otros sistemas gestores de bases de


datos, existe la posibilidad de incorporar ciertas restric-
ciones y propiedades especiales en las definiciones de
los campos de una tabla. As pues, a continuacin
vamos a analizar las restricciones ms frecuentes, empe-
zando por aquellas de mayor importancia: las claves pri-
marias y ajenas. Fig. 8.33. Creacin de una clave primaria.

probacin mediante la clusula DESCRIBE.


Claves primarias
Para definir la clave primaria de una tabla se usa la expre-
Claves ajenas
sin PRIMARY KEY, que puede introducirse en la misma
lnea de definicin del campo que har de clave, o bien Como se vio en las primeras unidades del libro, la fun-
al final de la declaracin de campos. No obstante, cuan-
do la clave primaria est formada por ms de un campo,
ser obligatorio definirla al final. La clave ajena hace referencia a un campo que se
aade a una tabla para hacer de enlace con otra.
As pues, para definir la clave primaria de la tabla alum- Dicho campo har la funcin de clave primaria en
nos que hemos creado en el Caso prctico 2, deberamos la tabla referenciada.
haber escrito la instruccin de la siguiente manera:

mysql> create table alumnos cin de las claves ajenas consiste en garantizar la inte-
(idalu int(4) unsigned primary key, gridad referencial entre tablas.
nomalu varchar(30),
fnacimiento date); Supongamos que disponemos de una tabla provincia
cuya clave primaria es idprov. Adems, tenemos una tabla
O tambin: ciudad que queremos enlazar con la tabla provincia para
que quede constancia de la provincia a la que pertene-
mysql> create table alumnos ce cada ciudad. As pues, aadiramos a la tabla ciudad
(idalu int(4) unsigned, un campo, denominado tambin idprov, que hara refe-
nomalu varchar(30), rencia a la clave primaria de la tabla provincia y que en
fnacimiento date, la tabla ciudad realizara la funcin de clave ajena.
primary key (idalu));
La integridad referencial entre ambas tablas se garanti-
En nuestro caso, la tabla ya est creada. Para aadirle zara si, adems de saber a qu provincia corresponde
la clave primaria, sin borrarla y volverla a crear, se cada ciudad, se asegura que no podr asignarse un
puede emplear el comando ALTER TABLE, que permite cdigo de provincia a una ciudad si previamente dicha
modificar la estructura de una tabla. Adems, se usar provincia no existe en la tabla provincias.
la clusula ADD.
En la definicin del campo, las claves ajenas se especi-
Por tanto, la instruccin sera la siguiente: fican en MySQL mediante la clusula REFERENCES y, a
continuacin, el nombre de la tabla referenciada con su
mysql> alter table alumnos add primary key clave primaria entre parntesis. Siguiendo con nuestro
(idalu); ejemplo, se debera escribir:

En la Figura 8.33 puede verse el proceso de adicin de mysql> create table ciudad
la clave primaria a la tabla y, posteriormente, la com- (idciud int(2) unsigned primary key,

238
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

nomciud varchar(25), al menos en la versin de MySQL que estamos utilizan-


idprov int(2) unsigned references do. Es necesario realizar la comprobacin, puesto que
provincia(idprov)); por defecto MySQL crea las tablas como MyIsam.
Lgicamente, para poder hacer referencia a la tabla pro-
vincia, sta debe haber sido declarada previamente.
Otras restricciones
Como regla general, es conveniente declarar en primer
lugar aquellas tablas que no contienen claves ajenas. En la definicin de campo es posible incluir otras res-
tricciones, adems de las de clave. Las ms importantes
Es realmente importante tener en cuenta que los cam- son:
pos enlazados (la clave primaria y la clave ajena) deben
ser exactamente del mismo tipo. Por tanto, si idprov se Q Valor nico. En ocasiones interesa que un campo
hubiera definido como int(2) UNSIGNED en la tabla pro- que no pertenece a una clave primaria tenga, de
vincia, y como int(2) en la tabla ciudad, no se acepta- todas formas, un valor nico para cada fila de la
ra la restriccin de clave ajena y aparecera un error. tabla.
Podemos pensar, por ejemplo, en el NIF de un fichero
De la misma forma que ocurra con las claves primarias, de clientes.
las claves ajenas pueden definirse al final de la tabla. En estos casos se utiliza la clusula UNIQUE. He aqu
Sin embargo, cuando la clave ajena est formada por el resultado:
varios campos, entonces es obligatorio hacerlo de esta
forma. Adems, si la definicin se incluye al final de la mysql> create table cliente
tabla, deber incluirse la clusula FOREIGN KEY. As (idCli int(4)unsigned primary key,
pues, en el caso anterior se debera escribir: CliNom varchar(25),
CliPob varchar(25),
mysql> create table ciudad CliNif varchar(15) unique);
(idciu int(2) unsigned primary key,
nomciu varchar(25), Q Autoincrementable. Muchas veces la clave principal
idprov int(2) unsigned, de una tabla es simplemente un cdigo que no tiene
foreign key (idprov) references mayor significado que la identificacin de cada ele-
provincia(idprov)); mento.
Si es as, puede ser interesante hacer que dicho
As mismo, el campo o campos que forman parte de la cdigo se vaya incrementando de forma automtica
clave ajena deben estar indexados, para lo que usare- cada vez que se da de alta una fila. As, el primer
mos la clusula INDEX y el nombre del campo o campos cliente tendra el cdigo 1, el segundo tendra el 2,
que forman el ndice entre parntesis. De esa forma, la y as sucesivamente, sin intervencin del usuario.
creacin de la tabla ciudad quedara, de manera defini- Para ello se usa la clusula AUTO INCREMENT en la
tiva, como sigue: definicin del campo. He aqu el resultado:

mysql> create table ciudad mysql> create table cliente


(idciu int(2) unsigned primary key, (idCli int(4)unsigned primary key
nomciu varchar(25),
idprov int(2) unsigned, auto_increment,
index(idprov), CliNom varchar(25),
foreign key (idprov) references CliPob varchar(25),
provincia(idprov)); CliNif varchar(15) unique);

An queda otra cuestin importante por resolver: en Q Valor nulo. Cuando un campo es clave primaria, no
MySQL las tablas pueden ser de varios tipos, entre ellos puede tener en absoluto un valor nulo, es decir,
MyIsam o InnoDB. Aunque ms adelante se volver dejarse sin valor (no se debe confundir con valor 0,
sobre esta cuestin, es importante saber que las claves o con espacios en blanco). Sin embargo, esa misma
ajenas slo funcionarn si las tablas son de tipo InnoDB, restriccin puede aplicarse tambin a campos no

239
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

clave, mediante la clusula NOT NULL. mysql> create table cliente


Pensemos, por ejemplo, en que sea obligatorio poner (idCli int(4)unsigned primary key
un valor al NIF cuando se da de alta un cliente. He auto_increment,
aqu el resultado: CliNom varchar(25),
mysql> create table cliente CliPob varchar(25) default
(idCli int(4)unsigned primary key Valencia,
CliNif varchar(15) not null
auto_increment, unique);
CliNom varchar(25),
CliPob varchar(25), Es interesante conocer una particularidad del tipo enum:
CliNif varchar(15) not null al declarar el valor por defecto, si se pone ste entre
unique); comillas simples, har referencia al elemento de la lista
cuyo valor coincida con el indicado; si, por el contrario,
Q Valor por defecto. Al dar de alta una fila en una el valor por defecto consiste en un nmero sin comillas
tabla, y antes de introducir algn valor, todos los simples, entonces se est haciendo referencia al nmero
campos tienen el valor NULL (vaco). de orden en la lista de enum.
A veces, existe un campo que tendr siempre el
mismo valor en todas las filas, salvo contadas excep- Imaginemos que creamos una tabla de hoteles con un
ciones. campo categora cuyo valor puede ser 3, 4 o 5 y que
Por ejemplo, si en nuestro fichero de clientes sabe- queremos que, por defecto, asuma el valor 3. Esto se
mos que la gran mayora son de Valencia, podemos podra conseguir indistintamente mediante dos formas:
hacer que el campo CliPob asuma, por defecto, el
valor Valencia sin tener que escribirlo cada vez. Para categora enum(3,4,5) default 3
ello, se usa la clusula DEFAULT en la definicin del categora enum(3,4,5) default 1
campo. He aqu el resultado:
En ambos casos, el valor por defecto ser 3.

Caso prctico
Finalmente, para saber de qu asignaturas se ha matriculado
3 Vas a aplicar los conceptos presentados hasta cada alumno, es preciso crear la tabla matrcula. Para ello,
ahora a las tablas creadas en el Caso prctico 2. debers basarte en la siguiente descripcin:
Recordemos cules eran:
matrcula(#idalu, #idasi)
mysql> create table alumnos alumnos asignatura
(idalu int(4)unsigned,
nomalu varchar(30), Solucin
fnacimiento date);
mysql> create table asignatura En primer lugar, para modificar la estructura de una tabla, se
(idasi smallint(2) unsigned, deber usar ALTER TABLE junto con la clusula ADD si estamos
nomasi varchar(20)); aadiendo elementos.

Se pide En nuestro caso, se aadir a la tabla alumnos la propiedad de


clave primaria para el campo idalu. Adems, se modificarn los
En la base de datos pruebas, debes modificar la tabla alum- campos idalu y fnacimiento, el primero para hacerlo autoincre-
nos de forma que el campo idalu sea clave primaria y autoin- mentable y el segundo para que no acepte el valor nulo.
crementable, mientras que la fecha de nacimiento sea obli-
gatoria. Adems, debes modificar la tabla asignatura para As pues, para modificar cualquier propiedad de un campo
que el campo idasi sea tambin clave primaria y autoincre- que no sea PRIMARY KEY, usaremos ALTER TABLE con la clu-
mentable. sula MODIFY.

240
8. Bases de datos y software libre. MySQL bsico
8.2 El cliente de MySQL en modo texto

Caso prctico (continuacin)

Al modificar un campo con ALTER TABLE se deber repetir toda Recordemos que un campo debe estar indexado para poder
la especificacin de dicho campo, incluso aquellas caracters- ser clave ajena. Teniendo en cuenta esta premisa y aplican-
ticas que no cambian. Por tanto, la sentencia para realizar los do los conocimientos adquiridos en esta unidad, la sentencia
cambios en alumnos se correspondera con la que se muestra de creacin de la tabla matrcula se correspondera con la que
en la Figura 8.34. se reproduce en la Figura 8.36.

Fig. 8.34. Modificacin de la tabla alumnos. Fig. 8.36. Modificacin de la tabla matrcula.

A continuacin, aplicaremos el mismo mtodo para modificar La sentencia que se reproduce en la Figura 3.36 cuenta con
la tabla asignatura, tal como se aprecia en la Figura 8.35. algunas particularidades destacables.

En primer lugar, se ha definido la clave primaria despus de la


declaracin de campos, puesto que en este caso la clave est
formada por ms de un campo.

En segundo lugar, se ha creado un ndice para cada uno de los


Fig. 8.35. Modificacin de la tabla asignatura. campos que vamos a definir como clave ajena.

Para finalizar, crearemos la tabla matrcula con slo dos cam- Finalmente, se han aadido las clusulas FOREIGN KEY al final
pos: el cdigo de alumno y el cdigo de asignatura. Ambos para definir las claves ajenas. Adems, REFERENCES no se ha
sern claves ajenas respecto a las tablas alumnos y asignatura, puesto al lado de cada campo porque antes deben crearse los
respectivamente. Adems, juntos formarn la clave primaria de ndices: no puede definirse una clave ajena si previamente el
la tabla matrcula. campo no est indexado.

Para terminar con este Apartado, conviene tener pre-


sente una singularidad ms de la instruccin ALTER
TABLE.

Si se desea cambiar el nombre de un campo, no utiliza-


remos la clusula MODIFY, sino CHANGE seguida del anti-
guo nombre del campo, el nombre nuevo y el resto de
propiedades.

Para cambiar, por ejemplo, el nombre al campo fnaci-


miento y dejarlo como fnac, la modificacin se debera
realizar tal como se muestra en la Figura 8.37. Fig. 8.37. Modificacin del nombre de un campo.

241
8. Bases de datos y software libre. MySQL bsico
8.3 Seguridad en MySQL

8.3 Seguridad en MySQL


Como casi siempre cuando se mencionan bases de [WITH GRANT OPTION];
datos, los principales aspectos de la seguridad estn Como se ha repetido en numerosas ocasiones, la senten-
relacionados con el control de los accesos a la infor- cia GRANT se emplea para asignar permisos a usuarios ya
macin, adems de la proteccin de sta. En este existentes. No obstante, en MySQL el usuario se crea
Apartado abordaremos cmo, de manera bsica, se automticamente en caso de no existir. En esta versin,
pueden realizar ambas tareas desde el mismo cliente esta posibilidad es la nica de la que disponemos para
texto de MySQL. crear usuarios nuevos, a no ser que nos atrevamos a
manipular directamente la tabla user.

A Gestin de usuarios Antes de mostrar un ejemplo, en la Tabla 8.3 presenta-


mos los permisos que pueden asignarse en MySQL.
La gestin de usuarios en MySQL es muy sencilla y no
difiere prcticamente de lo que se ha ido presentando Veamos un ejemplo de esta instruccin haciendo uso de
en unidades anteriores. un Caso prctico.

Este hecho obedece a que las sentencias SQL que ya Al igual que en otros SGBD, la sentencia que permite
conocemos se utilizan tambin en MySQL, as como los retirar permisos a los usuarios es REVOKE, cuya sintaxis
permisos tpicos. es la siguiente:

En cualquier caso, conviene repasar el uso de dichas REVOKE tipo-permiso [(lista-columnas)]


sentencias, haciendo hincapi en las particularidades ON {tabla | * | *.* | base-datos.*}
del producto que se est tratando. FROM usuario;

Los tipos de permiso son los mismos que se presentan


Creacin de usuarios en MySQL
en la Tabla 8.3.
A partir de la versin 5 de MySQL se podrn crear usua-
rios mediante la sentencia CREATE USER tpica, con la Permiso Operaciones permitidas
sintaxis siguiente:
ALL Todas
CREATE USER user [IDENTIFIED BY [PASSWORD]
password]
USAGE Ninguna
[, user [IDENTIFIED BY [PASSWORD] password]]
...
ALTER Modificar estructura
Como se puede apreciar, simplemente se indica el nom-
bre de usuario y, de forma opcional, la contrasea. Sin CREATE Crear
embargo, en las versiones anteriores a la 5 como, por
ejemplo, la que nosotros estamos utilizando, no existe DELETE, DROP Borrar columnas/tablas
todava esta opcin.
INSERT Insertar
Por tanto, debemos buscar otro mtodo para crear usua-
rios. Mediante la siguiente sentencia este problema
queda resuelto: SELECT Realizar consultas

GRANT tipo-permiso [(lista-columnas)] UPDATE Modificar datos


ON {tabla | * | *.* | base-datos.*}
TO usuario [IDENTIFIED BY contrasea] Tabla 8.3. Permisos en MySQL.

242
8. Bases de datos y software libre. MySQL bsico
8.3 Seguridad en MySQL

Caso prctico

4 Vas a abrir la base de datos pruebas al exterior,


dejando la posibilidad de consultar informacin a
cualquier usuario.

Se pide

En la base de datos pruebas, crea un usuario con nombre invi-


tado y contrasea hola que pueda acceder a cualquier tabla de
la base de datos, pero slo para realizar consultas.

Solucin
Fig. 8.39. El usuario invitado realiza una consulta.
Habilitaremos al usuario invitado para realizar consultas (per-
miso SELECT) mediante la instruccin GRANT, que al mismo Seguidamente, trataremos de aadir una lnea a la tabla asig-
tiempo lo dar de alta. La ejecucin del comando puede apre- natura, la misma que acabamos de consultar. El resultado de
ciarse en la Figura 8.38. este intento puede apreciarse en la Figura 8.40.

Fig. 8.40. El usuario invitado no puede insertar filas.

Fig. 8.38. Creacin del usuario invitado. Aunque el mensaje de error no aclara del todo la situacin,
est claro que el sistema no permite que el usuario invitado
A continuacin, saldremos de MySQL y volveremos a entrar inserte filas nuevas en la tabla. Esto obedece a que el nico
como invitado, nos conectaremos a la base de datos pruebas y permiso que se le ha otorgado a dicho usuario es SELECT, y
realizaremos una consulta sobre la tabla asignatura. El resul- este permiso slo le habilita para realizar consultas similares
tado de este proceso puede observarse en la Figura 8.39. a la que ha efectuado en la Figura 8.38.

Consultar permisos
Para obtener una lista de los usuarios, debemos conec-
tarnos a la base de datos mysql y ejecutar la siguiente
consulta: mysql> select user from user;.

As, obtendremos una lista con todos los usuarios defi-


nidos. Para saber con qu bases de datos puede traba-
jar un usuario y con qu permisos, usaremos SHOW
GRANTS FOR usuario.

Supongamos que deseamos localizar al usuario invitado


y consultar sus permisos en las diferentes bases de
datos creadas. En la Figura 8.41 puede apreciarse el
resultado del proceso. Fig. 8.41. Consulta de los permisos de un usuario.

243
8. Bases de datos y software libre. MySQL bsico
8.3 Seguridad en MySQL

Como se observa en la figura, el usuario invitado tiene diente a la base de datos (en nuestro caso, pruebas)
el permiso USAGE para todos los archivos de todas las desde Data a otro directorio.
bases de datos. En otras palabras, este usuario slo
puede conectarse. Sin embargo, dispone adems del El motivo reside en que en la propia carpeta raz Data
permiso SELECT para la base de datos pruebas, que le se encuentran los ficheros correspondientes al diccio-
habilita a la hora de realizar consultas. nario de datos, que incluyen informacin necesaria para
gestionar el contenido de la base de datos.
Borrado de usuarios
En todo caso, si queremos duplicar la carpeta, debera-
En MySQL es posible borrar usuarios mediante la instruc- mos hacerlo con todo el contenido de Data, con lo que
cin DROP USER que, al contrario de CREATE USER, tam- realmente estaramos copiando todas las bases de
bin existe en versiones anteriores a la 5. No obstante, datos. Para copiar slo una base de datos, o incluso
en estas versiones slo pueden eliminarse usuarios sin solamente ciertas tablas, la mejor opcin es crear un
permisos, por lo que antes de borrar una cuenta de fichero de sentencias en lenguaje SQL que permitan, lle-
usuario debern eliminarse todos sus permisos mediante gado el caso, reconstruir los ficheros y recuperar su con-
la instruccin REVOKE. tenido.

Imaginemos que deseamos eliminar al usuario invitado Una posibilidad muy sencilla para realizar copias de
que hemos creado para la prctica anterior. Los pasos a seguridad consiste en la utilizacin del comando
seguir son los que se reproducen en la Figura 8.42. MYSQLDUMP.

Las numerosas opciones que ofrece MYSQLDUMP pueden


consultarse desde la lnea de comandos, sin entrar en
MySQL, tecleando mysqldumphelp.

Para copiar nuestra base de datos pruebas, tanto la


estructura de las tablas como su contenido, saldremos
a la lnea de comandos tecleando cmd.exe en el apar-
tado Ejecutar del men Windows y escribiremos:

mysqldump -u=root password=obdoc opt


complete_insert pruebas > pruebas.sql

Las opciones -u=root y password=obdoc no necesitan


Fig. 8.42. Eliminacin de una cuenta de usuario. comentarios. La opcin opt rene en s misma varias
caractersticas de configuracin necesarias para realizar
la copia. complete_insert indica que se va a incluir en
Copias, exportacin
B e importacin
el fichero una copia de los datos y, a continuacin,
figura el nombre de la base de datos, en nuestro caso
pruebas.
El control de la seguridad de la informacin supone una
parte muy importante en la gestin de bases de datos. Finalmente, la salida de la instruccin se redirige a un
Dejando aparte la gestin de usuarios, la principal fichero con extensin .sql, que contendr todas las ins-
medida a la hora de asegurar los datos es la realizacin trucciones necesarias para recuperar los ficheros de la
de copias de seguridad. base de datos si fuera preciso.

Es posible realizar tambin una copia de seguridad de


Copias de seguridad
una o varias tablas. Para ello, se incluirn los nombres
En primer lugar, es preciso sealar que no sirve de nada de las tablas correspondientes a continuacin del nom-
copiar los ficheros de datos de la carpeta correspon- bre de la base de datos. Si, por ejemplo, deseramos

244
8. Bases de datos y software libre. MySQL bsico
8.3 Seguridad en MySQL

copiar la tabla asignatura, resultara un comando como select * into outfile \copias\asig.txt ->
el que se reproduce en la Figura 8.43. fields optionally enclosed by
-> terminated by ;
-> from asignatura;

Como se puede observar, la clusula FIELDS OPTIONALLY


ENCLOSED BY se usa para definir el carcter separador de
Fig. 8.43. Copia de seguridad de la tabla asignatura.
campos (columnas) y terminated by para hacer lo pro-
pio con el separador de registros (filas).
Parte del contenido del fichero asig.sql que se ha
generado durante el proceso de copiado puede apre-
Importacin de datos
ciarse en la Figura 8.44.
La importacin de datos desde la lnea de comandos se
realiza a travs de una sentencia que ya se ha presen-
tado con anterioridad: LOAD DATA INFILE.

A dicha sentencia deberemos, de todas formas, aadirle


las opciones FIELDS OPTIONALLY ENCLOSED y TERMINATED
BY como se hayan usado en el proceso de exportacin.

As pues, podramos recuperar el fichero asig.txt,


generado en el apartado anterior, segn puede obser-
varse en la Figura 8.45.

Fig. 8.44. Contenido del fichero asig.sql.

As pues, con el sistema de copias que hemos visto, para


recuperar los datos simplemente ser necesario ejecutar
el fichero .sql que se ha creado durante la copia.
Fig. 8.45. Importacin de datos desde un fichero de texto.

Exportacin de datos
En el Apartado anterior hemos presentado una forma de
exportar datos que consista en crear un fichero de sen- ODBC (Open DataBase Connectivity) es un driver
tencias SQL que posteriormente se pudieran ejecutar en desarrollado por Microsoft que permite el acceso
otra base de datos. a bases de datos desde cualquier aplicacin que
soporte dicho driver.
Sin embargo, una exportacin a otro tipo de programa,
por ejemplo a Excel, no puede hacerse de esta manera.

Para exportar datos a otros programas, una buena Otra forma, seguramente ms adecuada, de conectar
opcin consiste en la generacin, para cada tabla, de MySQL con otros productos para la exportacin e impor-
un fichero de texto cuyo contenido coincida con el de tacin de datos es mediante el uso de ODBC.
la tabla copiada, generalmente con los campos entre
comillas u otro separador. En el prximo Apartado, dedicado al uso de MySQL en
modo grfico, incluiremos una seccin dedicada a la
La sentencia para realizar dicha exportacin es la conexin con otros programas a travs de la mencio-
siguiente: nada tcnica.

245
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

8.4 MySQL grfico: EasyPHP


Instalacin y configuracin
Existen diversas posibilidades para trabajar con MySQL
en un entorno grfico. Nosotros hemos optado por pre-
sentar un paquete muy completo que incluye todas las
B de EasyPHP

herramientas necesarias para llevar a cabo una completa El paquete EasyPHP puede instalarse de dos formas dife-
gestin y administracin de un SGBD basado en MySQL, rentes: bien producto a producto por separado, bien
incluso a travs de la Web. mediante una instalacin global y automtica. Por nues-
tra parte, escogeremos esta segunda opcin.

A ElComponentes
paquete EasyPHP.
Descarga del producto
El paquete EasyPHP surge ante la exigencia de combi- Como se ha comentado anteriormente, EasyPHP es un
nar diversos productos necesarios para desarrollar un producto open-source que podemos obtener gratuita-
servidor web que ofrezca acceso a bases de datos. mente a travs de la Web. La pgina oficial, desde la
que efectuaremos la descarga, es www.easyphp.org y
EasyPHP contiene los principales productos relaciona- est en francs. En la parte izquierda de la pgina
dos con el acceso a bases de datos a travs de la Web y principal aparece un men como el que se reproduce
proporciona una conectividad total entre ellos, adems en la Figura 8.46.
de gran potencia y flexibilidad.

Una de las grandes ventajas de EasyPHP es que los pro-


ductos que ofrece son todos de libre uso, lo cual con-
vierte a este paquete en una potente suite gratuita para
el desarrollo de webs con acceso a bases de datos.

En primer lugar, veamos cules son los productos que se


incluyen en EasyPHP, as como la funcin de cada uno
de ellos.
Fig. 8.46. Men de la pgina web de EasyPHP.
Componentes
La versin 1.8 del paquete EasyPHP incluye los siguien- Al seleccionar la opcin Downloads, surgir una lista con
tes componentes: los productos disponibles para su descarga. Por nues-
tra parte, descargaremos e instalaremos EasyPHP 1.8.
Q Servidor Apache para Web, versin 1.3.33 Al hacer clic sobre el producto elegido, se nos mostra-
Q Lenguaje de programacin PHP, versin 4.3.10 r una lista de servidores desde los que podemos reali-
Q Base de datos MySQL versin 4.1.9 zar la descarga. Escogemos uno cualquiera y descarga-
Q phpMyAdmin, centro de control de MySQL, versin remos el fichero easyphp1-8_setup.exe.
2. 6.1
Es conveniente tambin descargar el fichero langues.txt,
A continuacin, explicaremos paso a paso el proceso de pues contiene la informacin necesaria para disponer de
instalacin, configuracin y puesta en marcha del una amplia lista de idiomas entre los que poder escoger.
paquete EasyPHP.

Posteriormente nos centraremos en el funcionamiento


Ambos ficheros, tanto easyphp1-
de phpMyAdmin, producto que nos interesa, dado que 8_setup.exe como langues.txt,
desde all se realizarn las tareas de mantenimiento y los encontrars en el CD del alumno.
administracin de las bases de datos en MySQL.

246
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Instalacin del paquete EasyPHP Si todo el proceso de instalacin se ha realizado de


forma correcta, aparecern algunas pantallas donde ten-
Una vez descargado el paquete EasyPHP 1.8 en nues- dremos que ir pulsando el botn Continuar. Finalmente,
tro disco duro, haremos doble clic sobre el fichero surgir la pantalla de inicio de los servidores necesarios
easyphp1-8_setup.exe y empezar, por tanto, la ins- para el funcionamiento del paquete, pantalla que se
talacin propiamente dicha. En primer lugar, aparece- muestra en la Figura 8.49.
r una ventana que nos permite escoger el idioma en
el que tendr lugar el proceso de instalacin. Ante la
ausencia del castellano, optaremos por el ingls
(vase la Figura 8.47).

Fig. 8.49. Arranque correcto de los servidores.

Como puede apreciarse en la figura anterior, los servi-


dores Apache y MySQL han arrancado correctamente,
con lo cual ya tenemos el producto instalado y en fun-
Fig. 8.47. Seleccin de idioma para la instalacin. cionamiento.

Posteriormente, surgir una pantalla de bienvenida, Si el servidor MySQL no arranca, puede deberse a varios
donde pulsaremos el botn Siguiente (Next). En la pan- motivos. Una de las principales causas es tener otro ser-
talla que aparecer a continuacin, se nos invita a vidor de MySQL ejecutndose al mismo tiempo, por
aceptar la licencia de usuario propuesta. Es preciso ejemplo el que hemos instalado al principio de la uni-
tener en cuenta que, aunque el uso es gratuito, existen dad. Tambin se pueden producir conflictos con el ser-
ciertas condiciones que conviene conocer. vicio de administracin IIS. Por todo ello, en caso de
fallo al iniciar los servidores, es conveniente consultar
Una vez aceptadas las condiciones, y tras otra pantalla la lista de servicios de Windows y desactivar los que pue-
de informacin en la que volveremos a pulsar Siguiente den causar conflictos. Este procedimiento es el que
(Next), se nos pedir un directorio para la instalacin hemos seguido con IIS Server, tal como se muestra en
del producto. Aceptaremos el que se nos ofrece por la Figura 8.50.
defecto, tal como puede apreciarse en la Figura 8.48.

Fig. 8.50. Servicios de Windows incompatibles con


Fig. 8.48. Seleccin de la carpeta de instalacin.
EasyPHP.
Seguidamente, se nos pedir la ubicacin del acceso
directo al programa dentro del men Inicio. Por nuestra Como bien hemos advertido, el producto se pone en
parte, aceptaremos tambin la opcin que aparece en la funcionamiento de manera automtica. Si queremos
pantalla. Finalmente, dar comienzo el proceso de ins- hacerlo manualmente, podemos dirigirnos al men Ini-
talacin del producto en nuestro ordenador, proceso que cio/Programas/EasyPHP (o el nombre que se le haya
se completar de manera bastante rpida. dado al apartado) y hacer clic en la opcin EasyPHP.

247
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Cuando el programa est en marcha, aparecer en la Como nuestro objetivo no consiste en explicar el fun-
barra de herramientas, en la parte inferior derecha de cionamiento y configuracin del servidor web, pasemos
la pantalla, un icono similar al que reproducimos en la a comprobar el producto que realmente nos interesa: el
Figura 8.51. servidor de MySQL.

El entorno grfico:
Fig. 8.51. Icono correspondiente a EasyPHP en la barra
C phpMyAdmin
de herramientas. El acceso al servidor de MySQL tiene lugar a travs de
un entorno grfico denominado phpMyAdmin, entorno
Para comprobar el estado de los servidores, basta con que abordaremos en los siguientes Apartados.
pulsar sobre dicho icono con el botn izquierdo del
ratn. Si hacemos clic con el botn derecho, entonces
Acceso a phpMyAdmin
aparecer un men donde se nos ofrece la posibilidad
de detener el funcionamiento de los servidores o reini- El entorno phpMyAdmin funciona como una Web,
ciarlos, entre otras posibilidades. Ms adelante exami- puesto que est preparado para acceder a l remota-
naremos el resto de opciones. mente. Si deseamos entrar en modo local, abriremos
nuestro navegador web y escribiremos la direccin
http://localhost/mysql/, que nos permitir acceder a
Comprobacin
una pgina como la que se aprecia en la Figura 8.53.
A continuacin, vamos a verificar el funcionamiento de
los diferentes productos que forman EasyPHP. Adems,
aprovecharemos este Apartado para comentar distintos
aspectos de la configuracin que merecen destacarse.

En primer lugar, comprobemos el servidor web Apache.


Si en el men que aparece al hacer clic con el botn
derecho del ratn sobre el icono de EasyPHP seleccio-
namos la opcin Web local (Local Web), surgir una pan-
talla como la que se muestra en la Figura 8.52.

Fig. 8.53. Pantalla principal de phpMyAdmin.

En la parte derecha de la anterior pantalla se puede


observar un desplegable que da opcin a escoger el idio-
ma de trabajo. Ahora s que podemos elegir el castella-
no, entre otros muchos idiomas disponibles. No obstan-
te, para tener esta lista actualizada, debemos copiar el
fichero langues.txt, que habamos descargado antes,
a la misma carpeta (c:\Archivos de Programa\EasyPHP).
Fig. 8.52. Pantalla principal del servidor web.
Gestin de bases de datos
con phpMyAdmin
La anterior pantalla es la que figura como pgina prin-
cipal de nuestro servidor web. La direccin 127.0.0.1 Vamos a empezar a trabajar con phpMyAdmin. En pri-
que aparece en la barra de direcciones es la direccin mer lugar, observamos que en la parte izquierda de la
de nuestra mquina local. Si ms adelante creamos una pantalla reproducida en la Figura 8.53 hay un selector
pgina web y la dejamos en la carpeta que corresponde bajo el nombre Bases de Datos que nos permite esco-
a nuestro servidor, sa ser la pgina que aparecer en ger la base de datos con la que deseamos trabajar
esta direccin. (vase la Figura 8.54).

248
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Como se observa en la ventana anterior, se ha cambiado


la lnea marcada en rojo de manera que la carpeta que
figura al final sea dataobdoc, en lugar de Data, como
apareca originalmente. De esta forma dispondremos de
una carpeta nueva y vaca en donde poder experimen-
tar libremente todas las opciones que se irn presen-
tando en los siguientes Apartados. As pues, vamos a
crear nuestra base de datos pruebas, tal como se
observa en la Figura 8.57.
Fig. 8.54. Selector de bases de datos.

Si es la primera vez que trabajamos con este producto,


lgicamente no dispondremos de ninguna base de datos
creada. En la parte central de la pantalla reproducida en Fig. 8.57. Creacin de la base de datos pruebas.
la Figura 8.53 disponemos de la opcin Crear nueva base
de datos que nos permitir precisamente crear una A continuacin podemos abrir la lista de bases de datos
nueva base de datos (vase la Figura 8.55). y comprobaremos, segn puede apreciarse en la Figura
8.58, que pruebas aparece junto a las bases de datos que
se crean automticamente durante la instalacin.

Fig. 8.55. Apartado para crear una base de datos.

Debemos tener en cuenta que las bases de datos se


crean en la carpeta Data dentro de c:\Archivos de
programa\EasyPHP\mysql.

Sin embargo, la ubicacin puede cambiarse modificando


el fichero my.ini que se encuentra tambin en
c:\Archivos de programa\EasyPHP\mysql. Adems,
podemos dirigirnos al men contextual que aparece al Fig. 8.58. La base de datos pruebas ha sido creada.
hacer clic con el botn derecho sobre el icono de
EasyPHP, en el apartado configuration/mysql, para Para abrir una base de datos de la lista, simplemente
obtener el mismo resultado. De cualquiera de las dos haremos clic sobre su nombre y surgir una pantalla
formas, surgir el contenido del fichero my.ini, tal similar a la que se reproduce en la Figura 8.59. En la
como se aprecia en la Figura 8.56. parte inferior aparecern, en su momento, las tablas
incluidas en la base de datos.

Fig. 8.56. Configuracin del servidor MySQL. Fig. 8.59. La base de datos pruebas est vaca.

249
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

La base de datos pruebas, como puede observarse, est unsigned, que es el que seleccionaremos para el
vaca. Ahora es el momento de empezar a crear las campo idalu.
tablas que contendrn la informacin. Q Nulo. En esta casilla podemos escoger entre null o
not null para especificar, respectivamente, si el
campo admite valores nulos o no. En nuestro caso,
Creacin y mantenimiento de tablas
lo dejaremos en not null.
Al crear una base de datos aparece en la pantalla una Q Predeterminado. Esta opcin permite introducir un
opcin para crear tablas nuevas de forma manual, como valor por defecto para que, al dar de alta una nueva
puede observarse en la Figura 8.60. fila, el campo se inicialice con dicho valor. En el caso
de idalu no es necesario, puesto que escogeremos
otra opcin posterior para su inicializacin.
Q Extra. Precisamente en esta casilla es donde espe-
cificaremos el valor por defecto del campo idalu,
puesto que se nos permite definir el campo como
auto_increment, es decir, que va tomando valores
sucesivos por defecto, empezando desde el 1.
Fig. 8.60. Opcin de creacin de tablas.
Al final de cada campo se encuentran unos apartados
encabezados por un icono identificador. Si pasamos con
A continuacin procederemos a crear, por tanto, la tabla el ratn sobre dicho icono veremos cul es su signifi-
alumnos, con la estructura que se ha ido aplicando en cado. En la Figura 8.61 puede apreciarse un detalle de
apartados anteriores: esta parte de la definicin de campo.

idalu int(4) unsigned


nomalu varchar(30)
fnacimiento date

En primer lugar, escribiremos el nombre de la tabla en


el cuadro de texto que hemos mostrado en la Figura
8.60 y especificaremos que contendr tres campos.

Tras pulsar el botn Contine, aparecer la pantalla de


Fig. 8.61. Definicin de claves y otras caractersticas de
definicin de campos, que consta de los siguientes
campo.
apartados:

Q Campo. En esta casilla introduciremos el nombre del El primer icono corresponde a la caracterstica de clave
campo, en nuestro caso idalu. primaria, y se deber seleccionar en todos aquellos cam-
Q Tipo. Elegiremos el tipo del campo entre los que pos que formen parte de dicha clave. En nuestro caso,
aparecen al desplegar la lista. En el caso de idalu slo marcaremos como clave primaria el campo idalu, el
escogeremos el tipo int, por ejemplo. primero de la lista.
Q Longitud/valores. En esta casilla especificaremos la
longitud del campo o, en el caso de tipos enumera- El segundo icono hace referencia a la indexacin del
dos, los posibles valores que puede tomar. En nues- campo: habr un ndice asociado si lo dejamos marcado
tro caso, dejaremos en 4 la longitud de idalu. y no lo habr si lo dejamos desmarcado. En el caso de
Q Ordenacin (Collation). Hace referencia al criterio idalu no lo marcaremos, puesto que el hecho de ser
de ordenacin alfabtica y, a no ser que tengamos clave primaria ya implica la existencia de un ndice aso-
problemas de este tipo, es mejor dejarlo en blanco o ciado al campo.
con el valor por defecto.
Q Atributos. En este apartado podemos escoger entre El tercer icono permite definir la unicidad o no del
algunos modificadores del tipo como, por ejemplo, campo. En los campos que sean clave primaria por s

250
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

mismos no ser necesario seleccionar esta caracters-


tica. En los campos que no sean clave primaria por s
mismos, marcaremos la casilla si no deseamos admitir
valores duplicados para el campo.

La cuarta columna est marcada en los campos que no


poseen ninguna caracterstica especial por lo que res-
pecta a claves, ndices o valores nicos. Si la seleccio- Fig. 8.64. Definicin de campos de la tabla alumnos.
namos manualmente, estamos anulando todas las defi-
niciones realizadas anteriormente. Una vez completada la definicin de la tabla, pulsaremos
el botn Grabar para proceder a su creacin definitiva.
La ltima columna permite la introduccin de un texto
explicativo de la tabla. Es importante hacer constar que Una vez guardada la tabla, aparecer su nombre en la
el tipo de la tabla debe definirse como InnoDb si nues- parte izquierda de la pantalla, en la lista correspon-
tra intencin es crear claves ajenas, puesto que el resto diente a la base de datos de la que forma parte, que en
de tipos de tabla, al menos en las versiones actuales, no nuestro caso se trata de pruebas. En la Figura 8.65
admiten dichas claves. Si no se va a trabajar con inte- puede comprobarse cmo la nueva tabla se encuentra
gridad referencial y, por tanto, no son necesarias las en la lista.
claves ajenas, entonces se puede optar por el tipo MyI-
sam, que es ms rpido.

La seleccin del tipo de tabla se realiza en la lista des-


plegable Tipo de tabla que aparece justo debajo de la
definicin de campos (vase la Figura 8.62).

Fig. 8.65. La tabla alumnos aparece en la base de datos.

Al seleccionar la tabla alumnos en la lista, surgir una


pantalla con varias opciones que permiten realizar
diversas operaciones sobre la tabla escogida. Estas
opciones son:
Fig. 8.62. Definicin del Tipo de tabla.
Q Estructura. Esta pantalla se corresponde, como es
En las Figuras 8.63 y 8.64 se observa el resultado de la obvio, con la estructura de la tabla. Su formato es
definicin completa de los campos de nuestra tabla muy similar al visto durante su creacin. Desde esta
alumnos. ventana se pueden realizar cambios como la inclusin
de nuevas columnas o la modificacin de atributos.
Aparte de los iconos que ya conocemos, aparecen dos
nuevos: Editar, que seleccionaremos cuando queramos
realizar modificaciones en la fila; Suprimir, que
permite eliminar el campo o campos seleccionados.
Estos iconos aparecen en otras pantallas, siempre
con el mismo significado de modificar y borrar, res-
Fig. 8.63. Definicin de campos de la tabla alumnos. pectivamente.

251
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

En esta misma pantalla tambin pueden crearse ndi-


ces y relaciones, algo que veremos con ms detalle
cuando expliquemos la forma de crear claves ajenas.
En la Figura 8.66 se reproduce la pantalla Estructura.

Fig. 8.68. Examinar el contenido de la tabla.

Q SQL. Esta opcin permite realizar cualquier consul-


ta en formato SQL, como puede observarse en la
Figura 8.69.
Fig. 8.66. Estructura de una tabla.

Q Insertar. Esta pestaa se encuentra ms a la derecha


que Examinar, pero la vemos en primer lugar porque
es preciso insertar datos antes de poder explorar el
contenido de la tabla.
Al seleccionar Insertar aparece una pantalla, similar
a la que se reproduce en la Figura 8.67, donde intro- Fig. 8.69. Introduccin manual de una consulta SQL.
duciremos los valores de uno o varios campos (por
defecto dos). A continuacin, escogeremos entre la Tambin se puede obtener dicha consulta de un
opcin de volver o continuar insertando registros. En archivo de texto externo, como se aprecia en la
cualquier caso, pulsaremos el botn Contine. Figura 8.70.

Fig. 8.70. Ejecucin de una consulta externa.

Q Buscar. Desde esta opcin se pueden realizar con-


sultas utilizando una especie de asistente (vase la
Figura 8.71). Para seleccionar campos alternos,
deberemos hacer clic con el ratn sobre cada uno
de ellos, mientras mantenemos pulsada la tecla
Fig. 8.67. Introduccin de valores en una tabla. Maysculas.
Q Exportar. Desde este apartado se examinar en deta-
Q Examinar. Esta pestaa se activa una vez que la lle cuando hagamos referencia a la exportacin e
tabla ya contiene datos. Al seleccionarla, aparece importacin de datos mediante phpMyAdmin.
una pantalla con los datos contenidos en la tabla. Q Operaciones. Al seleccionar esta pestaa aparecen
El formato con el que aparecen los datos puede varias operaciones que pueden realizarse sobre la
variarse al modificar las opciones que se muestran tabla escogida, como por ejemplo:
en la parte inferior de la pantalla, tal como se apre- - Modificar el orden de la tabla.
cia en la Figura 8.68. - Cambiar el nombre de la tabla.

252
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Q Eliminar. Mediante esta opcin se borra por com-


pleto una tabla, tanto la informacin contenida
como la propia tabla. Una vez que una tabla ha sido
eliminada, dejar de aparecer en la lista de tablas
que forman la base de datos.

Fig. 8.71. Confeccin de consultas con el asistente.

- Mover o copiar la tabla a otra tabla, incluso de


diferente base de datos.
Cambiar el tipo de la tabla, opcin muy til si se
nos ha olvidado definirla como InnoDb.
Realizar operaciones de mantenimiento como des-
fragmentacin, vaciado de cach, etc.
La pantalla correspondiente a esta opcin puede
apreciarse en la Figura 8.72.
Q Vaciar. Esta opcin permite eliminar todos los regis-
Fig. 8.72. Opciones del apartado Operaciones.
tros introducidos. Sin embargo, la tabla sigue exis-
tiendo, aunque vaca.
Caso prctico

5 En el Apartado anterior has creado la base de datos Una vez en la pantalla principal de la base de datos, volveremos
pruebas y la tabla alumnos. En este Caso prctico vas a ver la opcin de crear una nueva tabla. En este momento pro-
a crear alguna tabla ms en la misma base de datos. cederemos a dar los mismos pasos efectuados para crear la tabla
alumnos. En las Figuras 8.74 y 8.75 puede apreciarse el resul-
Se pide tado final, tal como debera haber quedado.

Crea la tabla asignaturas con la siguiente estructura:

idasi smallint(2) unsigned,


nomasi varchar(20)
Fig. 8.74. Creacin de la tabla asignaturas (1).
Solucin

Para proceder a la creacin de esta nueva tabla, simplemente


hemos de seguir los mismos pasos que se han dado para crear
la tabla alumnos. Por tanto, en primer lugar, abriremos la base
de datos pruebas haciendo clic en la parte superior de la pan-
talla, sobre su nombre (vase la Figura 8.73). Fig. 8.75. Creacin de la tabla asignaturas (2).

Es preciso tener presente que la tabla debe ser de tipo InnoDb,


puesto que posteriormente nos veremos en la necesidad de
definir claves ajenas y opciones de integridad referencial. Si
por un descuido la tabla se ha creado como MyIsam, podemos
enmendar nuestro error yendo a la opcin Operaciones y cam-
Fig. 8.73. Volver a la pantalla principal de pruebas. biando el tipo a InnoDb.

253
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Claves ajenas e integridad referencial Una vez indexados en ambas tablas los campos que
intervienen en la relacin, es el momento de enlazar-
Como hemos mencionado en diferentes ocasiones, la inte- los y especificar las acciones encaminadas a asegurar
gridad referencial slo est implementada de momento la integridad referencial.
sobre tablas del tipo InnoDb. Por tanto, para trabajar
con claves ajenas es preciso comprobar que las tablas Para ello, seleccionaremos la tabla que contiene las
son del tipo mencionado. claves ajenas y entraremos en la opcin Vista de rela-
ciones que aparece en la pestaa Estructura, tal como
La creacin de claves ajenas puede realizarse de dos for- se observa en la Figura 8.77.
mas, bien mediante sentencias SQL directamente, bien
a travs del asistente. En cualquier caso, hay que tener
en cuenta las dos condiciones ya mencionadas en su
momento pero que conviene recordar:

Q Los campos relacionados han de ser exactamente del


mismo tipo.
Q Los campos relacionados han de estar indexados por
s mismos, es decir, no basta con que formen parte
de un ndice junto a otros campos.
Fig. 8.77. Apartado para crear o modificar relaciones.
Por su parte, para indexar un campo disponemos de dos
opciones: Dentro de Vista de relaciones aparecen todos los campos
de la tabla, aunque solamente en aquellos que pueden
Q Hacerlo durante la creacin del mismo, mediante el ser claves ajenas se nos dar la posibilidad de elegir con
icono ndices, tal como se ha apuntado anterior- qu clave primaria de otra tabla se relacionar el
mente. campo. Adems, para cada relacin podemos establecer
Q Crear los ndices posteriormente abriendo la tabla y qu operacin se llevar a cabo cuando se intente modi-
entrando en Estructura, como puede apreciarse en la ficar o borrar el valor de la clave primaria asociada. Las
Figura 8.76. opciones de las que disponemos son las siguientes:

Q CASCADE. Al cambiar el valor de la clave primaria se


actualizarn automticamente los valores de las cla-
ves ajenas. Si se borra una clave primaria, entonces
se eliminarn todos los registros con claves ajenas
que hagan referencia a la clave primaria borrada.
Q SET NULL. Si se cambia o se borra una clave prima-
ria, entonces las claves ajenas relacionadas cambia-
Fig. 8.76. Pantalla de creacin de ndices. rn su valor a NULL.
Q NO ACTION. Las claves ajenas no sufrirn ninguna
Los campos que ya tienen un ndice de tipo PRIMARY, variacin ante un cambio o borrado de las claves pri-
como es el caso de idasi en la figura anterior, no nece- marias relacionadas. Lgicamente, esto supone una
sitan indexarse de nuevo. Sin embargo, los campos que violacin de la integridad referencial y, por tanto, no
formen parte de un ndice compuesto s que debern es aconsejable.
indexarse por separado si intervienen en alguna relacin Q RESTRICT. No se permite borrar ni cambiar el valor
con otras tablas. de claves primarias mientras tengan claves ajenas
relacionadas. En caso necesario, debern eliminarse
Para crear el ndice, simplemente hay que pulsar el los registros relacionados de otras tablas previa-
botn Contine y seleccionar el campo que se desea inde- mente al cambio o borrado de la clave primaria.
xar. Para borrar o modificar un ndice disponemos, en
la columna Accin, de los botones que ya conocemos. Veamos un ejemplo mediante un Caso prctico.

254
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Caso prctico

6 En la base de datos pruebas dispones de las tablas


alumnos y asignaturas. Se desea relacionar ambas
tablas en una relacin M:N.

Se pide

Crea la tabla matrcula con la siguiente estructura:

idasi smallint(2) unsigned Fig. 8.79. Creacin de los ndices de la tabla matrcula.
idalu int(4) unsigned

A continuacin crea las relaciones entre la nueva tabla y el Una vez creada la nueva tabla con sus campos e ndices corres-
resto, de forma que se asegure la integridad referencial, que pondientes, para definir su relacin con el resto iremos a la
no se pueda borrar un alumno ni una asignatura con matrcu- opcin Vista de relaciones. Al hacer clic sobre la misma, apa-
las relacionadas y que al cambiar la clave primaria de un recer una pantalla como la que se reproduce en la Figura 8.80.
alumno o una asignatura se cambien automticamente las cla-
ves ajenas correspondientes en la tabla matrcula.

Solucin

En primer lugar, crearemos la tabla de la manera que ya hemos


puesto en prctica anteriormente. El resultado sera similar al Fig. 8.80. Pantalla de creacin de relaciones.
que se reproduce en la Figura 8.78.

En este momento introduciremos las relaciones de la tabla


matrcula con las tablas alumnos y asignaturas. Es evidente que
Fig. 8.78. Estructura de la tabla matrcula. el campo idalu enlaza la tabla matrcula con la tabla alumnos.
Por su parte, idasi enlaza la tabla matrcula con la tabla asig-
Como se puede observar, idalu e idasi se han creado con las naturas (vase la Figura 8.81).
mismas propiedades que tienen en las tablas alumnos y asig-
naturas, respectivamente. Sin embargo, hay una excepcin: en
la tabla matrcula no tienen la propiedad auto_increment, ya
que su valor no se genera automticamente, sino que ser
introducido por el usuario.

Queda un ltimo detalle antes de definir las relaciones. Como Fig. 8.81. Creacin de relaciones en la tabla matrcula.
hemos comentado con anterioridad, los campos que actan
como claves ajenas deben tener un ndice propio. Esto no Como se observa en la Figura 8.81, para la propiedad ON
ocurre en ese instante, puesto que los campos idalu e idasi DELETE se ha escogido el valor RESTRICT, de manera que no se
forman parte de un mismo ndice en la tabla matrcula. Por admiten borrados de alumnos que tengan fichas asociadas en
tanto, el siguiente paso consistir en crear un ndice para la tabla matrcula. Lo mismo se ha hecho con idasi.
cada uno de los campos por separado. Para ello, nos dirigire-
mos al apartado ndices que se encuentra en la parte central Para la propiedad ON UPDATE se ha elegido el valor CASCADE, de
de la pantalla y crearemos los ndices tal como se puede forma que si cambia el identificador de un alumno o una asig-
observar en la Figura 8.79. natura en sus respectivas tablas, lo har tambin en matrcula.

255
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

D Seguridad con phpMyAdmin a la base de datos sin contrasea. Para asignar una con-
trasea al usuario root accedemos a Privilegios, selec-
cionamos el usuario, entramos al icono Modificar y,
La seguridad con phpMyAdmin se implementa tal como desde Cambio de contrasea, efectuamos la operacin.
hemos visto en el Apartado correspondiente de MySQL. Inmediatamente dejaremos de tener acceso a phpMyAd-
As pues, nos limitaremos a comentar ciertos aspectos min y aparece un mensaje similar al de la Figura 8.83.
de la gestin de usuarios.

Gestin de usuarios con phpMyAdmin


Desde la pantalla principal de phpMyAdmin, antes de
abrir ninguna base de datos podemos crear usuarios
mediante la opcin Privilegios, cuya pantalla se repro-
duce en la Figura 8.82.

Fig. 8.83. Error de conexin con phpMyAdmin.

Para solucionar este problema, accederemos al fichero


config.inc.php, que se encuentra en c:\Archivos de
programa\Easyphp\phpMyAdmin, lo abrimos mediante un
editor de php o con WordPad (no con el bloc de notas),
y buscaremos la parte que aparece en la Figura 8.84.

Fig. 8.82. Vista global de usuarios.

Un mensaje en la parte inferior de la pantalla nos


indica la necesidad de recargar los privilegios cada Fig. 8.84. Detalle del fichero config.inc.php.
vez que hagamos algn cambio desde esta opcin.

En la lnea correspondiente a password pondremos la


Como se puede apreciar en la Figura 8.82, de momento contrasea. En cuanto al tipo de conexin que aparece
slo existe el usuario root, creado durante la instala- en la primera lnea, por defecto config, contamos con
cin. Si seleccionamos dicho usuario y vamos a Modifi- las siguientes opciones:
car encontraremos los siguientes apartados:
Q config. No pide identificacin.
Q Privilegios globales. Se aplican a todas las bases de Q cookies. Leer el nombre de usuario y la contrasea
datos. de un fichero del disco duro.
Q Privilegios especficos. Se aplican slo a las bases Q http. Se pedir cada vez el nombre de usuario y la
de datos y tablas seleccionadas. contrasea. Es la mejor opcin si el phpMyAdmin es
Q Cambio de contrasea. Permite cambiar la contra- accesible desde red y es, por tanto, la conexin que
sea previamente introducida, o crearla si no se ha nosotros escogemos. As, el fichero quedar tal como
hecho anteriormente. se puede apreciar en la Figura 8.85.
Q Cambio de login. Permite cambiar el nombre de
usuario, el servidor al que se conecta y la contrasea.

Estas opciones son muy sencillas y no necesitan mayor


comentario. Sin embargo, es interesante resaltar un
aspecto de la seguridad: el usuario root puede acceder Fig. 8.85. Cambios en el fichero config.inc.php.

256
8. Bases de datos y software libre. MySQL bsico
8.4 MySQL grfico: EasyPHP

Al reiniciar EasyPHP, por ejemplo con el botn derecho


sobre el icono de la barra de herramientas inferior dere-
cha y pulsando Reiniciar (Restart), al entrar a phpMyAd-
min aparecer la pantalla que se ve en la Figura 8.86.

Fig. 8.86. Identificacin de entrada a phpMyAdmin.

Fig. 8.88. Opciones de exportacin.


Exportacin e importacin de
E datos con phpMyAdmin
La ltima versin de ODBC es un fichero que ocupa unos
La exportacin e importacin de datos puede realizarse 8 Mb. Podrs encontrarlo en el CD que se adjunta con
directamente mediante sentencias SQL, o a travs de el libro (MyODBC-3.51.11-1-win.exe).
ODBC.

Una vez descargado, se ejecuta y simplemente hay que


Importacin de datos desde SQL
ir respondiendo a las preguntas que van apareciendo en
Para importar datos desde ficheros SQL entraremos en pantalla para completar su instalacin. A continuacin,
la pestaa SQL y, desde la opcin Localizacin del al entrar en Panel de Control/Herramientas Administra-
archivo de texto, buscaremos y ejecutaremos el fichero tivas/Orgenes de datos/ODBC, deberamos ver una pan-
correspondiente (vase la Figura 8.87). talla similar a la que se muestra en la Figura 8.89.

Fig. 8.89. Driver ODBC para MySQL.


Fig. 8.87. Ejecucin de instrucciones SQL desde un
fichero externo.
Para configurar el driver lo seleccionaremos en la lista e
introduciremos el nombre de usuario (root) y la contra-
Exportacin de datos
sea (obdoc), as como el servidor al cual nos conecta-
Desde la pestaa Exportar se pueden exportar tanto remos, que ser, si trabajamos como local, localhost.
tablas como bases de datos enteras. Al hacer clic en Tambin podemos seleccionar la base de datos a la que
dicha pestaa, aparecen diversas opciones como la entraremos por defecto cuando nos conectemos va
eleccin del tipo de fichero generado, la exportacin ODBC. Pulsando test podemos comprobar si el funciona-
slo de la estructura o de la estructura y datos o la miento es correcto. Si es as, desde cualquier programa
generacin de un fichero SQL. Estas opciones se repro- que incluya ODBC podremos traspasar informacin a
ducen en la Figura 8.88. nuestra base de datos.

Para concluir, es interesante que el lector sepa que exis-


Conexin a travs de ODBC
ten otras interfaces grficas para MySQL aparte de
En la pgina web de MySQL, en el apartado de descar- phpMyAdmin. Algunas de ellas son Gnome MySQL Client,
gas, se encuentra la ltima versin del driver ODBC para MySQLNavigator, MySQLGUI (desarrollada por los propios
Windows. creadores de MySQL) o WebMin.

257
8. Bases de datos y software libre. MySQL bsico
Actividades

Actividades

1 Qu ventajas tiene instalar MySQL como un servi- 14 Cules son las ventajas e inconvenientes de las
cio de Windows? Razona tu respuesta y enumera tablas InnoDB respecto a las de tipo MyIsam?
dichas ventajas. Razona tu respuesta y enumera dichas ventajas e
inconvenientes.
2 Incluir las carpetas de MySQL dentro de la variable
del sistema PATH tiene una ventaja, cul es? 15 Cmo podemos convertir una tabla InnoDB al
tipo MyIsam? Explica brevemente los pasos que
3 Qu diferencia hay entre entrar a MySQL desde la deberas dar.
opcin que se crea en el men Inicio, o hacerlo desde
la lnea de comandos entrando con Ejecutar/cmd.exe? 16 Al definir una relacin, qu significa el valor CAS-
CADE en la propiedad ON DELETE? Y el mismo valor
4 Cul es la funcin de la variable Datadir dentro del en la propiedad ON UPDATE?
fichero de configuracin my.ini?
17 Cmo podemos evitar que se borren registros que
5 Cul es la funcin de la sentencia DESCRIBE? tienen asociados a su vez registros de otras tablas
a travs de claves ajenas?

6 Cmo afecta a una variable de tipo numrico la clu- 18 Explica una de las formas de copiar una tabla con
sula UNSIGNED? Y la clusula ZEROFILL? otro nombre en la misma base de datos.
Si lo consideras oportuno, pon un ejemplo.
7 En qu casos puede declararse un campo como clave
primaria en la misma lnea de definicin del campo? 19 Cul es la funcin del driver ODBC para MySQL?
Justifica tu respuesta.

8 En qu consiste la restriccin de valor nico? 20 Aparte de ODBC, qu otras opciones existen para
importar y exportar datos desde MySQL?

9 Cul es la funcin de la clusula AUTO_INCREMENT? 21 Qu opciones de conexin podemos configurar


desde el fichero config.inc.php?
Confecciona una lista con dichas opciones.
10 Cules son las caractersticas del tipo de datos
enum? 22 Qu diferencia existe entre los privilegios globales
y los privilegios especficos?
11 Para qu modificaciones de una tabla no puede usar- Pon un par de ejemplos de cada uno de ellos.
se la clusula MODIFY de la instruccin ALTER TABLE?
23 Por qu no es aconsejable el valor NO ACTION en la
12 Qu instruccin usaremos en MySQL para crear un propiedad ON DELETE de una relacin? Justifica tu
usuario? respuesta.

13 Qu instruccin podemos usar en MySQL para


conocer los privilegios de un usuario? En bd_con_easyphp.htm hay un vdeo donde se explica
cmo se gestionan las BD mysql en entorno grfico EasyPHP.

258
8. Bases de datos y software libre. MySQL bsico
Prcticas

Prcticas

1 Crea, usando MySQL en modo texto, una base de 9 Inserta varias filas en la tabla tarifas y comprueba
datos llamada ejercicios. que se cumple la integridad referencial, as como
todas las restricciones incluidas en la definicin de
2 En la base de datos anterior crea los siguientes la tabla.
ficheros:
proveedor(#idprv,nomprv,tfno) 10 Crea un usuario llamado invitado que slo pueda
producto(#idprd,nomprd,pvp) entrar a consultar la informacin contenida en la
base de datos, pero no pueda modificar ni borrar
3 Inserta diversos valores en las tablas proveedor y nada.
producto.
11 Realiza los cambios necesarios en la configuracin
4 Crea un fichero de texto con extensin SQL que con- de phpMyAdmin para permitir el acceso al usuario
tenga las instrucciones necesarias para reconstruir creado en la actividad 10.
la base de datos ejercicios en caso de fallo, o si se Entra con dicha clave de usuario y comprueba si las
quiere exportar la informacin a otra base de datos. restricciones de acceso que has definido se cumplen.

5 Accede a travs de tu navegador a phpMyAdmin y 12 Instala el driver ODBC de MySQL que puedes encon-
comprueba que no tienes ningn problema en hacer- trar en su pgina web, realiza los cambios de con-
lo. En caso contrario, realiza los cambios de confi- figuracin que sean necesarios y efecta una impor-
guracin que sean necesarios. tacin de datos desde una base de datos en Access
de la informacin contenida en la base de datos
6 Crea una base de datos llamada actividades desde actividades.
phpMyAdmin. Importa las tablas que tenas en la
base de datos ejercicios usando el fichero SQL cre- 13 Realiza una exportacin desde phpMyAdmin de la
ado en la actividad 4. informacin de la tabla asignaturas a un fichero de
Excel.
7 Comprueba si las tablas que has importado son del
tipo InnoDb. En caso contrario, modifcalas para 14 Utiliza las opciones de exportar para realizar una
que lo sean. copia de seguridad completa de la base de datos
actividades a un fichero de texto.
8 Crea desde phpMyAdmin una nueva tabla, que Abre posteriormente dicho fichero con un editor de
denominars tarifas, que sirva para relacionar pro- textos y comprueba el resultado.
veedor y producto. Adems, dicha tabla deber con-
tener un campo llamado pcoste que har referencia 15 Configura ODBC de manera que puedas conectarte
al precio de coste que cada proveedor ofrece para por esta va tanto a la base de datos ejercicios como
cada producto. Las actualizaciones debern reali- a actividades.
zarse en cascada y los borrados de las claves prima- Necesitars, por tanto, dos entradas diferentes para
rias que tengan claves ajenas asociadas no debern el mismo driver ODBC.
permitirse.

259
Abrazo mortal, 21 74, 123, 124, 135, 136, 138, Declare cursor, 157
Acceso directo por posicin, 17 Clave principal, 74, 75, 123 Delete, 86, 100, 125, 126, 129, 145,
ndice analtico
Acceso directo por valor, 17 Claves alternativas, 14 148, 179, 182, 183
Acceso secuencial por posicin, 17 Claves candidatas, 14 Delphi, 161
Acceso secuencial por valor, 17 Cliente en modo texto, 231, 232 Dependencia funcional, 59, 60, 61, 63
Access, 67, 68, 69, 70, 71, 72, 73, 74, Close base de datos, 131, 132, 134, Dependencia multievaluada, 62
76, 79, 80, 81, 84, 85, 87, 88, 89, 90, 137, 139, 143 Dependencia transitiva, 60
92, 93, 94, 161, 178 Close cursor, 157 Desc, 99, 102, 104, 114, 115
Actualizar, 77, 78, 85, 88 CommandButton, 164 Detalle, 83
AddNew, 177 Comparticin, 19, 21, 22 Dim, 179, 181, 182, 183
Administrador, 26, 27 Config, 256 DML, 99, 100, 126, 129
Adodb, 130 Config.inc.php, 256 Dominio, 12, 13
Adox, 130 Conjunto, 99, 109, 115, 117, 124, 126 Drop database, 132
And, 100, 105, 107, 108, 109, 110, Connect, 156, 157 Drop table, 144, 147
114, 117, 179 Connect reset, 156, 157 EasyPHP, 246, 247, 248, 249, 256, 257
Any, 119 Constraint, 135, 136, 137, 138, 139, Editor de Visual Basic, 129
Aplicacin de bases de datos, 129 140, 141, 142, 143 Eliminacin, 79, 85, 86
Archivo, 14, 15, 22, 24 Consulta, 67, 72, 80, 81, 82, 83, 84, Else, 166, 168, 179
Arquitectura cliente/servidor, 27, 28 85, 86, 87, 88, 89, 92, 174, 180, 181, End, 166, 168, 172, 179, 182, 183
As, 112, 113, 115 182, 183 End declare section, 155, 156, 157
Asc, 102 Consulta multitabla, 115, 116 End if, 166, 179
Asistente de administracin, 188 Control Data, 174, 175, 176, 177, 178, Entidad, 8, 12, 13, 14, 15, 16, 19, 23,
Asistente de configuracin, 204 180, 181, 182 25, 35, 36, 37, 38, 39, 40, 41, 42, 43,
Atributo, 12, 13, 14, 15, 17, 23, 35, Cookies, 256 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
36, 38, 39, 40, 41, 44, 45, 46, 50, 51, Copiar, 79 54, 55, 56, 57
52, 53, 54, 55, 56, 58, 59, 60, 61, 62, Count, 100, 111, 112, 115 Entidad dbil, 39, 45, 55, 56, 57
Atributo multivalor, 15, 58 Create, 100 Entidad fuerte, 39, 55, 57,
Autoincrementable, 239, 240 Create database, 132 EOF, 179
Avg, 100, 110, 111, 112, 113, 114, Create table, 133, 134, 135, 136, 137, Espacio de tablas (tablespace), 202,
115, 119, 126 138, 139, 140, 142, 143, 147, 148, 203, 204, 211, 212, 214, 220
Base de datos, 7, 19, 20, 21, 22, 24, 149, 150 Evento, 165, 167, 169, 170, 171, 172,
25, 26, 27, 28, 29, 30, Create user, 129, 146, 147 173, 177, 178, 180, 181, 182
Base de datos distribuida, 29 Create view, 145, 147, 149 Exec sql, 155, 156, 157
Base de datos replicada, 29 Criterio, 84, 85 Execute, 183
Begin declare section, 155, 156, 157 Cruzadas, 86, 87 F5, 166, 175, 176, 177, 178
Beta, 226 Cuadro de texto, 163, 164, 165, 174, Fecha/Hora, 72
Between, 100, 105, 108, 109, 114, 127 177, 178 Fetch, 157
BOF, 179 Cuarta forma normal (4FN), 58, 61, Fichero, 15, 16, 17, 18, 19, 20, 21,
Borrar, 79 62, 63 22, 23, 24, 25, 26, 27, 31,
Caja de texto, 164, 165, 169, 175, Cuota, 214 Fichero indexado, 17
177, 178, 179, 182, 183 Cursor, 157 Ficheros calculados, 17
Campo, 14, 15, 17, 20, 21, 25, 72, 74, Dao, 180 Ficheros de constantes, 16
75, 82 Data bound grid control, 175 Ficheros externos, 16
Caption, 163, 164, 172, 173, 175, 180 Database, 174, 176, 180, 181, 182, Ficheros histricos, 16
Cardinalidad de una relacin, 43, 48 183 Ficheros internos, 16
Cardinalidad de una tabla, 50 Databasename, 174, 176 Ficheros maestros, 16
Cascada, 77 Datasource, 174, 175, 176, 177, 180 Ficheros relativos, 17
Case, 26 Date(), 122, 123 Ficheros secuenciales, 17
CDate, 177 Datevalue, 183 Fields, 177, 179
Checkbox, 169 Dato, 7, 8, 9, 10, 11, 12, 14, 15, 16, For, 168
Clusula, 100, 102, 103, 104 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, Foreign key, 138, 140, 141, 142
Clave, 13, 14, 17 28, 29, 30, 31, Forma normal de Boyce-Codd (FNBC),
Clave ajena, 50, 55, 56, 57, 59, 60, Dbase, 161 57, 61, 62
63, 123, 124, 135, 136, 138, DBGrid, 175, 176, 180, 181 Formateo de salidas, 198, 199, 200
Clave primaria, 14, 38, 39, 50, 51, 52, DCL, 99, 129 Formatos, 208, 209, 210
53, 55, 56, 57, 58, 59, 60, 61, 62, 63, DDL, 99, 100, 129 Formulario, 67, 72, 80, 88, 89, 90, 91,

260
92, 93, 95, 161, 162, 163, 164, 165, 121,126 Plantilla, 188, 204, 205, 206, 207
167, 169, 170, 171, 172, 173, 174, Modelo de datos, 35 Primary key, 136, 137, 138, 139, 140, 143
175, 176, 177, 178, 179, 180, 182, 183 Modelo en red, 36, 49 Primera forma normal (1FN), 57, 58,
From, 100, 102, 103, 104, 105, 106, Modelo entidad/relacin, 35, 37 59, 61, 62
107, 108, 109, 181, 182, 183 Modelo jerrquico, 36, 49 Privilegios, 146, 147, 148, 149, 150,
Funciones de agregado, 100, 126 Modelo orientado a datos, 37 152, 154, 214, 215, 216, 217, 218
Grado, 43, 50 Modelo orientado a objetos, 36 Privilegios de objeto, 215
Grant, 129, 147, 148, 149, 154 Modelo orientado al Privilegios del sistema, 215, 217
Grid computing, 187, 188 concepto/semntico, 36, 37, 50 Privilegios especficos, 256
Group by, 100, 111, 112, 113, 115, 119 Modelo relacional, 35, 36, 37, 49, 50, Privilegios globales, 256
Having, 100, 113, 115, 119 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, Procedimiento, 131
Host string/Cadena de conexin, 194, 206 61, 62, 63, Programa, 129, 155, 156, 157
http, 227, 256 Moneda, 72 Proyecto, 162, 165, 167, 168, 169,
Identificador, 13, 14 Movefirst, 179 170, 171, 172, 173, 174, 175, 176,
If, 166, 167, 168, 179 Movelast, 177 177, 178, 180, 181
Imprimir, 79, 80, 88, 92 Movenext, 179 Quinta forma normal (5FN), 58, 62
In, 100, 105, 109, 114 Msgbox, 165, 166, 167, 179 Recordset, 177, 179, 181, 182, 183
Inconsistencia, 21 My.ini, 233, 234, 249 Recordsource, 174, 176
ndice, 17, 18, 204, 212, 213 MyIsam, 239, 251, 253 Redundancia, 19, 20, 21
Informacin, 7, 8, 9, 10, 11, 12, 14, MySql, 100 Registro, 14, 15, 17, 18, 19, 20, 22,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, Mysqldump, 244 23, 27
26, 27, 29, 30, 31 Name, 172, 173 Relacin, 19, 22, 35, 36, 37, 39, 40,
Informe, 67, 72, 80, 92, 93, 94, 95 Natural join, 62 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
InnoDB, 239, 251, 253, 254 Neptuno, 21 51, 52, 53, 54, 55, 56, 57, 58, 60, 72,
InputBox, 166, 167 Next, 168 76, 77, 78, 87
Insert, 129, 145, 148, 149, 182, 183 Normalizacin, 54, 57, 59, 62, 63, Relacin 1:1, 41, 43, 49, 55
Insert into, 120, 121, 122, 123, 126 Not, 100, 105, 107, 108, 110, 179 Relacin 1:M, 41, 42, 43, 48, 49, 55,
Insert into select, 123 Not null, 135, 136, 137, 138, 139, 56, 57
Instalacin avanzada, 191 142, 143 Relacin binaria, 22, 40, 43, 48, 49
Instalacin bsica, 191 Nmero, 72 Relacin M:N, 41, 42, 43, 48, 55, 57,
Instancia, 193, 194, 195, 202, 207, 219 Objeto, 129 Relacin reflexiva, 22, 40, 43
Integer, 179 ODBC, 245, 257 Relacin ternaria, 22, 40, 43, 48, 49, 55
Integridad, 19, 20, 22, 24, 25, 52, 53, 60 Office, 68, 69, 70, 71, 73, 89, 92, Relacin universal, 54, 58
Integridad referencial, 78, 130, 138, 144 Ole DB, 130 Repositorio, 26
Interbase, 100 Open base de datos, 134, 137, 139, Restriccin, 41, 53, 58,
Interfaz grfica, 162, 165 142, 143 Restricciones de columna, 135, 136,
Intervalo de impresin, 80 Open cursor, 157 141, 142
iSQL *Plus, 188, 200, 201, 202, 206, 211 Open-source, 225, 226 Restricciones de tabla, 137, 138, 139,
Join, 118, 119 Opendatabase, 182, 183 141, 142
Label, 163, 174, 175 Openrecordset, 181, 182, 183 Resumen, 83, 85, 94
Langues.txt, 246, 248 Operador de comparacin, 102, 110 Revoke, 129, 148, 149, 154
LCD, 26 Operador de relacin, 107, 108 Rman, 219
LDD, 26 Or, 101, 102, 105, 107, 109, 110, 114 Rol, 214, 216, 217, 218, 221
Like, 100, 102, 105, 110, 114 Oracle, 68, 99, 100, 161 Roles, 146, 149, 150, 151, 152
Listener, 193, 219 Oracle Application Server 10g, 188 Root, 229, 230, 232, 244, 256, 257
LMD, 26 Oracle Database 10g, 188, 190 Segmento, 204
Load, 169, 170, 180 Oracle Enterprise Manager 10g, 188 Segunda forma normal (2FN), 57, 59,
Load data infile, 237, 245 Order by, 100, 102, 104, 111, 113, 60, 61, 62
LostFocus, 169 114, 115, 119 Seguridad, 130, 144, 146, 150, 151,
Max, 100, 110, 111, 112, 113, 114, 126 Parmetro, 81, 84, 85 152, 153, 154
Memo, 72 Particiones, 39, 40, 45, 46, 56, Seleccin, 71, 73, 75, 77, 81, 82, 83,
Memoria, 9, 10, 11, 12, 16, Path, 229, 231, 232 90, 94
Memoria externa, 10, 11, 12, 16 Perfil, 205, 214, 216, 218 Select, 129, 145, 146, 148, 149, 155,
Memoria interna, 9,10, 11, 12, 16 Permisos, 146, 147, 150, 151, 152, 156, 157, 180, 181, 182, 183
Men, 172, 173 153, 154 Sentencia externa, 119
Min, 100, 111, 112, 113, 114, 119, phpMyAdmin, 246, 248, 252, 256, 257 Sentencia subordinada, 119

261
Set, 181, 182, 183 Subconsulta, 119, 122, 123, 125, 126 Val, 171, 177, 182, 183
SGBD, 67, 68, 72, 81, 99 Subentidades, 39, 45, 46, 47, 56, Valor nulo, 239, 240
ndice analtico
SGBDR, 99 Sum, 100, 110, 111, 114, 115 Valor por defecto, 240, 250
Show, 170 Tabla, 35, 36, 38, 40, 41, 44, 45, 46, Valor nico, 239
S/No, 72 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, Variable, 131, 168, 169, 178, 179,
Sid, 192, 205 57, 58, 59, 60, 61, 62, 63, 67, 72, 73, 180, 181, 182, 183
Sistema de informacin, 10, 11, 12 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, Variables huspedes, 155, 156, 157
Sistema gestor de ficheros, 18 84, 85, 86, 88, 89, 90, 91, 92, 93, 94 VBA, 161
Sistema informtico, 7, 10, 11, 12, Tercera forma normal (3FN), 57, 60, Vista, 144, 147, 148, 149
14, 21 61, 62, 63 Vista de relaciones, 254, 255
Sistemas gestores de bases de datos, Text, 164, 171, 174, 177, 178, 179, Vista preliminar, 80
24, 25, 27, 182, 183 Visual Basic, 129, 161, 162, 164, 165,
SQL, 26, 81, 85, 86, 99, 161, 180, Textbox, 163 166, 168, 169, 171, 172, 173, 174,
181, 182, 183 Texto, 72 176, 177, 180, 182, 183,
SQL *Plus, 188, 194, 195, 196, 197, Then, 166, 179 Visual C, 161
198, 199, 200, 201, 202, 203, 204, Tipo de datos, 133, 151 Visual Fox pro, 161
206, 209, 211, 212, 214 Tupla, 50 Visual J, 161
Sql close, 157 Unique, 136, 137, 138 Visual Net, 161
SQL embebido, 155, 157 Unload, 169, 170 Wend, 168, 179
Sql open, 157 Update, 85, 100, 123, 124, 126, 129, Where, 100, 102, 103, 106, 107, 108,
String, 181, 183 145, 148, 156, 157, 182, 183 109, 110, 113, 116, 182, 183
Sub, 131, 132, 134, 136, 139, 142, Usuarios, 144, 146, 147, 148, 149, While, 168, 178, 179, 180
143, 145 150, 152, 153, 154 Workspace, 201

262
Uso del CD del alumno
Como habrs podido observar, este libro viene acompaado de Descargas
un CD con informacin complementaria. En este apartado, hemos incluido una serie de descargas de
utilidades que te ayudarn a profundizar en los contenidos del
En esta seccin queremos darte algunas orientaciones para mdulo. Cuando abras esta seccin, encontrars un listado con
que puedas sacarle el mayor provecho posible. el nombre de la utilidad, la pgina web desde la que descargarla,
la plataforma sobre la que funciona y una breve descripcin

A Requisitos para que sepas lo que puedes hacer con ella. Si quieres realizar
la descarga, slo tienes que pinchar sobre la pgina web
correspondiente.
El CD est preparado para funcionar bajo los sistemas opera-
tivos Windows, Macintosh y Linux. Los nicos requisitos para En algunos casos, el link te llevar directamente al cuadro de
su correcto funcionamiento son: dilogo de la descarga; en otros casos, hemos considerado
ms til que el link conduzca a la pgina web que alberga el
Un navegador, preferiblemente Internet Explorer 6.0 o archivo para que seas t quien busque la descarga correspon-
superior. diente. La razn para esto es que, en un futuro, algunas pgi-
Un plug-in de Flash para poder verlo en el navegador ins- nas web podrn ofrecer actualizaciones o nuevas versiones de
talado. La aplicacin comprueba que est el plug-in nece- las utilidades que adjuntamos y no queremos que te las pier-
sario y en caso contrario ofrece una direccin de Internet das dirigindote directamente a un archivo que puede no exis-
para instalarlo. tir ya.
Conexin a Internet para poder consultar el contenido de
los diferentes mens. Enlaces
En este apartado, hemos colocado un listado bastante extenso

B Arranque
de todas las pginas web que pueden ofrecerte ms datos para
el estudio de la materia. Las hemos clasificado por categoras,
de manera que esta seccin sea un instrumento til para tu
El CD contine un fichero de auto-arranque que permitir que futura carrera profesional. Encontrars estas pginas agrupa-
nada ms introducir el CD en el lector, ste se inicie solo. das en las siguientes secciones:

En caso de que esta caracterstica estuviera deshabilitada Arquitectura de red


desde el sistema operativo, bastara con hacer doble clic sobre Clientes
el archivo logo.html para que se iniciara la aplicacin. Comunicaciones
Documentacin

C Estructura



Entidades y Asociaciones
Estndares
Gestin remota
El CD est dividido en cuatro apartados: Documentacin, Des- Internet
cargas, Enlaces y Glosario. Vamos a explicarte brevemente lo Mensajera
que puedes encontrar en cada uno de ellos. Monitorizacin
Redes
Documentacin Seguridad
Cuando escojas una Unidad determinada, vers una lista des- Servidores
plegable que muestra la documentacin que hemos seleccio- Utilidades
nado para ampliar los contenidos de esa Unidad.
Glosario
Slo tienes que pinchar sobre el descriptor que te interese y En esta ltima seccin, hemos incorporado todos los trminos
el archivo o la pgina web en cuestin se abrir directamente que aparecen en las Unidades del libro. Estn ordenados alfa-
en el marco principal de la interfaz. Recuerda que tienes un bticamente, de manera que slo debers pinchar en la letra
men por cada Unidad. correspondiente para encontrar el trmino que busca.

263

También podría gustarte