Documente Academic
Documente Profesional
Documente Cultură
MySQL
ySQL es uno de los servidores de nombre único, para que podamos referirnos a
bases de datos de código abierto cada una de ellas sin riesgo de confundirla
(Open Source) más populares y con alguna de las otras.
conocidos del mundo, un sistema
de manejo de bases de datos sin igual en Al ser la tabla formada por columnas cada
rapidez, estabilidad y facilidad de desarrollo. columna debe tener un nombre único, para así
Dispone, además, de una arquitectura que la poder referimos a cada una de ellas
haceextremadamente rápida y fácil de perso- específicamente. En MySQL existen tres tipos
nalizar. distintos de columnas, dependiendo de los
datos que vayan a almacenar:
MySQL 135
Tabla 4.1.
Tinylnt Número entero con o sin signo. Con signo, el rango de valores válidos se
encuentra entre -128 y 127. Sin signo, el rango de valores válidos se encuentra
entre O a 255
Smalllnt Número entero con o sin signo. Con signo, el rango de valores se encuentra
entre -32768 y 32767. Sin signo, el rango de valores se encuentra entre Oy
65535
Mediumlnt Número entero con o sin signo. Con signo, el rango de valores válidos se
encuentra entre -8.388.608 y 8.388.607. Sin signo el rango de valores válidos
se encuentra entre Oy 6777215
Integer Número entero con o sin signo. Con signo, el rango de valores válidos se
encuentra entre -2147483648 y 2147483647. Sin signo, el rango de valores
válidos se encuentra entre Oy 429.4967.295
Int Número entero con o sin signo. Con signo, el rango de valores válidos se
encuentra entre -2147483648 y 2147483647. Sin signo, el rango de valores
válidos se encuentra entre Oy 429.4967.295
Biglnt Número entero con o sin signo. Con signo, el rango de valores válidos se
encuentra entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807. Sin
signo, el rango de valores válidos se encuentra entre Oy
18.446.744.073.709.551.615
136 Capítulo 4
Tipo Numérico Descripción
Tabla 4.2.
Time Almacena una hora. El rango de valores válidos para la misma se encuentra
entre -838 horas, 59 minutos y 59 segundos y 838 horas, 59 minutos y 59
segundos. El formato de almacenamiento es 'HH:MM:SS'
Date Time Combinación de fecha y hora. El rango de valores válidos se encuentra entre
las O horas, O minutos y O segundos del1 de enero de 1001 Y las 23 horas, 59
minutos y 59 segundos del 31 de diciembre del 9999. El formato de almacena-
miento es de año-mes-día horas:minutos:segundos
MySQL 137
Tabla 4.3. Tabla 4.4.
Formatos de almacenamiento del tipo Tipos de cadena disponibles para las tablas
de fecha TimeStamp. MySQL.
138 Capítulo 4
Tabla 4.5.
LongBlob Texto con una longitud máxima de 4.294.967.295 caracteres. Hay que tener
cuenta que debido a los protocolos de comunicación los paquetes que se
envían a través de la red pueden tener un máximo de 16 Mb
LongText Texto con una longitud máxima de 4.294.967.295 caracteres. Hay que tener
cuenta que, debido a los protocolos de comunicación, los paquetes que se
envían a través de la red pueden tener un máximo de 16 Mb
Enum Campo que puede obtener un único valor de una lista de posibles valores
donde se especifica. Este tipo acepta hasta 65535 valores distintos
Set Campo que puede contener ninguno, uno, o bien varios valores de una lista
que puede tener un máximo de 64 valores
Datos índices
Los datos son la información que se almacena Las tablas de MySQL pueden utilizar índices,
por filas dentro de las distintas tablas MySQL que sirven para mejorar el tiempo de respuesta
de las que disponemos, y cada uno de los de MySQL en las consultas cuando se realizan
registros es del tipo de datos de la columna a búsquedas en las distintas tablas. Puede
la que pertenece. establecer distintos tipos de índices para sus
tablas:
MySQL 139
Tabla 4.6. res de hospedaje de sitios Web no permiten
Tipos de índice para las tablas MySQL. acceder a la existente en el servidor, por lo
que suele ofrecerse a cambio el tener instala-
Tipos de índice Descripción
do un administrador o manipulador para la
base de datos. Para acceder al administrador
Primary Establece que el campo de bases de datos abra una nueva ventana de
en el que se define sea su navegador y teclee:
primario
http://localhost/phpMyAdmin
Index Crea un indexado del
campo para que la bús- tras lo que deberá ver en su navega dar el
queda sea más rápida administrador de bases de datos dispuesto
para ser utilizado tal y como se muestra en la
Unique Establece que los valores figura 4.1.
de ese campo sean
únicos para cada nuevos
datos de la tabla Nota: Recuerde que para acceder
a contenidos alojados en
1'ii1'.
~ http://localhost ha de haber
inicializado previamente el servi-
Nota: Es muy recomendable que dor Apache.
cada una de las tablas que cree
posea un campo con valores úni-
cos, lo que le ayudará a la identifi- Para irnos acostumbrando al funcionamiento
cación de ese registro. Por lo gene- de MySQL vamos a crear, primeramente, una
ral, este registro único es un base de datos, y posteriormente, y dentro de
número cuyo valor aumenta en una ésta, crearemos una tabla sobre la que hare-
unidad con cada registro nuevo que mos inserciones, modificaciones y selecciones
se añade a la tabla (un número de datos, de modo que las estructuras a crear
autoincremental) y se le suele dar en los siguientes apartados le servirán ade-
un nombre identificador de lo que más para ir realizando las distintas prácticas
representa, por ejemplo "id". y ejercicios necesarios para familiarizarse con
la manipulación de las bases de datos instala-
das en su servidor.
140 Capítulo 4
en el cuadro de introducción de texto que se Tabla 4.7.
encuentra debajo de "Crear nueva base de Estructura de la tabla directorio de la base
datos" y pulse el botón Crear. de datos pruebas.
Si desea utilizar la consola (para lo puede Nombre del campo Tipo de datos
presionar el enlace Ventana de consulta
del administrador) para crear la base de id Entero mediano,
datos, teclee en la misma: autoincremental
édit
~ewtJeIp
§:o
[I.
!!<Jokmarks
'l;]gJtj.
[Lists)
r- phpMyAdmin
~phpMyAdmi~";;ing
1
...J
n
,.- phpMyAdmin
looIs [CVSJ [Documentation] --~
,- Ollicial phpMyAdmin Homepage
Welcome to phpMyAdmin 2.3.0 Ivl @ Go
!1lI
documentationShow PHP ínformation
eI Language
on localhost ¡ English (en~o-8859·1)
- phpMyAdmi~ - ~fo¡
(: - I[Q.. L·:
}=:=-==_=::E
mentationl
atabas e r-
e [Documentation]
r· f'Show
variables
[Documentation]
Users
Reload [Documentation}
Databases [Documentation]
[ChangeLog]
MySQL
processes
MySOLstatistics
system MySQL
MySQL4.1.2-alpha-debug running on localhost as root@localhost
lntime I:L
Figura 4.1
Pantalla de bienvenida
al administrador de bases
de datos
MySQL 141
El administrador de la base de datos nos ofrece en el segundo, para posteriormente pulsar el
dos posibilidades para crear una nueva tabla. boton Continue.
La primera de ellas consiste en utilizar un
formulario escrito en HTML, paraTo cual hemos Veremos entonces en nuestro navegador una
de comenzar seleccionando en el menú de bases serie de campos desplegables y de introduc-
de datos que se encuentra a la izquierda de su ción de texto que deberemos rellenar de acuer-
administrador la base de datos en la que vamos do a la estructura que decidimos que había de
a crear la tabla, pruebas en nuestro caso. tener la tabla directorio y que podemos obser-
var en la tabla 4.7. Una vez completados los
Una vez seleccionada la base de datos prue- campos del formulario (como se puede ver en
bas accederá a una nueva pantalla en la que la figura 4.3) pulsamos el botón Grabar, con
podrá observar dos cuadros de introducción lo que se creará la tabla directorio en MySQL y
de texto debajo de "Crear nueva tabla en la veremos un mensaje que nos informa del éxito
base de datos pruebas", siendo el primero de de la operación.
ellos para el nombre de la nueva tabla y el
Esta forma de crear las distintas tablas de
segundo para el número de campos de que
constará ésta última, como puede ver en la nuestra base de datos es sencilla de utilizar,
figura 4.2. Tecleamos: pero tiene el inconveniente de que hemos de
crear las tablas una por una y además nos
directorio
obliga a rellenar tantos campos como le indi-
quemos al crear cada una de ellas, con lo que
en el primer cuadro de introducción de texto y:
si éstas son grandes o tenemos un elevado
6 número de tablas, su creación puede ser una
tarea bastante incómoda.
142 Capítulo 4
Database pruebas. table directorio running on localhost
auto increment
null
Figura 4.3.
Table comments :
Estructura
de la tabla
directorio.
Por ello MySQL ofrece la posibilidad de Como ejemplo práctico de lo que acabamos
importar datos externos, es decir, leer un de leer, vamos a seleccionar la base de datos
archivo con la información y estructura (e pruebas en el menú de la izquierda del admi-
incluso con los datos) de una o varias tablas, nistrador y posteriormente vamos a pulsar en
de forma que podemos teclear los comandos la pestaña que lleva el texto SQL en la parte
que necesitemos en un documento de exten- derecha, lo que nos lleva a una pantalla con
sión .sql generado con un editor de texto y un área de texto y un campo de texto de tipo
posteriormente importarlo desde MySQL Archivo junto a un botón Browse (Examinar)
para que se ejecuten dichos comandos Pulsaremos sobre éste para buscar y seleccio-
y se creen las tablas con sus respectivas es- nar el documento material! cap4/ sql!
tructuras. directorio_estructura.sql del CD como puede
verse en la figura 4.4.
L
I
~
De
Show lhis query here again
Localion 01lhe lexliile ,
lbireclorio_estructura.sql![ I?rowse ...
Figura 4.4.
Carga de
documentos .sql
Done externos.
MySQL 143
Este documento .sql contiene, como puede Inserción de información
ver en la figura 4.5, los comandos necesarios
Antes de insertar datos en la tabla vamos a
para crear la tabla directorio en la base de
datos pruebas. importar un archivo con datos de ejemplo, con
el fin de que, a la hora de realizar selecciones
~~~~-;~~-~::::~~:~:-~---- 3---- +---- 4- ---f--- -5----+-1 de registros en ejercicios posteriores, las infor-
id mediumint (8) un.:liqned NOT t.IDLL aueo_increment,
nombre varchaI (20) NOT NtJT--Ldefault 1"
maciones sean las mismas. Al igual que hici-
apellido varchar (20) NOT NULL default ",
email varchar(30)NOTNULLdefault ••• mos con anterioridad para crear una tabla
url varchar(30) NOT NULL default •"
nick varchar (20) NOT NULL default •• utilizando un documento .sql externo, selec-
UNlQUE i{Ey id (id),
KEYeroail (email, nick) 1 cionaremos la base de datos pruebas en el
TYPE~HyISAl1;
menú de la parte izquierda del administrador
Figura 4.5. y luego la tabla directorio del menú de tablas
dentro de la base de datos pruebas. A conti-
Contenidos del documento
nuación pulsamos sobre la pestaña de nombre
directorio _ estructura. sql.
SQL de la parte derecha. Utilizando el botón
Browse (Examinar) buscamos y selecciona-
Seleccionado el documento, presionamos el mos el documento material! cap4/ sql!
botón Continúe y veremos una pantalla que directorio_datos.sql del CD y luego pulsamos
nos informa del éxito de la creación de la tabla
el botón Continúe para que se realicen la
(figura 4.6). acciones que hemos tecleado en nuestro
documento .sql externo.
Este último método es muy útil, no sólo para
ganar tiempo a la hora de crear varias tablas, Una vez almacenada en la tabla directorio la
sino también para exportar la estructura de información del archivo importado, procede-
las bases de datos cuando se instalan módu- remos a insertar información.
los pre-programados.
Done
H de
~811Creación
la tablaexitosa
directorio.
144 Capítulo 4
Para ello podemos pulsar sobre el vínculo
Tabla 4.8.
que reza Insertar, lo cual nos permitirá intro-
ducir registros nuevos a la tabla de uno en Datos del nuevo registro.
uno, con lo que esto puede conllevar una Tmeister
Chávez
Contenido
Campo noone@tmeister.net
Enrique
http://www. tmeister.net
cierta pérdida de tiempo. Para evitar este
problema, vamos a introducir la información
email
url
nick
apellido
nombre
mediante sentencias SQL. Con la tabla directo-
rio seleccionada en la parte izquierda del
administrador, pulse sobre la pestaña SQL de
la parte derecha, en la que puede ver un área
de texto en el que vamos a introducir nues-
tros comandos.
MySQL 145
~.d;=;¡Q f~n;;-i~g on iocalhost, phpMyAdmin 1.3.0 ' Mozilla Firefox
Go ªookmarks Iools t!.elp
~ IO http://iocalhostfphpMyAdmínf,,dex,php El © Go [IQ~
~ ~ 1--sQLl ~ ~ IExPortlloperatiJ
Ed1t Oelete
htt¡>:lIxf1ash:~~~c?m,' jesús
Figura 4.8 .
i,;;j/~:rolhigliactrri""]~~'
•.••• _-."'-.-~ ""--,-,-. --"-",,,::!,•••
_~ . ~~
Edif" Delete 7"" Carlos http://www.kadazuro.com kadazuro Selección de todos los
~:xJ~_ ..._.- .... '
1~ ,- JUl.
~~¡;~G1I~¡;;-:r1~riqu-'-e-UC¡;áve~noon~tmeiSternet ~;p:;;:::;~;iªtéL;et" Urmeist~r. registros.
146 Capítulo 4
En cambio, si deseamos seleccionar sólo SELECT nombre_columna 1,
nombre_columna_2,
algunos campos de la tabla, habremos de nombre columna_N FROM [nombre_tabla]
separar los nombres de las columnas por aRDER BY [nombre columna] [modo de
ordenamiento] ;
comas, como se indica a continuación:
Kali Zumbado
Rodolfo
Flores
Chávei
de
Delete
Ruizla Cruz.
nick url
nombre kali
kadazuro
femando
Tmeister
rolf net
hltp:l!www.tmeister.
Romiglia
htlp:l/www.kadazuro.com
htlp:l/www.alesys.net
apellido
hltp:l!www. sangles.com.
http://www.romiglia.com
htlp:llxflash.8k.com
Anglés granatla
htlp:l/www.onelx.com
hltp:llwww.granatla.com
Vejarano jesús
Podemos además ordenar los resultados en
~ s';;'.gles
forma ascendiente "ASC" o descendente
"DESC", en base a una columna o varias; para
esto agregamos ORDER BY [columna] [modo de
ordenamiento] a la consulta. Por ejemplo, para
seleccionar registros en base al campo nombre
en forma descendente teclearíamos:
MySQL 147
SELECT * FROM directorio WHERE nombre
Puede practicar las selecciones ordenando
LIKE '%e%';
por distintas columnas. Para ordenar por más
de una columna puede adjuntar el nombre Observe los registros de la tabla directorio y
del campo y el orden, seguido cada uno de practique realizando distintos tipos de con-
ellos por la instrucción ORDER BY,por ejem- sultas de selección como las anteriores.
plo:
Si deseamos seleccionar todas las columnas Obsérvese cómo se siguen mostrando dos
de la tabla directorio donde nombre comienza registros tras la búsqueda, pero al variar el
con la letra R, teclearíamos lo siguiente: valor de inicio el lugar a partir del cual se
empiezan a mostrar registros también varía.
SELECT * FROM directorio WHERE nombre
LIKE 1 E% 1 i Este tipo de consultas (utilizando límites) es
muy útil cuando deseamos realizar paginacio-
Si deseamos seleccionar todas las columnas nes de resultados.
de la tabla directorio donde nombre contenga
la letra e, teclearíamos lo siguiente:
148 Capítulo 4
Nota: Recuerde que puede pensar en un array como en uno de esos grandes ficheros
con cajones, dentro de cada uno de los cuales hay información guardada sobre un tema
concreto. Los arrays son estructuras que sirven para almacenar más de un valor al mis-
mo tiempo, en distintas celdas, y disponen de un índice, un número identificador que
se usa para acceder a cada uno de los datos almacenados. Este índice es un número
que va desde O hasta número_valores_del_array-1 i así si un array guarda seis valores, el
índice de dicho array va desde O hasta 5. Por ello, los dos primeros elementos de un
array están almacenados en las posiciones Oy 1, de forma que cuando queremos esco-
ger los dos primeros registros de la consulta comenzamos por el número O.
comparación] [valor] ;
url
Inserte el siguiente registro en la tabla directo- id nombre apellido email
MySQL 149
UPDATE directorio SET
datos almacenados de los demás registros); el
ape1lido='Perez',url='http://www.
apellido de Juan carece de tilde, y su url no juanperez. com' ;
contiene la cadena http://www. que sí tienen el
resto de registros, por lo que hemos de modifi- y como resultado de esta acción todos los
car los datos que hemos almacenado previa- registros almacenarían en su campo apellido
mente (concretamente los campos apellido y el valor Pérez y en su campo url el valor
ud) utilizando el campo id como identificador http://www.juanperez.com .
único. Para ello teclearemos:
~-------------------------------------------
150 Capítulo 4
eliminada exacta, o la pérdida de informa- Más información
ción mínima; esto en caso de querer borrar un
sobre MySQL
único archivo; si se quieren eliminar varios
archivos y se desconoce la cantidad de estos,
Para más información sobre MySQL puede
se puede omitir esta parte, ya que hay que
tener en cuenta que al eliminar registros los acudir a http://www.mysql.com. el sitio oficial
datos no son recuperables y, por tanto, vale la de este software, para encontrar noticias,
pena revisar dos veces la consulta. documentación y descargar las nuevas versio-
nes del mismo.
gotoAndPlay("capitulo 5");
MySQL 151