Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
www.fullengineeringbook.net
Interrelacin ......................................................................................................... 35
Ejemplo de un modelo Relacional................................................................................ 36
Preguntas de Repaso................................................................................................. 37
www.fullengineeringbook.net
Eliminar una base de datos ........................................................................................ 65
Preguntas de Repaso................................................................................................. 66
www.fullengineeringbook.net
Capitulo 8: Consultas MultiTabla ..................................................... 115
Producto cartesiano .................................................................................................115
Composicin (Join) ..................................................................................................117
Composiciones internas .........................................................................................117
Composicin interna natural ...................................................................................119
Composiciones externas ........................................................................................121
Composicin externa izquierda.............................................................................122
Composicin externa derecha ..............................................................................123
Composiciones naturales externas........................................................................125
Uniones ..................................................................................................................126
Preguntas de Repaso................................................................................................129
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 1
Introduccin a MySQL
Objetivos
Al finalizar este capitulo, el participante aprender a:
Definir brevemente que es MySQL.
Conocer las caractersticas principales de MySQL.
Conocer la historia de MySQL
Instalar el servidor MySQL.
Configurar el servidor MySQL.
www.fullengineeringbook.net
MySQL
Manual del Participante
Historia de MySQL
El lenguaje SQL para acceder a bases de datos relacionales, fue lanzado al mercado por
IBM al mercado all por 1981, despus de varios aos de desarrollo y en 1983 empez a
vender DB2, un sistema de gestin de bases de datos que se hizo muy popular.
Posteriormente, el Instituto de Estndares Nacional Americano(ANSI) adopt el SQL
como estndar para el acceso a bases de datos relacionales, y al a siguiente, se
convirti en estndar ISO.
El Origen del nombre MySQL no esta perfectamente claro. Algunos lo atribuyen al hecho
de que un gran numero de nuestras librerias y herramientas le asignamos el prefijo My
por costumbre. Sin embargo la hija de Monty es ademas llamada My. Asi que cual de las
dos razones da el nombre a MySQL es aun un misterio.
www.fullengineeringbook.net
MySQL
Manual del Participante
Una vez seleccionada la versin, hay que elegir la distribucin adecuada al sistema
operativo que usemos: Windows, Linux, Solaris, etc. El archivo descargado se podr
instalar directamente.
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
El nico componente que quedara sin instalar en este caso sera los componentes de
desarrollo (Developer Components) que nos proporciona ejemplos de sentencias para
utilizar en MySQL, as que si usted considera que los va a necesitar debe seleccionarlo
para instalarlo.
La pantalla anterior simplemente muestra el lugar fsico donde se instalar y la opcin que
nosotros elegimos para instalar MySQL Server.
www.fullengineeringbook.net
MySQL
Manual del Participante
En la instalacin, MySQL nos pide que nos registremos, esta es una forma de tener un
registro de las personas que usan su software y para nosotros una manera de estar al
tanto de las ltimas novedades del mismo.
En nuestro caso, vamos a elegir SALTAR la registracin por que ya lo hemos hecho con
anterioridad. Hacemos clic en el botn NEXT para continuar y aparecer la siguiente
pantalla.
En esta ventana, MySQL Server nos pide confirmacin sobre si queremos continuar con
la configuracin del MySQL, accin que le corresponderemos con un SI para poder dejar
6
www.fullengineeringbook.net
MySQL
Manual del Participante
Configurar el Servidor
La primera pantalla es para saber que tipo de configuracin llevaremos adelante (ver
figura siguiente).
Los tipos de configracin que se aprecian, en esta ventana, son las siguientes.
www.fullengineeringbook.net
MySQL
Manual del Participante
En esta ventana, las opciones que se muestran son muy importantes, ya que de lo que
aqu elijamos depender la utilizacin de recursos y comportamiento de nuestro servidor.
Server Machine: Una PC servidor que como dice su nombre dar servicio de Base
de Datos a una RED, consume un poco ms de recursos que la opcin anterior
pero nos da una buena performance a la hora de altos pedidos de datos.
www.fullengineeringbook.net
MySQL
Manual del Participante
Multifunctional Database: Aqu poseemos una Base multifuncional que nos dar
alta velocidad de almacenamiento en MyISAM y alta transacciones en InnoDB,
pero perdemos un poco de seguridad de datos.
www.fullengineeringbook.net
MySQL
Manual del Participante
En la ventana de la figura anterio solo veremos donde se instalan las bases de datos que
crearemos para nuestro uso particular. Podemos usar una unidad de disco que no sea
aquella en la que estamos instalando el Servidor(por seguridad), pero no se frecuenta
hacerlo.
MySQL permite tener un servidor con muchisimas conexiones a la vez, por eso
necesitamos preparar al servidor para recibirlas, como no queremos hacerlo trabajar de
ms entonces elegimos la mejor opcin para nuestro MySQL Server.
10
www.fullengineeringbook.net
MySQL
Manual del Participante
Decision Support: Un servidor normal de pocas conexiones (20 son asumidas por
defecto) que nos sirve si tenemos un servidor WEB pequeo o es un Server
Developer.
Elijan la opcin que mejor se les acomode a sus necesidades. En nuestro caso
seleccionaremos la primera y luego haremos click en el botn NEXT para continuar y
configurar los puertos TCP/IP (ver figura siguiente).
www.fullengineeringbook.net
MySQL
Manual del Participante
Como todas las aplicaciones que se pueden acceder a travs de la RED o desde
INTERNET deben tener un puerto de escucha y envo de datos, MySQL usa el puerto
3306 como puerto por defecto, claro que se puede cambiar, pero mejor dejarlo como est
para no tener problemas con aplicaciones que no se pueden setear.
En caso de programacin en .NET o aplicaciones WEB no hay problemas, por que ambos
se pueden mover a este puerto TCP/IP.
Por lo general, MySQL proporciona un nombre para el servicio que instalaremos, por lo
general solo se llamar MySQL, pero podemos abrir el cuadro combinado y elegir entre
otros nombres que nos sugiere.
12
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
Asegurmonos que Enable root access from remote machines est activado ya que
esta opcin nos permite acceder como ROOT desde maquinas remotas a donde est
instalado el servidor.
A continuacin debemos hacer click en el botn NEXT para continuar y tener acceso a la
ventana final de la configuracin (Ver figura siguiente)
La ventana de la figura anterior, nos indica que hemos llegado al final de la configuracin,
por lo que haremos clic en EXECUTE y si todo ha sido correcto quedarn todas las
opciones marcadas como correctas.
14
www.fullengineeringbook.net
MySQL
Manual del Participante
Nota
Un problema que encontr con todo esto, es que si lo quieres desinstalar y luego lo reinstalas,
debes borrar la carpeta MySQL Server por completo, por que las sentencias no las cambia y el
servidor ya no funcionar.
Importante
Opcionalmente, para el aprendizaje de PHP y MySQL se puede instalar el paquete del
APPSERV, que es una instalacin conjunta de APACHE, MySQL y PHP y muy facil de
instalar y usar. Este paquete es el que hemos utilizado para el presente curso.
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
16
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 2
Las Bases de Datos
Objetivos
Al finalizar este capitulo, el participante aprender :
Concepto bsicos relacionados con las Base de Datos
Conceptos relacionados con el diseo de Base de Datos
Conceptos relacionados al Modelo Entidad-Relacion
Cmo se representan las entidades y relaciones
Reconocer los diferentes componentes de un esquema Entidad-Relacion
Conceptos bsicos relacionados con el modelo relacional.
Conceptos Bsicos
En el presente captulo nos vamos a centrar en repasar, brevemente, conceptos
relacionados a las bases de datos los cuales sern tiles a la hora de trabajar con los
objetos de MySQL.
Dato
Un dato es una informacin que refleja el valor de una caracterstica de un objeto
real, sea concreto o abstracto, o imaginario.
Base de datos
Podemos considerar que es un conjunto de datos de varios tipos, organizados e
interrelacionados. Estos datos deben estar libres de redundancias innecesarias y
ser independientes de los programas que los usan.
www.fullengineeringbook.net
MySQL
Manual del Participante
SGBD (DBMS)
Son las siglas de Sistema de Gestin de Bases de Datos, en ingls DBMS,
DataBase Manager System. En este caso, MySQL es un SGBD, o mejor dicho:
nuestro SGBD.
Consulta
Es una peticin al SGBD para que procese un determinado comando SQL. Esto
incluye tanto peticiones de datos como creacin de bases de datos, tablas,
modificaciones, inserciones, etc.
Redundancia de datos
Se dice que hay redundancia de datos cuando la misma informacin es
almacenada varias veces en la misma base de datos. Esto es siempre algo a
evitar, la redundancia dificulta la tarea de modificacin de datos, y es el motivo ms
frecuente de inconsistencia de datos. Adems requiere un mayor espacio de
almacenamiento, que influye en mayor costo y mayor tiempo de acceso a los datos.
Inconsistencia de datos
Slo se produce cuando existe redundancia de datos. La inconsistencia consiste en
que no todas las copias redundantes contienen la misma informacin. As, si
existen diferentes modos de obtener la misma informacin, y esas formas pueden
conducir a datos almacenados en distintos sitios. El problema surge al modificar
esa informacin, si slo cambiamos esos valores en algunos de los lugares en que
se guardan, las consultas que hagamos ms tarde podrn dar como resultado
respuestas inconsistentes (es decir, diferentes). Puede darse el caso de que dos
aplicaciones diferentes proporcionen resultados distintos para el mismo dato.
Integridad de datos
Cuando se trabaja con bases de datos, generalmente los datos se reparten entre
varios archivos. Si, como pasa con MySQL, la base de datos est disponible para
varios usuarios de forma simultnea, deben existir mecanismos que aseguren que
las interrelaciones entre registros se mantengan coherentes, que se respetan las
dependencias de existencia y que las claves nicas no se repitan.
18
www.fullengineeringbook.net
MySQL
Manual del Participante
Por ejemplo, un usuario no debe poder borrar una entidad de una base de datos, si
otro usuario est usando los datos de esa entidad. Este tipo de situaciones son
potencialmente peligrosas, ya que provocan situaciones con frecuencia
imprevistas. Ciertos errores de integridad pueden provocar que una base de datos
deje de ser confiable.
Adems, seguir todo el proceso nos facilitar una documentacin necesaria para
revisar o mantener la aplicacin, ya sea por nosotros mismos o por otros
administradores o programadores.
La primera fase del diseo de una aplicacin (la base de datos, generalmente, es
www.fullengineeringbook.net
MySQL
Manual del Participante
parte de una aplicacin), consiste en hablar con el cliente para saber qu quiere, y
qu necesita realmente.
Esto es una tarea ardua y difcil. Generalmente, los clientes no saben demasiado
sobre programacin y sobre bases de datos, de modo que normalmente, no saben
qu pueden pedir. De hecho, lo ms habitual es que ni siquiera sepan qu es lo
que necesitan.
Los modelos conceptuales ayudan en esta fase del proyecto, ya que facilitan una
forma clara de ver el proceso en su totalidad, puesto que se trata de una
representacin grfica. Adems, los modelos conceptuales no estn orientados a
ningn sistema fsico concreto: tipo de computador, sistema operativo, SGBD, etc.
Ni siquiera tienen una orientacin informtica clara, podran servir igualmente para
explicar a un operario cmo funciona el proceso de forma manual. Esto facilita que
sean comprensibles para personas sin conocimientos de programacin.
Cuando los programas se crean sin un cliente concreto, ya sea porque se pretende
crear un producto para uso masivo o porque slo lo vamos a usar nosotros, el
papel del cliente lo jugaremos nosotros mismos, pero la experiencia nos ensear
que esto no siempre es una ventaja. Es algo parecido a los que pasa con los
abogados o los mdicos. Se suele decir que "el abogado que se defiende a si
mismo tiene un necio por cliente". En el caso de los programadores esto no es tan
exagerado; pero lo cierto es que, demasiadas veces, los programadores somos
nuestros peores clientes.
Toda esta informacin recogida del cliente debe formar parte de la documentacin.
Nuestra experiencia como programadores debe servir, adems, para ayudar y guiar
al cliente. De este modo podemos hacerle ver posibles "cuellos de botella",
excepciones, mejoras en el proceso, etc. As mismo, hay que explicar al cliente qu
20
www.fullengineeringbook.net
MySQL
Manual del Participante
Una vez recogidos los datos, el siguiente paso es crear un modelo conceptual. El
modelo ms usado en bases de datos es el modelo Entidad-Relacin.
En el caso del modelo lgico relacional, existe un proceso que sirve para verificar
que hemos aplicado bien el modelo, y en caso contrario, corregirlo para que sea
as. Este proceso se llama normalizacin, y tambin es bastante mecnico.
Modelo Entidad-Relacin
En esencia, el modelo entidad-relacin (E-R), consiste en buscar las entidades que
describan los objetos que intervienen en el problema y las relaciones entre esas
entidades.
Todo esto se plasma en un esquema grfico que tiene por objeto, por una parte, ayudar al
programador durante la codificacin y por otra, al usuario a comprender el problema y el
funcionamiento del programa
www.fullengineeringbook.net
MySQL
Manual del Participante
definiciones nos sern tiles tanto para explicar la teora, como para entendernos entre
nosotros y para comprender otros textos sobre el modelado de bases de datos.
Entidad
Es una representacin de un objeto individual concreto del mundo real. Si
hablamos de personas, tu y yo somos entidades, como individuos. Si hablamos de
vehculos, se tratar de ejemplares concretos de vehculos, identificables por su
matrcula, el nmero de chasis o el de bastidor.
Conjunto de entidades
Es la clase o tipo al que pertenecen entidades con caractersticas comunes.
Atributo
Cada una de las caractersticas que posee una entidad, y que agrupadas
permiten distingirla de otras entidades del mismo conjunto.
www.fullengineeringbook.net
MySQL
Manual del Participante
Dominio
Conjunto de valores posibles para un atributo.
Relacin
Otro concepto que no podemos dejar de definir es el de relacin. Aunque en
realidad, salvo para nombrar el modelo, usaremos el trmino interrelacin, ya que
relacin tiene un significado radicalmente diferente dentro del modelo relacional, y
esto nos puede llevar a error.
Interrelacin
es la asociaciacin o conexin entre conjuntos de entidades.
Programa Nacional de Informtica 23
www.fullengineeringbook.net
MySQL
Manual del Participante
Grado
Nmero de conjuntos de entidades que intervienen en una interrelacin.
Clave
Estaremos de acuerdo en que es muy importante poder identificar claramente cada
entidad y cada interrelacin. Esto es necesario para poder referirnos a cada
elemento de un conjunto de entidades o interrelaciones, ya sea para consultarlo,
modificarlo o borrarlo. No deben existir ambigedades en ese sentido.
En principio, cada entidad se puede distinguir de otra por sus atributos. Aunque un
subconjunto de atributos puedan ser iguales en entidades distintas, el conjunto
completo de todos los atributos no se puede repetir nunca. Pero a menudo son slo
ciertos subconjuntos de atributos los que son diferentes para todas las entidades.
24
www.fullengineeringbook.net
MySQL
Manual del Participante
Clave
es un conjunto de atributos que identifican de forma unvoca una entidad.
Claves candidatas
Una caracterstica que debemos buscar siempre en las claves es que contengan el
nmero mnimo de atributos, siempre que mantengan su funcin. Diremos que una
clave es mnima cuando si se elimina cualquiera de los atributos que la componen,
deja de ser clave. Si en una entidad existe ms de una de estas claves mnimas,
cada una de ellas es una clave candidata.
www.fullengineeringbook.net
MySQL
Manual del Participante
Clave principal
Si disponemos de varias claves candidatas no usaremos cualquiera de ellas segn
la ocasin. Esto sera fuente de errores, de modo que siempre usaremos la misma
clave candidata para identificar la entidad.
Claves de interrelaciones
Para identificar interrelaciones el proceso es similar, aunque ms simple.
Tengamos en cuenta que para definir una interrelacin usaremos las claves
primarias de las entidades interrelacionadas. De este modo, el identificador de una
interrelacin es el conjunto de las claves primarias de cada una de las entidades
interrelacionadas.
Por ejemplo, si tenemos dos personas identificadas con dos valores de su clave
primaria, clave1 y clave2, y queremos establecer una interrelacin "es padre de"
entre ellas, usaremos esas dos claves. El identificador de la interrelacin ser
clave1,clave2.
Dependencia de existencia
Se dice que existe una dependencia de existencia entre una entidad, subordinada,
y otra, dominante, cuando la eliminacin de la entidad dominante, conlleva tambin
la eliminacin de la entidad o entidades subordinadas.
26
www.fullengineeringbook.net
MySQL
Manual del Participante
Desde cierto punto de vista, podemos considerar que las entidades dominantes y
sus entidades subordinadas forman parte de una misma entidad. Es decir, una
entidad est formada por ella misma y sus circunstancias. Esas circunstancias
podran ser, en el caso de nuestro vehculo, adems de los viajes que ha hecho,
los dueos que ha tenido, las revisiones que se le han efectuado, averas, etc. Es
decir, todo su historial.
Generalizacin
Es el proceso segn el cual se crea un conjunto de entidades a partir de otros que
comparten ciertos atributos.
A veces existen situaciones en que sea conveniente crear una entidad como una
fusin de otras, en principio, diferentes, aunque con atributos comunes. Esto
disminuye el nmero de conjuntos de entidades y facilita el establecimiento de
interrelaciones.
La idea es crear una entidad con una nica copia de los atributos comunes y aadir
los atributos no comunes. Adems se debe aadir un atributo que indique que tipo
de entidad estamos usando, este atributo es un discriminador.
Especializacin
Es el proceso inverso al de generalizacin, en lugar de crear una entidad a partir de
varias, descomponemos una entidad en varias ms especializadas.
www.fullengineeringbook.net
MySQL
Manual del Participante
Por ejemplo, para gestionar la flota de vehculos de una empresa usamos un nico
conjunto de entidades, de modo que tratamos del mismo modo motocicletas,
utilitarios, limusinas, furgonetas y camiones. Pero, desde el punto de vista de
mantenimiento, se pueden considerar entidades diferentes: cada una de ellas tiene
revisiones distintas y en talleres diferentes. Es decir, las diferencias superan a los
atributos comunes. Este conjunto de entidades es un buen candidato a la
especializacin.
Entidad
Las entidades se representan con un rectngulo, y en su interior el nombre
de la entidad. Ver la siguiente figura.
28
www.fullengineeringbook.net
MySQL
Manual del Participante
Atributo
Los atributos se representan mediante elipses, y en su interior el nombre del
atributo:
Algunas variantes de diagramas E-R usan algunas marcas para indicar que
cierto atributo es una clave primaria, como subrayar el nombre del atributo.
Atributo multivaluado (o multivalorado) se dice del atributo tal que para una
misma entidad puede tomar varios valores diferentes, es decir, varios
valores del mismo dominio.
Interrelacin
Las interrelaciones se representan mediante rombos, y en su interior el
nombre de la interrelacin:
En los extremos de las lneas que parten del rombo se aaden unos
nmeros que indican la cantidad de entidades que intervienten en la
interrelacin: 1, n. Esto tambin se suele hacer modificando el extremo de
las lneas. Si terminan con un extremo involucran a una entidad, si terminan
en varios extremos, (generalmente tres), involucrarn a varias entidades:
www.fullengineeringbook.net
MySQL
Manual del Participante
Sobre las lneas a veces se aade el rol que representa cada entidad:
Dominio
A veces es conveniente aadir informacin sobre el dominio de un atributo,
los dominios se representan mediante hexgonos, con la descripcin del
dominio en su interior:
Diagrama
Un diagrama E-R consiste en representar mediante estas figuras un modelo
completo del problema, proceso o realidad a describir, de forma que se
definan tanto las entidades que lo componen, como las interrelaciones que
existen entre ellas.
30
www.fullengineeringbook.net
MySQL
Manual del Participante
Modelo Relacional
El presente curso no tiene como tema principal el ensear a modelar ni realizar las
tranformaciones del modelo E-R al relacional ya que eso se toca en un curso diferente y
requiere de mayores explicaciones. Sin embargo vamos a explicar los conceptos
relacionados al modelo relacional por que MySQL est orientado principalmente a bases
de datos relacionales.
Al Igual que hicimos con el modelo E-R, veremos algunos conceptos bsicos del modelo
relacional. Algunos de los conceptos son comunes entre los dos modelos, como atributo
o dominio. Pero de todos modos, los definiremos nuevamente.
Relacin
Es el concepto bsico del modelo relacional. Los conceptos de relacin entre el
modelo E-R y el relacional son diferentes. Por lo tanto, usamos el trmino
interrelacin para referirnos a la conexin entre entidades. En el modelo relacional
este trmino se refiere a una tabla, y es el paralelo al concepto conjunto de
entidades del modelo E-R.
www.fullengineeringbook.net
MySQL
Manual del Participante
Tupla
A menudo se le llama tambin registro o fila, fsicamente es cada una de las lneas
de la relacin. Equivale al concepto de entidad del modelo E-R, y define un objeto
real, ya sea abstracto, concretos o imaginario.
La Tupla es cada una de las filas de una relacin. Contiene la informacin relativa a
una nica entidad.
De esta definicin se deduce que no pueden existir dos tuplas iguales en la misma
relacin.
Atributo
Tambin denominado campo o columna, corresponde con las divisiones verticales
de la relacin. Corresponde al concepto de atributo del modelo ER y contiene cada
una de las caractersticas que definen una entidad u objeto.
Un Atributo es cada una de las caractersticas que posee una entidad, y que
agrupadas permiten distingirla de otras entidades del mismo conjunto.
Nulo (NULL)
Hay ciertos atributos, para determinadas entidades, que carecen de valor. El
modelo relacional distingue entre valores vacos y valores nulos. Un valor vaco se
considera un valor tanto como cualquiera no vaco, sin embargo, un nulo NULL
indica la ausencia de valor.
El nulo es muy importante en el modelo relacional, ya que nos permite trabajar con
datos desconocidos o ausentes.
32
www.fullengineeringbook.net
MySQL
Manual del Participante
Dominio
Un Dominio es el rango o conjunto de posibles valores de un atributo.
Modelo relacional
Ahora ya disponemos de los conceptos bsicos para definir en qu consiste el
modelo relacional. Es un modelo basado en relaciones, en la que cada una de ellas
www.fullengineeringbook.net
MySQL
Manual del Participante
Cardinalidad
La Cardinalidad es el nmero de tuplas que contiene una relacin.
Grado
El Grado es el nmero de atributos de cada tupla.
Esquema
El Esquema es la parte constante de una relacin, es decir, su estructura.
Esto es, el esquema es una lista de los atributos que definen una relacin y sus
dominios.
Instancia
La Instancia es el conjunto de las tuplas que contiene una relacin en un momento
determinado.
34
www.fullengineeringbook.net
MySQL
Manual del Participante
Clave
La Clave es un conjunto de atributos que identifica de forma unvoca a una tupla.
Puede estar compuesto por un nico atributo o una combinacin de varios.
Dentro del modelo relacional no existe el concepto de clave mltiple. Cada clave
slo puede hacer referencia a una tupla de una tabla. Por lo tanto, todas las claves
de una relacin son nicas.
Alternativa: cada una de las claves candidatas que no son clave primaria, si
es que existen.
Interrelacin
Decimos que dos relaciones estn interrelacionadas cuando una posee una clave
fornea de la otra. Cada una de las claves forneas de una relacin establece una
interrelacin con la relacin donde esa clave es la principal.
www.fullengineeringbook.net
MySQL
Manual del Participante
Uno a uno: a cada tupla de una relacin le corresponde una y slo una tupla
de otra.
Uno a varios: a cada tupla una relacin le corresponden varias en otra.
Varios a varios: cuando varias tuplas de una relacin se pueden
corresponder con varias tuplas en otra.
36
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
www.fullengineeringbook.net
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 3
Tipos de datos
Objetivos
Al finalizar este capitulo, el participante aprender a reconocer y usar :
Datos del tipo cadena o string
Datos enteros
Datos de coma flotante
Datos de Fecha/Hora
Datos para grandes bloques de texto.
Datos enumerados y conjuntos.
En MySQL existen diferentes tipos de datos, que para estudiarlos seria mejor agruparlos
por categoras: de caracteres, enteros, de coma flotante, tiempos, bloques, enumerados y
conjuntos.
CHAR
Es un sinnimo de CHAR(1), y puede contener un nico carcter
CHAR()
[NATIONAL] CHAR(M) [BINARY | ASCII | UNICODE]
Contiene una cadena de longitud constante. Para mantener la longitud de la
cadena, se rellena a la derecha con espacios. Estos espacios se eliminan al
recuperar el valor.
Los valores vlidos para M son de 0 a 255, y de 1 a 255 para versiones de MySQL
previas a 3.23.
www.fullengineeringbook.net
MySQL
Manual del Participante
VARCHAR()
[NATIONAL] VARCHAR(M) [BINARY]
Contiene una cadena de longitud variable. Los valores vlidos para M son de 0 a
255, y de 1 a 255 en versiones de MySQL anteriores a 4.0.2.
TINYINT
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Contiene un valor entero muy pequeo. El rango con signo es entre -128 y 127. El
rango sin singo, de 0 a 255.
MEDIUMINT
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Contiene un entero de tamao medio, el rango con signo est entre -8388608 y
8388607. El rango sin signo, entre 0 y 16777215.
INT
INT[(M)] [UNSIGNED] [ZEROFILL]
40
www.fullengineeringbook.net
MySQL
Manual del Participante
Contiene un entero de tamao normal. El rango con signo est entre -2147483648
y 2147483647. El rango sin singo, entre 0 y 4294967295.
INTEGER
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Es sinnimo de INT.
BIGINT
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Contiene un entero grande. El rango con signo es de -9223372036854775808 a
9223372036854775807. El rango sin signo, de 0 a 18446744073709551615.
FLOAT
FLOAT(precision) [UNSIGNED] [ZEROFILL]
Contiene un nmero en coma flotante. precision puede ser menor o igual que 24
para nmeros de precisin sencilla y entre 25 y 53 para nmeros en coma flotante
de doble precisin. Estos tipos son idnticos que los tipos FLOAT y DOUBLE
descritos a continuacin. FLOAT(X) tiene el mismo rango que los tipos FLOAT y
DOUBLE correspondientes, pero el tamao mostrado y el nmero de decimales
quedan indefinidos.
FLOAT()
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
Contiene un nmero en coma flotante pequeo (de precisin sencilla). Los valores
permitidos son entre -3.402823466E+38 y -1.175494351E-38, 0, y entre
1.175494351E-38 y 3.402823466E+38. Si se especifica el modificador UNSIGNED,
los valores negativos no se permiten.
www.fullengineeringbook.net
MySQL
Manual del Participante
DOUBLE
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
DECIMAL
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
Contiene un nmero en coma flotante sin empaquetar. Se comporta igual que una
columna CHAR: "sin empaquetar" significa que se almacena como una cadena,
usando un carcter para cada dgito del valor. El punto decimal y el signo '-' para
valores negativos, no se cuentan en M (pero el espacio para estos se reserva). Si D
es 0, los valores no tendrn punto decimal ni decimales.
El rango de los valores DECIMAL es el mismo que para DOUBLE, pero el rango
actual para una columna DECIMAL dada est restringido por la eleccin de los
valores M y D.
www.fullengineeringbook.net
MySQL
Manual del Participante
DATE
Contiene una fecha. El rango soportado est entre '1000-01-01' y '9999-12-31'.
MySQL muestra los valores DATE con el formato 'AAAA-MM-DD', pero es posible
asignar valores a columnas de este tipo usando tanto nmeros como cadenas.
DATETIME
Contiene una combinacin de fecha y hora. El rango soportado est entre '1000-
01-01 00:00:00' y '9999-12-31 23:59:59'. MySQL muestra los valores DATETIME
con el formato 'AAAA-MM-DD HH:MM:SS', pero es posible asignar valores a
columnas de este tipo usando tanto cadenas como nmeros.
TIMESTAMP
TIMESTAMP[(M)]
Contiene un valor del tipo timestamp. El rango est entre '1970-01-01 00:00:00' y
algn momento del ao 2037.
Desde MySQL 4.1, TIMESTAMP se devuelve como una cadena con el formato
'AAAA-MM-DD HH:MM:SS'. Para convertir este valor a un nmero, bastar con
sumar el valor 0. Ya no se soportan distintas longitudes para estas columnas.
www.fullengineeringbook.net
MySQL
Manual del Participante
TIME
Una hora. El rango est entre '-838:59:59' y '838:59:59'. MySQL muestra los
valores TIME en el formato 'HH:MM:SS', pero permite asignar valores a columnas
TIME usando tanto cadenas como nmeros.
YEAR
YEAR[(2|4)]
MySQL muestra los valores YEAR usando el formato AAAA, pero permite asignar
valores a una columna YEAR usando tanto cadenas como nmeros.
TINYBLOB, TINYTEXT
Contiene una columna BLOB o TEXT con una longitud mxima de 255 caracteres
(28 - 1).
BLOB, TEXT
Contiene una columna BLOB o TEXT con una longitud mxima de 65535
caracteres (216 - 1).
44
www.fullengineeringbook.net
MySQL
Manual del Participante
MEDIUMBLOB, MEDIUMTEXT
Contiene una columna BLOB o TEXT con una longitud mxima de 16777215
caracteres (224 - 1).
LONGBLOB, LONGTEXT
Contiene una columna BLOB o TEXT con una longitud mxima de 4294967298
caracteres (232 - 1).
ENUM
ENUM('valor1','valor2',...)
Contiene un enumerado. Un objeto de tipo cadena que puede tener un nico valor,
entre una lista de valores 'valor1', 'valor2', ..., NULL o el valor especial de error "".
Un ENUM puede tener un mximo de 65535 valores diferentes.
SET
Contiene un conjunto. Un objeto de tipo cadena que puede tener cero o ms
valores, cada uno de los cuales debe estar entre una lista de valores 'valor1',
'valor2', ...
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
46
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 4
El cliente MySQL
Objetivos
Al finalizar este capitulo, el participante aprender a:
Usar la consola o Smbolo del Sistema para trabajar con MySQL
Conectarse y desconectarse del Servidor MySQL
Hacer consultas a la base de datos.
Reconocer cuales son las instrucciones DDL y DML.
Crear y usar base de datos.
Crear, usar y eliminar tablas.
El Cliente MySQL
Existen muchas formas de establecer una comunicacin con el servidor de MySQL. En
nuestros programas, generalmente, usaremos un API para realizar las consultas con el
servidor. En PHP, por ejemplo, este API est integrado con el lenguaje, en C/C++ se trata
de libreras de enlace dinmico, etc.
Veamos un ejemplo sencillo. Para ello abrimos una consola y tecleamos "mysql". (Si
estamos en Windows y no est definido el camino para MySQL tendremos que hacerlo
desde "C:\mysql\bin").
Para entrar en la consola de MySQL se requieren ciertos parmetros. Hay que tener en
cuenta que el servidor es multiusuario, y que cada usuario puede tener distintos
privilegios, tanto de acceso a tablas como de comandos que puede utilizar.
www.fullengineeringbook.net
MySQL
Manual del Participante
48
www.fullengineeringbook.net
MySQL
Manual del Participante
Para salir de una sesin del cliente de MySQL se usa el comando "QUIT".
Usuarios y privilegios
Cuando trabajemos con bases de datos reales y con aplicaciones de gestin de
bases de datos, ser muy importante definir otros usuarios, adems del root, que
es el administrador. Esto nos permitir asignar distintos privilegios a cada usuario, y
nos ayudar a proteger las bases de datos.
Podremos por ejemplo, crear un usuario que slo tenga posibilidad de consultar
datos de determinadas tablas o bases de datos, pero que no tenga permiso para
aadir o modificar datos, o modificar la estructura de la base de datos.
Programa Nacional de Informtica 49
www.fullengineeringbook.net
MySQL
Manual del Participante
Otros usuarios podrn insertar datos, y slo algunos (o mejor, slo uno) podrn
modificar la estructura de las bases de datos: los administradores.
SQL engloba ambos lenguajes DDL+DML, y los estudiaremos juntos, ya que ambos
forman parte del conjunto de sentencias de SQL.
Debido a esto, crear una base de datos es una tarea muy simple. Claro que, en el
momento de crearla, la base de datos estar vaca, es decir, no contendr ninguna
tabla.
Vamos a crear y manipular nuestra propia base de datos, al tiempo que nos
familiarizamos con la forma de trabajar de MySQL.
Para empezar, crearemos una base de datos para nosotros solos, y la llamaremos
"Gestion". Para crear una base de datos se usa una sentencia CREATE
DATABASE. Ver la figura siguiente.
50
www.fullengineeringbook.net
MySQL
Manual del Participante
Creacin de Tablas
La sentencia CREATE TABLE permite crear tablas. La sintaxis de esta sentencia
es muy compleja, ya que existen muchas opciones y tenemos muchas
posibilidades diferentes a la hora de crear una tabla.
En su forma ms simple, la sentencia CREATE TABLE crear una tabla con las
columnas que indiquemos. Crearemos, como ejemplo, una tabla que nos permitir
almacenar nombres de personas y sus fechas de nacimiento. Deberemos indicar el
www.fullengineeringbook.net
MySQL
Manual del Participante
Acabamos de crear una tabla llamada "Persona" con dos columnas: "nombre" que
puede contener cadenas de hasta 25 caracteres y "fecha" de tipo fecha.
52
www.fullengineeringbook.net
MySQL
Manual del Participante
Valores nulos
Al definir cada columna podemos decidir si podr o no contener valores
nulos.
Debemos recordar que aquellas columnas que son o forman parte de una
clave primaria no pueden contener valores nulos.
La opcin por defecto es que se permitan valores nulos, NULL, y para que
no se permitan, se usa NOT NULL. Veamos el siguiene ejemplo.
Por ejemplo, si queremos que el valor por defecto para NroHoras sea 30,
podemos crear la tabla de la siguiente manera.
www.fullengineeringbook.net
MySQL
Manual del Participante
Claves primarias
Tambin se puede definir una clave primaria sobre una columna, usando la
palabra clave KEY o PRIMARY KEY.
Slo puede existir una clave primaria en cada tabla, y la columna sobre la
que se define una clave primaria no puede tener valores NULL. Si esto no se
especifica de forma explcita, MySQL lo har de forma automtica.
Usar NOT NULL PRIMARY KEY equivale a PRIMARY KEY, NOT NULL KEY
o sencillamente KEY. Personalmente, prefiero usar la primera forma o la
segunda.
Existe una sintaxis alternativa para crear claves primarias, que en general es
preferible, ya que es ms potente. De hecho, la que hemos explicado es un
alias para la forma general, que no admite todas las funciones (como por
ejemplo, crear claves primarias sobre varias columnas).
Columnas autoincrementadas
En MySQL tenemos la posibilidad de crear una columna autoincrementada,
aunque esta columna slo puede ser de tipo entero.
54
www.fullengineeringbook.net
MySQL
Manual del Participante
Comentarios
Adicionalmente, al crear la tabla, podemos aadir un comentario a cada
columna. Este comentario sirve como informacin adicional sobre alguna
caracterstica especial de la columna, y es parte de la documentacin de la
base de datos. Veamos el siguiente ejemplo.
Indices
Tenemos tres tipos de ndices. El primero corresponde a las claves primarias, que
como vimos, tambin se pueden crear a la hora de definir las columnas.
Claves primarias
La sintaxis para definir claves primarias es la siguiente.
definicin_columnas
| PRIMARY KEY (index_nombre_col,...)
www.fullengineeringbook.net
MySQL
Manual del Participante
Pero esta forma tiene ms opciones, por ejemplo, entre los parntesis
podemos especificar varios nombres de columnas, para construir claves
primarias compuestas por varias columnas. Veamos el siguiente ejemplo.
ndices
El segundo tipo de ndice permite definir ndices sobre una columna, sobre
varias, o sobre partes de columnas. Para definir estos ndices se usan
indistintamente las opciones KEY o INDEX. Veamos el ejemplo siguiente.
O su equivalente,
56
www.fullengineeringbook.net
MySQL
Manual del Participante
Claves nicas
El tercero permite definir ndices con claves nicas, tambin sobre una
columna, sobre varias o sobre partes de columnas. Para definir ndices con
claves nicas se usa la opcin UNIQUE.
www.fullengineeringbook.net
MySQL
Manual del Participante
Los ndices sirven para optimizar las consultas y las bsquedas de datos.
Mediante su uso es mucho ms rpido localizar filas con determinados
valores de columnas, o seguir un determinado orden. La alternativa es hacer
bsquedas secuenciales, que en tablas grandes requieren mucho tiempo.
Claves forneas
En MySQL slo existe soporte para claves forneas en tablas de tipo InnoDB. Sin
embargo, esto no impide usarlas en otros tipos de tablas.
58
www.fullengineeringbook.net
MySQL
Manual del Participante
El primero, slo sirve para documentar, y, al menos en las pruebas que hemos
echo, no define realmente claves forneas. Esta forma consiste en definir una
referencia al mismo tiempo que se define una columna. Veamos el siguiente
ejemplo.
www.fullengineeringbook.net
MySQL
Manual del Participante
Es imprescindible que la columna que contiene una definicin de clave fornea est
indexada. Pero esto no debe preocuparnos demasiado, ya que si no lo hacemos de
forma explcita, MySQL lo har por nosotros de forma implcita.
www.fullengineeringbook.net
MySQL
Manual del Participante
Personas
IdPersona Nombre FNacimiento
1 Luis 1962/05/16
2 Pedro 1960/08/13
3 Enrique 1958/10/26
Telefonos3
Numero IdPersona
285093 1
9386651 1
507111 3
9366900 3
www.fullengineeringbook.net
MySQL
Manual del Participante
Personas
IdPersona Nombre FNacimiento
1 Luis 1962/05/16
2 Pedro 1960/08/13
4 Enrique 1958/10/26
Telefonos3
Numero IdPersona
285093 1
9386651 1
507111 4
9366900 4
Motor de almacenamiento
La sintaxis de esta opcin es la siguiente.
ENGINE={BDB|HEAP|ISAM|InnoDB|MERGE|MRG_MYISAM|MYISAM }
www.fullengineeringbook.net
MySQL
Manual del Participante
Verificaciones
Disponemos de varias sentencias para verificar o consultar caractersticas de
tablas.
Tambin podemos ver la instruccin usada para crear una tabla, mediante la
sentencia SHOW CREATE TABLE. Su uso se ilustra a continuacin.
www.fullengineeringbook.net
MySQL
Manual del Participante
Eliminar Tablas
A veces es necesario eliminar una tabla, ya sea porque es ms sencillo crearla de
nuevo que modificarla, o porque ya no es necesaria.
Para eliminar una tabla se usa la sentencia DROP TABLE. La sintaxis de esta
sentencia se muestra a continuacin:
Se pueden aadir las palabras IF EXISTS para evitar errores si la tabla a eliminar
no existe.
64
www.fullengineeringbook.net
MySQL
Manual del Participante
Hay que tener cuidado, ya que al borrar cualquier base de datos se elimina tambin su
contenido. Veamos a continuacin un ejemplo.
En el ejemplo anterior se ha creado la base de datos Ejemplo1, luego se muestra una lista
de base de datos existentes y por ltimo se ha eliminado las bases de datos Ejemplo1 y
Demo.
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
En la tabla personas:
Sexo debe admitir: 1 y 0. 1=Masculino, 0=Femenino por defecto debe
almacenar el valor (0)
En la tabla alumnos:
NEstudios debe admitir:P,S,B,X. P=Primaria, S=Secundaria, B=Bachillerato,
X=Superior; por defecto debe almacenar el valor X
En la tabla Profesores:
ECivil debe admitir: C, D, S, V. C=Casado, D=Divorciado, S=Soltero,
V=Viudo , por defecto debe almacenar el valor S
66
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 5
Manipulacin de Datos
Objetivos
Al finalizar este capitulo, el participante aprender a :
Insertar registros en una tabla existente
Reemplazar informacin de las tablas existentes
Actualizar informacin de las tablas existentes
Eliminar informacin existente en una tabla
Vaciar completamente la informacin contenida en una tabla.
Una base de datos sin datos no sirve de mucho, de modo que veremos cmo agregar,
modificar o eliminar los datos que contienen nuestras bases de datos.
Insertar Registros
La forma directa de insertar una fila nueva en una tabla es mediante una sentencia
INSERT. En la forma ms simple de esta sentencia debemos indicar la tabla a la que
queremos aadir filas, y los valores de cada columna. Las columnas de tipo cadena o
fechas deben estar entre comillas simples o dobles, para las columnas nmericas esto no
es imprescindible, aunque tambin pueden estar entrecomilladas. Veamos un sencillo
ejemplo en la siguiente figura.
www.fullengineeringbook.net
MySQL
Manual del Participante
En este caso, como habamos definido un valor por defecto para la columna NroHoras de
30, se asignar ese valor para la fila correspondiente a 'OO-Writer
Otra opcin consiste en indicar una lista de columnas para las que se van a suministrar
valores. A las columnas que no se nombren en esa lista se les asigna el valor por defecto.
Este sistema, adems, permite usar cualquier orden en las columnas, con la ventaja, con
respecto a la anterior forma, de que no necesitamos conocer el orden de las columnas en
la tabla para poder insertar datos.
68
www.fullengineeringbook.net
MySQL
Manual del Participante
Existe otra sintaxis alternativa, que consiste en indicar el valor para cada columna. Ver la
figura siguiente.
Una vez ms, a las columnas para las que no indiquemos valores se les asignarn sus
valores por defecto. Tambin podemos hacer esto usando el valor DEFAULT.
Para las sintaxis que lo permiten, podemos observar que cuando se inserta ms de una
fila en una nica sentencia, obtenemos un mensaje desde MySQL que indica el nmero
de filas afectadas, el nmero de filas duplicadas y el nmero de avisos.
Para que una fila se considere duplicada debe tener el mismo valor que una fila existente
para una clave principal o para una clave nica. En tablas en las que no exista clave
primaria ni ndices de clave nica no tiene sentido hablar de filas duplicadas. Es ms, en
esas tablas es perfectamente posible que existan filas con los mismos valores para todas
las columnas.
Por ejemplo, si tenemos una tabla Clientes con la columna nombres definida como clave
nica e intentamos ingresar dos nombres iguales no generaria un error. Ver figura
siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
Sin embargo existe una opcin que podemos usar para los casos de claves duplicadas:
ON DUPLICATE KEY UPDATE. En este caso podemos indicar a MySQL qu debe hacer
si se intenta insertar una fila que ya existe en la tabla. Las opciones son limitadas: no
podemos insertar la nueva fila, sino nicamente modificar la que ya existe. Por ejemplo,
en la tabla 'Clientes' podemos usar el ltimo valor de la cuota en caso de que la fila se
repita:
70
www.fullengineeringbook.net
MySQL
Manual del Participante
Reemplazar registros
Existe una sentencia REPLACE, que es una alternativa para INSERT, que slo se
diferencia en que si existe algn registro anterior con el mismo valor para una clave
primaria o nica, se elimina el viejo y se inserta el nuevo en su lugar.
www.fullengineeringbook.net
MySQL
Manual del Participante
Las mismas sintaxis que existen para INSERT, estn disponibles para REPLACE.
Veamos el siguiente ejemplo.
72
www.fullengineeringbook.net
MySQL
Manual del Participante
Actualizar Registros
Podemos modificar valores de las filas (registros) de una tabla usando la sentencia
UPDATE. En su forma ms simple, los cambios se aplican a todas las filas, y a las
columnas que especifiquemos.
Por ejemplo, podemos aumentar en un 10% la cuota de todos los clientes de la tabla
Clientes usando la siguiente sentencia:
www.fullengineeringbook.net
MySQL
Manual del Participante
Pero no tenemos por qu actualizar todas las filas de la tabla. Podemos limitar el nmero
de filas afectadas de varias formas.
74
www.fullengineeringbook.net
MySQL
Manual del Participante
En este caso hemos establecido la Cuota en 50 de los Clientes cuyo nombre sea 'Pedro'.
Las condiciones pueden ser ms complejas. Existen muchas funciones y operadores que
se pueden aplicar sobre cualquier tipo de columna, y tambin podemos usar operadores
booleanos como AND u OR.
Otra forma de limitar el nmero de filas afectadas es usar la clusula LIMIT. Esta clusula
permite especificar el nmero de filas a modificar. Veamos el siguiente ejemplo.
www.fullengineeringbook.net
MySQL
Manual del Participante
En el ejemplo anterior hemos establecido la Cuota en 10 unidades para las dos primeras
filas.
Esta clusula se puede combinar con WHERE, de modo que slo las 'n' primeras filas que
cumplan una determinada condicin se modifiquen.
La clusula LIMIT se suele asociar a la clusula ORDER BY. Por ejemplo, si queremos
modificar 2 filas con las cuotas mas altas de la tabla 'Clientes', usaremos la siguiente
sentencia:
Cuando exista una clave primaria o nica, se usar ese orden por defecto, si no se
especifica una clusula ORDER BY.
76
www.fullengineeringbook.net
MySQL
Manual del Participante
Eliminar Registros
Para eliminar filas (registros) se usa la sentencia DELETE. La sintaxis es muy parecida a
la de UPDATE.
Pero es muy frecuente que slo se quiera eliminar ciertas filas que cumplan determinadas
condiciones. La forma ms normal de hacer esto es usar la clusula WHERE. Veamos
otro ejemplo.
Tambin podemos usar las clusulas LIMIT y ORDER BY del mismo modo que en la
sentencia UPDATE, por ejemplo, para eliminar a dos clientes con las cuotas ms baja
utilizariamos la siguiente instruccin.
www.fullengineeringbook.net
MySQL
Manual del Participante
La diferencia es que DELETE hace un borrado secuencial de la tabla, fila a fila. Pero
TRUNCATE borra la tabla y la vuelve a crear vaca, lo que es mucho ms eficiente. El
siguiente ejemplo muestra como usar esta instruccin.
78
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
1. Suponga que tiene la tabla productos con 2 campos: Nombre del producto tipo
CHAR y el precio tipo DECIMAL, siendo el primer campo la clave. Si ejecutamos la
siguiente instruccin:
INSERT INTO Productos (NombreProducto, Precio) VALUES
('Pepsi', 3.0),
('Coca Cola', 3.5),
('Inka Kola', 3.5),
('Pepsi', 2.0);
Cuntos Filas se insertarn en la tabla productos?Por que?
3. Se desea aumentar el precio de todos los productos con el 10% de su valor actual.
Cul sera la instruccin que permita dicha actualizacin?
4. Cul es la diferencia entre la instruccin INSERT INTO y REPLACE INTO?
5. Cul es la diferencia entre la instruccin REPLACE INTO y UPDATE SET ?
6. A cuantos registros de la tabla productos actualiza la siguiente instruccin?
UPDATE Productos SET Precio=Precio*1.1
WHERE Precio>3 LIMIT 3;
www.fullengineeringbook.net
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 6
Seleccin de Datos
Objetivos
Al finalizar este capitulo, el participante aprender a:
Seleccionar registros de datos en forma incondicional.
Filtrar la salida de datos al seleccionar registros.
Mostrar y eliminar registros repetidos
Agrupar resultados para generar resumenes de datos
Filtrar resultados agrupados
Ordenar la seleccin de datos.
Forma incondicional
La forma ms sencilla es la que hemos usado hasta ahora, consiste en pedir todas las
columnas y no especificar condiciones. Veamos el siguiente ejemplo.
www.fullengineeringbook.net
MySQL
Manual del Participante
Pero podemos usar una lista de columnas, y de ese modo slo se mostrarn esas
columnas. Vemos el siguiente ejemplo.
82
www.fullengineeringbook.net
MySQL
Manual del Participante
Tambin podemos aplicar funciones sobre columnas de tablas, y usar esas columnas en
expresiones para generar nuevas columnas. En el ejemplo siguiente se calcula la edad de
cada una de las personas.
Alias
Tambin es posible asignar un alias a cualquiera de las expresiones select. Esto se puede
hacer usando la palabra AS, aunque esta palabra es opcional. En el siguiente ejemplo se
le pone un nombre a la nueva columna.
www.fullengineeringbook.net
MySQL
Manual del Participante
84
www.fullengineeringbook.net
MySQL
Manual del Participante
En el resultado de la figura anterior, se aprecia que existen dos valores de filas repetidos,
para la fecha "1958-10-26" y para "1961-08-13". Para evitar un resultado con filas
repetidas se debe usar DISTINCT y DISTINCTROW (ambas son sinonimos). Veamos la
siguiente instruccin.
www.fullengineeringbook.net
MySQL
Manual del Participante
Agrupar filas
Es posible agrupar filas en la salida de una sentencia SELECT segn los distintos valores
de una columna, usando la clusula GROUP BY. Veamos el siguiente ejemplo.
86
www.fullengineeringbook.net
MySQL
Manual del Participante
En este caso se eliminaron los registros de Linares Jorge y Diaz Manuel. Sin embargo,
la diferencia principal es que el uso de la clusula GROUP BY permite usar funciones de
resumen o reunin. Por ejemplo, la funcin COUNT(), que sirve para contar las filas de
cada grupo. El siguiente ejemplo ilustra el uso de la funcin COUNT().
La sentencia anterior muestra todas las fechas diferentes y el nmero de filas para cada
www.fullengineeringbook.net
MySQL
Manual del Participante
fecha. Existen otras funciones de resumen o reunin, como MAX(), MIN(), SUM(), AVG(),
STD(), VARIANCE(). etc.
Estas funciones tambin se pueden usar sin la clusula GROUP BY siempre que no se
proyecten otras columnas. Veamos el siguiente ejemplo, donde se cuentan el Nro de
registros que existen en la tabla Personas
Clusula HAVING
La clusula HAVING permite hacer selecciones en situaciones en las que no es posible
usar WHERE. Veamos un ejemplo completo.
88
www.fullengineeringbook.net
MySQL
Manual del Participante
Ordenar resultados
Podemos aadir una clusula de orden ORDER BY para obtener resultados ordenados
por la columna que se desee. La siguiente figura muestra el uso de la clusula ORDER
BY.
Existe una opcin para esta clusula para elegir el orden, ascendente o descendente. Se
puede aadir a continuacin ASC o DESC, respectivamente. Por defecto se usa el orden
ascendente, de modo que el modificador ASC es opcional. Veamos el ejemplo siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
Para poder hacer esto la clsula LIMIT admite dos parmetros. Cuando se usan los dos,
el primero indica el nmero de la primera fila a recuperar, y el segundo el nmero de filas
a recuperar. La siguiente figura muestra el uso de la clusula LIMIT para recuperar los
registros de dos en dos.
90
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
www.fullengineeringbook.net
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 7
Operadores del lenguaje SQL
Objetivos
Al finalizar este capitulo, el participante aprender a:
Conocer y usar los operadores de asignacin
Crear expresiones lgicas mediante el uso de operadores logicos y de comparacin.
Conocer y usar los operadores aritmticos.
Conocer el funcionamiento y uso del operador de control de flujo CASE
Comparar valores tipo cadena y usar expresiones regulares mediante la manipulacin
de operadores de cadena.
MySQL dispone de multitud de operadores diferentes para cada uno de los tipos de
columna. Esos operadores se utilizan para construir expresiones que se usan en
clusulas ORDER BY y HAVING de la sentencia SELECT y en las clusulas WHERE de
las sentencias SELECT, DELETE y UPDATE.
Operador de asignacin
En MySQL podemos crear variables y usarlas porteriormente en expresiones. Para crear
una variable hay dos posibilidades. La primera consiste en usar la sentencia SET, tal y
como se aprecia en la siguiente figura.
Otra alternativa, es definir variables de usuario dentro de una sentencia SELECT. Veamos
el siguiente ejemplo.
www.fullengineeringbook.net
MySQL
Manual del Participante
Una variable sin asignar ser de tipo cadena y tendr el valor NULL. Ver figura Siguiente.
94
www.fullengineeringbook.net
MySQL
Manual del Participante
Operadores lgicos
Los operadores lgicos se usan para crear expresiones lgicas complejas. Permiten el
uso de lgebra booleana, y nos ayudarn a crear condiciones mucho ms precisas. En el
lgebra booleana slo existen dos valores posibles para los operandos y los son
resultados: verdadero y falso. MySQL dispone de dos constantes para esos valores:
TRUE y FALSE, respectivamente.
MySQL aade un tercer valor: desconocido. Esto es para que sea posible trabajar con
valores NULL. La siguiente figura ilustra el uso de estos tres valores.
Operador Y
En MySQL se puede usar tanto la forma AND como &&, es decir, ambas formas se
refieren al mismo operador: Y lgico.
A B A AND B
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso
NULL Verdadero NULL
NULL Falso Falso
Verdadero NULL NULL
Falso NULL Falso
Al igual que todos lo operadores binarios que veremos, el operador Y se puede asociar,
www.fullengineeringbook.net
MySQL
Manual del Participante
Operador O
En MySQL este operador tambin tiene dos formas equivalentes OR y ||. El operador O
tambin es binario. Si ambos operandos son distintos de NULL, entonces, el resultado es
verdadero si cualquiera de ellos es verdadero, y falso si ambos son falsos. Si uno de los
operandos es NULL y el otro es verdadero, entonces el resultado es verdadero. La tabla
de la verdad, de este operador, es la siguiente.
A B A OR B
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso
NULL Verdadero Verdadero
NULL Falso NULL
Verdadero NULL Verdadero
Falso NULL NULL
Operador O exclusivo
XOR tambin es un operador binario, que devuelve NULL si cualquiera de los operandos
es NULL. Si ninguno de los operandos es NULL, entonces, devolver un valor verdadero
si uno de ellos es verdadero, y falso si ambos son verdaderos o ambos falsos. La tabla de
la verdad ser la siguiente.
A B A XOR B
Verdadero Verdadero Falso
96
www.fullengineeringbook.net
MySQL
Manual del Participante
Operador de negacin
El operador NOT, que tambin se puede escribir como !, es un operador unitario, es decir
slo afecta a un operando. Si el operando es verdadero devuelve falso, y viceversa. Si el
operando es NULL, entonces, el valor devuelto tambin es NULL. La tabla de la verdad
para este operador es la siguiente.
A NOT A
Verdadero Falso
Falso Verdadero
Operadores de comparacin
Para crear expresiones lgicas, a las que podremos aplicar el lgebra de Boole,
disponemos de varios operadores de comparacin. Estos operadores se aplican a
cualquier tipo de columna: fechas, cadenas, nmeros, etc, y devuelven valores lgicos:
verdadero o falso (1/0).
Operador de igualdad
El operador = compara dos expresiones, y da como resultado 1 si son iguales, 0
si son diferentes. Veamos un ejemplo sencillo.
www.fullengineeringbook.net
MySQL
Manual del Participante
Hay que mencionar que, al contrario que otros lenguajes, como C o C++, donde el
control de tipos es muy estricto, en MySQL se pueden comparar valores de tipos
diferentes, y el resultado ser el esperado. En el siguiente ejemplo, MySQL hace
una conversion implicita antes de comparar los valores numericos, arrojando
resultados correctos.
98
www.fullengineeringbook.net
MySQL
Manual del Participante
Operador de desigualdad
MySQL dispone de dos operadores equivalente para comprobar desigualdades, <>
y !=. Si las expresiones comparadas son diferentes, el resultado es verdadero, y si
son iguales, el resultado es falso. En el siguiente ejemplo, se compara 10 <> 15 y
el resultado es verdadero y 18 no es dieferente de 18.
Operador Descripcin
> Mayor
< Menor
>= Mayor o igual que
<= Menor o igual que
www.fullengineeringbook.net
MySQL
Manual del Participante
Verificacin de NULL
Los operadores IS NULL e IS NOT NULL sirven para verificar si una expresin
determinada es o no nula. La sintaxis es la siguiente.
<expresin> IS NULL
<expresin> IS NOT NULL
100
www.fullengineeringbook.net
MySQL
Manual del Participante
Eleccin de no nulos
El operador COALESCE sirve para seleccionar el primer valor no nulo de una lista
o conjunto de expresiones. La sintaxis es la siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
102
www.fullengineeringbook.net
MySQL
Manual del Participante
Verificar conjuntos
Los operadores IN y NOT IN sirven para averiguar si el valor de una expresin
determinada est dentro de un conjunto indicado. La sintaxis es la siguiente.
Verificar nulos
El operador ISNULL es equivalente a IS NULL. La sintaxis es la siguiente:
ISNULL(<expresin>)
www.fullengineeringbook.net
MySQL
Manual del Participante
Encontrar intervalo
Se puede usar el operador INTERVAL para calcular el intervalo al que pertenece
un valor determinado. La sintaxis es la siguiente.
Operadores aritmticos
Los operadores aritmticos se aplican a valores numricos, ya sean enteros o en coma
flotante. El resultado siempre es un valor numrico, entero o en coma flotante.
104
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
106
www.fullengineeringbook.net
MySQL
Manual del Participante
Operador CASE
Existen dos sintaxis alternativas para CASE.
La primera forma devuelve el resultado para el valor i que coincida con valor. La
segunda forma devuelve el resultado para la primera condicin verdadera. Si no
hay coincidencias, se devuelve el valor asociado al ELSE, o NULL si no hay parte
ELSE.
Otra Forma de utilizar el operado CASE es escribiendo la condicin dentro de WHEN, tal
www.fullengineeringbook.net
MySQL
Manual del Participante
Operador LIKE
El operador LIKE se usa para hacer comparaciones entre cadenas y patrones. El
resultado es verdadero (1) si la cadena se ajusta al patrn, y falso (0) en caso
contrario. Tanto si la cadena como el patrn son NULL, el resultado es NULL. La
sintaxis es la siguiente.
Los patrones son cadenas de caracteres en las que pueden aparecer, en cualquier
posicin, los caracteres especiales '%' y '_'. El significado de esos caracteres se
puede ver en la tabla siguiente.
Caracter Descripcin
108
www.fullengineeringbook.net
MySQL
Manual del Participante
En MySQL, LIKE tambin funciona con expresiones numricas. (Esto es una extensin a
www.fullengineeringbook.net
MySQL
Manual del Participante
110
www.fullengineeringbook.net
MySQL
Manual del Participante
El patrn no tiene que ser necesariamente una cadena, puede ser una expresin o
una columna de una tabla.
A continuacin otro ejemplo en donde se aplica el operador REGEXP para mostrar a las
personas cuyo nombre estan comprendido entre las letras D a la S. Ver figura siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
Precedencia de operadores
Las precedencias de los operadores son las que se muestran en la siguiente tabla,
empezando por la menor:
Operador
:=
||, OR, XOR
&&, AND
NOT
BETWEEN, CASE, WHEN, THEN, ELSE
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
|
&
<<, >>
-, +
*, /, DIV, %, MOD
^
- (unitario), ~ (complemento)
!
BINARY, COLLATE
112
www.fullengineeringbook.net
MySQL
Manual del Participante
Parntesis
Como en cualquier otro lenguaje, los parntesis se pueden usar para forzar el orden de la
evaluacin de determinadas operaciones dentro de una expresin. Cualquier expresin
entre parntesis adquiere mayor precedencia que el resto de las operaciones en el mismo
nivel de parntesis. En la siguiente figura se muestra un sencillo ejemplo de agrupamiento
con parntesis.
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
4. Con la tabla del item 3. Motrar a los empleados que no son solteros (S) ni
casados (C).
5. Seleccionar los empleados divorciados con mas de 30 aos de servicio.
6. Mostrar la lista de empleados y que en la columna sexo se muestre los valores:
Masculino (1) o Femenino(0)
7. Seleccionar los empleados cuyo nombre empieza con la letra A
8. Seleccionar los empleados cuyo nombre estan comeprendidos entre las letras P y
S
114
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 8
Consultas MultiTabla
Objetivos
Al finalizar este capitulo, el participante aprender a:
Seleccionar datos de mas de una tabla
Crear composiciones internas y externas
Crear composiciones naturales
Crear uniones de tablas.
Las consultas que hemos visto, hasta ahora, se refieren slo a una tabla, pero tambin es
posible hacer consultas usando varias tablas en la misma sentencia SELECT. Esto nos
permite realizar otras dos operaciones de lgebra relacional que an no hemos visto: el
producto cartesiano y la composicin.
Producto cartesiano
El producto cartesiano de dos tablas son todas las combinaciones de todas las filas de las
dos tablas. Usando una sentencia SELECT se proyecta todos los atributos de ambas
tablas. Los nombres de las tablas se indican en la clusula FROM separados con comas.
Para ver el funcionamiento de un producto cartesiano vamos a trabajar con dos nuevas
tablas: Instructores y Cursos a las cuales les vamos a insertar algunos registros. (ver
figuras siguientes)
www.fullengineeringbook.net
MySQL
Manual del Participante
Veamos ahora el contenidos de las tablas instructores y cursos (Ver figura siguiente).
Ahora, usando una sentencia SELECT proyectamos los atributos de la tabla Instructores y
los atributos de la tabla Cursos (Puede proyectarse todos los atributos a travs de *). Los
nombres de las tablas deben indicarse en la clusula FROM separados por comas. (ver
figura siguiente).
116
www.fullengineeringbook.net
MySQL
Manual del Participante
Composicin (Join)
Una composicin tipo Join es un producto cartesiano restringido, las tuplas (filas) que se
emparejan deben cumplir una determinada condicin. En el lgebra relacional slo hemos
hablado de composiciones en general. Sin embargo, en SQL se trabaja con varios tipos
de composiciones.
Composiciones internas
Todas las composiciones que hemos visto hasta ahora se denominan
composiciones internas. Para hacer una composicin interna se parte de un
producto cartesiano y se eliminan aquellas tuplas que no cumplen la condicin de
la composicin.
www.fullengineeringbook.net
MySQL
Manual del Participante
referencia_tabla, referencia_tabla
referencia_tabla [INNER | CROSS] JOIN referencia_tabla [condicin]
La coma y JOIN son equivalentes, y las palabras INNER y CROSS son opcionales.
La condicin en la clusula ON puede ser cualquier expresin vlida para una
clusula WHERE, de hecho, en la mayora de los casos, son equivalentes.
La clusula USING nos permite usar una lista de atributos que deben ser iguales
en las dos tablas a componer.
118
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
Tambin podemos definir alias para las tablas, y conseguir una consulta ms
compacta como la siguiente. (Ver figura siguiente)
MySQL posee una sintaxis alternativa mucho mejor para hacer composiciones
internas naturales. La sintasis es la siguiente.
120
www.fullengineeringbook.net
MySQL
Manual del Participante
Composiciones externas
Al contrario que con las composiciones internas, las externas no proceden de un
producto cartesiano. Por lo tanto, en estas pueden aparecer tuplas que no
aparecen en el producto cartesiano.
Para hacer una composicin externa se toman las tuplas de una de las tablas una a
una y se combinan con las tuplas de la otra.
Como norma general se usa un ndice para localizar las tuplas de la segunda tabla
que cumplen la condicin, y para cada tupla encontrada se aade una fila a la tabla
de salida. Si no existe ninguna tupla en la segunda tabla que cumpla las
condiciones, se combina la tupla de la primera con una nula de la segunda.
www.fullengineeringbook.net
MySQL
Manual del Participante
122
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
124
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
Uniones
En MySQL, tambin es posible realizar la operacin de lgebra relacional unin entre
varias tablas o proyecciones de tablas.
Para hacerlo se usa la sentencia UNION que permite combinar varias sentencias SELECT
para crear una nica tabla de salida.
Las condicin para que se pueda crear una unin es que las relaciones a unir deben tener
el mismo nmero de atributos, y adems deben ser de dominios compatibles.
126
www.fullengineeringbook.net
MySQL
Manual del Participante
SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]
Con ALL se muestran todas las filas, aunque estn repetidas, con DISTINCT slo se
muestra una copia de cada fila. Verf figura siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
Cabe sealar que sobre el resultado final no se pueden aplicar otras clusulas como
GROUP BY.
128
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
Con los datos de la figura anterior. Seleccionar a los empleados que no han
efectuado prestamo alguno.
5. Seleccionar los empleados que no han cancelado el prestamo
6. A cuanto asciende el monto de los prestamos efectuados en agosto del 2006?
7. Mostrar los empleados y el monto prestado en setiembre del 2006
8. A cuanto asciende el monto de los prestamos efectuados por los empleados
casados (C)?
www.fullengineeringbook.net
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 9
Usuarios y privilegios
Objetivos
Al finalizar este capitulo, el participante aprender a:
Conocer los niveles de privilegios existentes en MySQL
Crear, conceder y revocar privilegios
Visualizar los privilegios de los usuarios.
Crear usuarios para conectarse desde cualquier computador
Eliminar usuarios.
Hasta ahora hemos usado slo el usuario 'root', que es el administrador, y que dispone de
todos los privilegios disponibles en MySQL.
Sin embargo, normalmente no ser una buena prctica dejar que todos los usuario con
acceso al servidor tengan todos los privilegios. Para conservar la integridad de los datos y
de las estructuras ser conveniente que slo algunos usuarios puedan realizar
determinadas tareas, y que otras, que requieren mayor conocimiento sobre las estructuras
de bases de datos y tablas, slo puedan realizarse por un nmero limitado y controlado de
usuarios.
MySQL permite definir diferentes usuarios, y adems, asignarle a cada uno determinados
privilegios en distintos niveles o categoras.
Niveles de privilegios
En MySQL existen cinco niveles distintos de privilegios.
www.fullengineeringbook.net
MySQL
Manual del Participante
Globales
Se aplican al conjunto de todas las bases de datos en un servidor. Es el nivel ms
alto de privilegio, en el sentido de que su mbito es el ms general.
De base de datos
Se refieren a bases de datos individuales, y por extensin, a todos los objetos que
contiene cada base de datos.
De tabla
Se aplican a tablas individuales, y por lo tanto, a todas las columnas de esas tabla.
De columna
se aplican a una columna en una tabla concreta.
De rutina
Se aplican a los procedimientos almacenados, los cuales consisten en varias
consultas SQL.
Crear usuarios
Aunque en la versin 5.0.2 de MySQL existe una sentencia para crear usuarios, CREATE
USER, en versiones anteriores se usa exclusivamente la sentencia GRANT para crearlos.
Usando GRANT podemos crear un usuario y al mismo tiempo concederle tambin los
privilegios que tendr. La sintaxis simplificada que usaremos para GRANT, es la
siguiente.
132
www.fullengineeringbook.net
MySQL
Manual del Participante
Hay que tener en cuenta que la constrasea se debe introducir entre comillas de forma
obligatoria.
Un usuario 'anonimo' podr abrir una sesin MySQL mediante una orden como la
siguiente.
Pero no podr hacer mucho ms, ya que no tiene privilegios. No tendr, por ejemplo,
oportunidad de hacer selecciones de datos, de crear bases de datos o tablas, insertar
datos, etc.
Conceder privilegios
Para que un usuario pueda hacer algo ms que consultar algunas variables del sistema
debe tener algn privilegio. Lo ms simple es conceder el privilegio para seleccionar datos
de una tabla concreta. Esto se hara mediante la misma sentencia GRANT que se usa
para aadir privilegios a un usuario existente.
www.fullengineeringbook.net
MySQL
Manual del Participante
Un usuario que abra una sesin y se identifique como 'anonimo' podr ejecutar las
siguiente instrucciones SQL.
Como se puede apreciar en la figura anterior, para este usuario slo existe las base de
datos 'Gestion' y Test, y dentro de la base de datos Gestion solo existe la tabla
'Instructores'.
Adems, podr hacer consultas sobre esa tabla, pero no podr aadir ni modificar datos,
ni por supuesto, crear o destruir tablas ni bases de datos.
Para conceder privilegios globales se usa ON *.*, para indicar que los privilegios se
conceden en todas las tablas de todas las bases de datos.
134
www.fullengineeringbook.net
MySQL
Manual del Participante
Para conceder privilegios en bases de datos se usa ON nombre_db.*, indicando que los
privilegios se conceden sobre todas las tablas de la base de datos 'nombre_db'.
Un detalle importante es que para crear usuarios se debe tener el privilegio GRANT
OPTION, y que slo se pueden conceder privilegios que se posean.
Revocar privilegios
Para revocar privilegios se usa la sentencia REVOKE. La sintaxis de esta sentencia es la
siguiente.
www.fullengineeringbook.net
MySQL
Manual del Participante
www.fullengineeringbook.net
MySQL
Manual del Participante
En el ejemplo anterior, un usuario que se identifique como 'anonimo' slo podr entrar
desde el mismo computador donde se est ejecutando el servidor.
Borrar usuarios
Para eliminar usuarios se usa la sentencia DROP USER. Es importanten sealar que no
se puede eliminar un usuario que tenga privilegios. Como se aprecia en el siguiente
ejemplo, al tratar de eliminar al usuario anonimo se genera un error debido a que
anonimo tiene privilegios.
www.fullengineeringbook.net
MySQL
Manual del Participante
138
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
www.fullengineeringbook.net
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 10
Importar y exportar datos
Objetivos
Al finalizar este capitulo, el participante aprender a:
Comprender la sintaxis para exportar datos
Exportar datos hacia otros formatos de archivos
Comprender la sintaxis para importar datos
Importar datos desde archivos de texto.
MySQL permite copiar tablas en diferentes formatos de texto, as como importar datos a
partir de archivos de texto en diferentes formatos.
Esto se puede usar para exportar los datos de nuestras bases de datos a otras
aplicaciones, o bien para importar datos desde otras fuentes a nuestras tablas. Tambin
se puede usar para hacer copias de seguridad y restaurarlas posteriormente.
El resto de las clusulas de SELECT siguen siendo aplicables, la nica diferencia es que
la salida de la seleccin se enva a un archivo en lugar de hacerlo hacia la consola.
file_name es el nombre del archivo de salida. El archivo no debe existir, ya que en caso
contrario la sentencia fallar.
www.fullengineeringbook.net
MySQL
Manual del Participante
En cuanto a las opciones de exportacin son las mismas que para las clusulas FIELDS y
LINES de LOAD DATA. La sintaxis es la siguiente.
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]
ESCAPED BY 'carcter': sirve para indicar el carcter que se usar para escapar
aquellos caracteres que pueden dificultar la lectura posterior del archivo. Por
ejemplo, si teminamos las columnas con ',' y no las entrecomillamos, un carcter ','
dentro de una columna de texto se interpretar como un separador de columnas.
Para evitar esto se puede escapar esa coma con otro carcter. Por defecto se usa
el carcter '\'.
142
www.fullengineeringbook.net
MySQL
Manual del Participante
Por ejemplo, para obtener un archivo de texto a partir de la tabla 'Instructores', con las
columnas delimitadas por ';', entrecomillando las columnas de texto con '"' y separando
cada fila por la secuencia '\r\n', usaremos la siguiente sentecia. Ver figura siguiente.
Importar Datos
MySQL, tambin, permite el proceso contrario. Podemos leer el contenido de un archivo
de texto en una tabla. El archivo origen puede haber sido creado mediante una sentencia
SELECT ... INTO OUTFILE, o mediante cualquier otro medio.
www.fullengineeringbook.net
MySQL
Manual del Participante
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]
[IGNORE number LINES]
[(col_name,...)]
La clusula LOCAL indica, si aparece, que el archivo est en el computador del cliente. Si
no se especifica el archivo de texto se buscar en el servidor, concretamente en el mismo
directorio donde est la base de datos. Esto nos permite importar datos desde nuestro
computador en un sistema en que el servidor de MySQL se encuentra en otra mquina.
Las clusulas REPLACE e IGNORE afectan al modo en que se tratan las filas ledas que
contengan el mismo valor para una clave principal o nica para una fila existente en la
tabla. Si se especifica REPLACE se sustituir la fila actual por la leda. Si se especifica
IGNORE el valor ledo ser ignorado. La parte INTO TABLA tbl_name indica en qu tabla
se insertarn los valores ledos.
La misma utilidad tiene la clusula IGNORE nmero LINES, que nos permite que las
primeras nmero lneas no se interpreten como datos a importar. Es frecuente que los
archivos de texto que usaremos como fuente de datos contengan algunas cabeceras que
expliquen el contenido del archivo, o que contengan los nombres de cada columna.
Usando esta clusula podemos ignorarlas.
La ltima parte nos permite indicar la columna a la que ser asignada cada una de las
columnas ledas, esto ser til si el orden de las columnas en la tabla no es el mismo que
en el archivo de texto, o si el nmero de columnas es diferente en ambos.
Por ejemplo, supongamos que se desea aadir el contenido del archivo Instructores
Nuevos.txt (ver figura siguiente) a la tabla "Instructores".
144
www.fullengineeringbook.net
MySQL
Manual del Participante
Como se aprecia en la figura anterior, en el archivo hay dos filas al principio que no
contienen datos vlidos, las columnas estn separadas con comas y, como hemos
editado el archivo con el "notepad", las lneas terminan con "\n\r". La sentencia adecuada
para leer los datos es la siguiente.
En la figura anterior se aprecia que agreg a 4 nuevos instructores identificados con los
ID : 5,6,7,8.
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
5. Imagine que tiene una archivo de texto con los nuevos prestamos que se han
efectuado a mas intructores (ver figura siguiente) Cul sera la instruccin para
incorparar estos registros a la tabla ctacte de la figura anterior?.
146
www.fullengineeringbook.net
MySQL
Manual del Participante
Capitulo 11
phpMyAdmin
Objetivos
Al finalizar este capitulo, el participante aprender a:
Conocer que es phpMyAdmin
Conectarse a phpMyAdmin
Usar phpMyAdmin para visualizar datos de las diferentes tablas de MySQL
Administrar las base de datos de un servidor MySQL
Ejecutar instrucciones SQL
Realizar copias de seguridad.
El phpMyAdmin es una aplicacin escrita en php que nos permite gestionar las bases de
datos de nuestros sitios Web. Esta aplicacin resulta extremadamente til cuando
necesitamos eliminar alguna tabla o modificar un valor, aunque tambin es cierto que
puede resultar peligroso hacerlo sin tener ningn conocimiento ya que podramos destruir
los datos sin posibilidad de recuperarlos (salvo que se haya creado un backup de la base
de datos).
Cuando se instalo el paquete APPSERV, se instal tambien phpMAdmin, por esa razn
que vamos a abordarlo brevemente.
Para activar el phpMyAdmin solo tiene que hacer click sobre el explorador de Internet e
ingresar la ruta en la cual se encuentra este aplicativo, el mismo que podria ser el
siguiente: http://localhost/phpMyAdmin.php que de inmediato nos mostrar la siguiente
pantalla (ver figura siguiente). En esta ventana inicial el usuario debe ingresar el usuario y
la respectiva contrasea para que podamos ingresar al panel central de phpMyAdmin. En
caso de ingresar una contrasea no vlida el programa nos lo har saber mostrndonos
un mensaje en una etiqueta de color rojo y amarillo.
www.fullengineeringbook.net
MySQL
Manual del Participante
148
www.fullengineeringbook.net
MySQL
Manual del Participante
Para seleccionar una base de datos existente, desplegaremos el combo box que se
encuentra en elpanel izquierdo y elegimos la base de datos (ver figura siguiente)
Estructura
Una vez seleccionada, la base de datos, la pantalla principal cambia mostrndose la
estructura completa de nuestra base de datos (Ver figura siguiente).
www.fullengineeringbook.net
MySQL
Manual del Participante
En esta ventana puede observar las tablas que contienen las BD, las acciones que se
pueden realizar sobre las tablas, los registros que contienen, su tipo, tamao y residuo
que se puede depurar (espacio de la base de datos que se est usando para nada y que
se puede eliminar). Las acciones que se pueden realizar son las siguientes.
www.fullengineeringbook.net
MySQL
Manual del Participante
Analizar la tabla: Analiza la tabla para comprobar que no hayan errores de ningn
tipo.
Como se pudo apreciar en la imagen anterior, en cada fila que contiene el nombre de la
tabla, hay seis (6) iconos que permiten realizar diversas acciones. Entre estas acciones
encontramos, en primer lugar, al icono Examinar . Al hacer click sobre este icono
aparece la ventana Examinar mostrndonos todo el contenido de la tabla seleccionada
(ver figura siguiente).
A travs de esta ventana se puede editar los valores (por medio del icono del lpiz) o
borrar un registro (con la X roja). Cuando hay demasiados registros, se visualiza el
contenido en varias pginas, en las que se puede avanzar o retroceder.
SQL
Al hacer click sobreesta pestaa se muestra una ventana en la que se puede introducir
instrucciones MySQL consistentes en varias lneas de texto o una backup para restaurar
tu BD (Ver figura seguiente).
www.fullengineeringbook.net
MySQL
Manual del Participante
Importante
Sobre la consulta SQL, es recomendable no incluir demasiadas lneas.
Si la base de datos fuera excesivamente grande, sera preferible fragmentar el backup en
varios segmentos.
Exportar
Ahora observemos la pestaa exportar, que tambin resulta de extrema utilidad (sobre
todo para crear backups de nuestra BD). La ventana de la ficha exportar se muestra en la
siguiente figura.
La ventana Exportar permite realizar backups de toda la base de datos o solo de algunas
tablas de nuestra eleccin. Para ello, solo hay que seleccionar las tablas en forma
discontinua.
152
www.fullengineeringbook.net
MySQL
Manual del Participante
Para realizar una backup de la base de datos, hay que seguir los siguientes pasos.
1. Debajo del cuadro Exportar donde aparecen las tablas, hacer click en Seleccione
todo.
2. Revise que estn marcados las opciones Estructura y Datos (es recomendable
marcar tambin Aadir DROP TABLE)
3. Marcar Enviar (genera un archivo descargable) y pulsar el botn Contine para
generar el backup de la base de datos.
www.fullengineeringbook.net
MySQL
Manual del Participante
Preguntas de Repaso
1. Qu es phpMyAdmin?
2. Cmo se consigue phpMyAdmin?
3. El usuario que uso para conectarse a MySQL mediante la consola se puede
utilizar para conectarse con phpMyAdmin?
4. Usted cree que usar phpMyAdmin es ms fcil que usar la consola?por que?
5. Qu instrucciones SQL se puede ejecutar en phpMyAdmin?
6. En phpMyAdmin, Exportar es lo mismo hacer un backup? Verifique
7. Usando phpMyAdmin y las tablas del captulo anterior (empleados y ctacte)
ejecutar las siguiente tareas:
a. Crear un backup comprimido con ZIP.
b. Eliminar las tablas empleados y ctacte
c. Restaurar el backup creado en el item a)
154
www.fullengineeringbook.net