Sunteți pe pagina 1din 95

CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO

NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

MATERIAL BIBLIOGRFICO
DE APOYO DIDCTICO

Licenciatura:
NEGOCIOS Y COMERCIO
INTERNACIONALES

Asignatura:
INFORMTICA II

Semestre:
SEGUNDO

Nombre del compilador:


ING. JUAN ALBERTO VAZQUEZ
GONZALEZ

ING JUAN ALBERTO VAZQUEZ G.


Pgina 1 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

INDICE
INTRODUCCION
MANEJO DE LA ANTOLOGIA

1. GENERALIDADES
1.1 Concepto de base de datos
1.2 Operaciones sobre las bases de datos
1.3 Vistas de una base de datos
1.4 Esquemas e instancias
1.5 Archivos, registros y campos

2. CREACIN DE UNA BASE DE DATOS


2.1 Generalidades acerca de MySQL
2.2 Creacin de un esquema
2.3 Visualizacin de un esquema
2.4 Adicin de registros

3. MODIFICACIN DE UNA BASE DE DATOS


3.1 Edicin de registros
3.2 Eliminacin de registros
3.3 Recuperacin de registros
3.4 Insercin de registros
3.5 Modificacin de campos
3.6 Modificacin de la estructura de una base de datos

4. CONSULTAS EN LA BASE DE DATOS


4.1 Uso de los comandos DISPLAY, LIST, y LOCATE
4.2 Uso de los comandos COUNT, SUM y AVERAGE

5. ORDENACIN E INDEXACIN DE LAS BASES DE DATOS


5.1 Ordenacin de una base de datos
5.2 Ordenacin mltiple
5.3 Indexacin de una base de datos
5.4 Indexacin mltiple

6 ELABORACIN DE REPORTES
6.1 Impresin sin formato
6.2 Agregando informacin desde HTML
6.3 Trabajar con tablas temporales.

7. CREACIN DE FORMATOS DE PANTALLA


7.1 Creacin de pantallas de captura
7.2 Tablas de MySQL
7.3 Mostrar datos de una tabla.
7.4 Modificacin de una tabla de MySQL

8. XAMMP
8.1 Caractersticas de los mens del asistente
8.2 Construccin y modificacin de bases de datos con el asistente

ING JUAN ALBERTO VAZQUEZ G.


Pgina 2 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

INTRODUCCION

En la vida cotidiana se interacciona continuamente con entidades


tales como personas, documentos u otros. En una empresa, las
entidades estn representadas por los operarios, los empleados, los
clientes, los proveedores, las facturas. En un hospital nos
encontraramos con los mdicos, pacientes, enfermeras, cuadros
clnicos, etc. Puesto que en cada caso se debe trabajar con una gran
cantidad de datos, surge la necesidad de almacenarlos de manera que
nos resulten de fcil acceso en cada momento y, por consiguiente, tiles
a nuestras actividades. Si por ejemplo cada da debemos gestionar
varias decenas de clientes y facturas, utilizaremos un sistema para
memorizar los datos como, por ejemplo, un fichero, ms bien antes que
recurrir nicamente a la memoria.
Las fichas aparecen reagrupadas en archivos, cada uno de los cuales
contiene en general las fichas de un slo tipo, las de los proveedores o
las de los productos. Este sistema recibe el nombre de base de datos,
que no es ninguna otra cosa ms que una coleccin de informaciones
tales como el catlogo de los ficheros de una biblioteca, un listn
telefnico o una enciclopedia. Los programas de gestin de base de
datos (Database) estn programados para realizar operaciones que nos
permiten acceder y, eventualmente, modificar los datos almacenados.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 3 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

MANEJO DE LA ANTOLOGIA

Este material se apega mucho con los puntos que cubre nuestro
programa de estudios, si usted nota alguna modificacin en el numero
de captulos cubiertos es debido a que ha sido actualizado y ahora
trabajaremos con MySQL y la intencin es que usted junto con sus
compaeros y su asesor puedan cubrirlos en un semestre resolviendo
problemas tericos y prcticos similares a los planteados a lo largo de
cada una de las unidades.
Esta materia est muy involucrada con el diseo de pginas web y
por lo tanto aconsejo solicitar con su asesor un taller sobre diseo de
pginas de internet.
Muchas son las herramientas para el manejo de las bases de datos
yo he optado por XAMMP y como manejador MySQL pero puede haber
otras basadas en SQL u otra plataforma, si he escogido SQL es porque lo
veo bastante potente en los clculos y bastante sencillo en su manejo.
Finalmente se sugieren una serie de link que son ordenados de
acuerdo a las unidades o captulos vistos y algunos libros que aparecen
ordenados en base a la importancia para el estudio de esta materia.

OBJETIVO(S) GENERAL(ES) DE LA ASIGNATURA


El alumno distinguir las propiedades y elementos para la
elaboracin de una base de datos, como herramienta para resolver
problemas

CRITERIOS Y PROCEDIMIENTOS DE EVALUACIN Y ACREDITACIN

Cuatro exmenes por escrito 80%


Entrega de casos resueltos, prcticas, ejercicios y
Trabajos de investigacin. 20%
Total 100%

ING JUAN ALBERTO VAZQUEZ G.


Pgina 4 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

1. GENERALIDADES
El trmino base de datos fue acuado por primera vez en 1963, en un
simposio celebrado en California.
De forma sencilla podemos indicar que una base de datos no es ms
que un conjunto de informacin relacionada que se encuentra agrupada o
estructurada.
El archivo por s mismo, no constituye una base de datos, sino ms
bien la forma en que est organizada la informacin es la que da origen a
la base de datos. Las bases de datos manuales, pueden ser difciles de
gestionar y modificar. Por ejemplo, en una gua de telfonos no es posible
encontrar el nmero de un individuo si no sabemos su apellido, aunque
conozcamos su domicilio.
Del mismo modo, en un archivo de pacientes en el que la informacin
est desordenada por el nombre de los mismos, ser una tarea bastante
engorrosa encontrar todos los pacientes que viven en una zona
determinada. Los problemas expuestos anteriormente se pueden resolver
creando una base de datos informatizada.
Cuntos artculos se pueden mantener en una tienda virtual?, No
existe lmite. El comerciante, decide inicialmente bajo que categora desea
que se le configuren los parmetros de administracin de su comercio
electrnico por Internet pudiendo elegir entre un comercio pequeo,
mediano o un gran comercio. La principal diferencia radica en el concepto
bajo el cual se debern clasificar los productos. En una tienda pequea,
aunque con tantos productos como desee, tendr un ndice de clasificacin
cmodo y rpido mientras que en una gran tienda deber clasificar sus
artculos en un mayor nmero de subniveles. A medida que el comercio
electrnico crece por Internet, existe la posibilidad de migar la tienda
virtual a una categora superior de clasificacin de artculos se puede
entonces importar de la actual base de datos de artculos sin necesidad de
introducir los productos en uno en uno. Los comercios electrnicos
permiten importar la Base de Datos en colaboracin coordinada con el
administrador de la Red.
Desde el punto de vista informtico, una base de datos es un sistema
formado por un conjunto de datos almacenados en discos que permiten el
acceso directo a ellos y un conjunto de programas que manipulan ese
conjunto de datos.
Desde el punto de vista ms formal, podramos definir una base de
datos como un conjunto de datos estructurados, fiables y homogneos,

ING JUAN ALBERTO VAZQUEZ G.


Pgina 5 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

organizados independientemente en mquina, accesibles a tiempo real,


compartibles por usuarios concurrentes que tienen necesidades de
informacin diferente y no predecible en el tiempo.
La idea general es que estamos tratando con una coleccin de datos
que cumplen las siguientes propiedades:
Estn estructurados independientemente de las aplicaciones y
del soporte de almacenamiento que los contiene.
Presentan la menor redundancia posible.
Son compartidos por varios usuarios y/o aplicaciones.

1.1 Concepto de base de datos


De forma sencilla podemos indicar que una base de datos no es ms
que un conjunto de informacin relacionada que se encuentra agrupada o
estructurada.
Podemos dividir las bases de datos en:
Bases de datos de fichero plano (o ficheros por bloques).
Las bases de datos de fichero plano consisten en ficheros de texto
divididos en filas y columnas. Estas bases de datos son las ms
primitivas y quizs ni tan siquiera merezcan considerarse como
tales. Pueden ser tiles para aplicaciones muy simples, pero no
para aplicaciones medianas o complejas, debido a sus grandes
limitaciones.
Bases de datos relacionales.
Las bases de datos relacionales son las ms populares actualmente.
Su nombre proviene de su gran ventaja sobre las bases de datos de
fichero plano: la posibilidad de relacionar varias tablas de datos
entre s, compartiendo informacin y evitando la duplicidad y los
problemas que ello conlleva (espacio de almacenamiento y
redundancia). Existen numerosas bases de datos relacionales para
distintas plataformas (Access, Paradox, Oracle, Sybase) y son
ampliamente utilizadas. Sin embargo, tienen un punto dbil: la
mayora de ellas no admite la incorporacin de objetos multimedia
tales como sonidos, imgenes o animaciones.
Bases de datos orientadas a objetos.
Las bases de datos orientadas a objetos incorporan el paradigma de
la Orientacin a Objetos (OO) a las bases de datos. La base de datos
est constituida por objetos, que pueden ser de muy diversos tipos, y
sobre los cuales se encuentran definidas unas operaciones. Las

ING JUAN ALBERTO VAZQUEZ G.


Pgina 6 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

bases de datos orientadas a objetos pueden manejar informacin


binaria (como objetos multimedia) de una forma eficiente. Su
limitacin suele residir en su especializacin, ya que suelen estar
diseadas para un tipo particular de objetos (por ejemplo, una base
de datos para un programa de CAD).
Bases de datos hbridas.
Las bases de datos hbridas combinan caractersticas de las bases
de datos relacionales y las bases de datos orientadas a objetos.
Manejan datos textuales y datos binarios, a los cuales se extienden
las posibilidades de consulta. Es una tecnologa reciente y an
existen pocas en el mercado.
Todas las bases de datos cuentan con elementos de almacenamiento
como son en CAMPO (unidad bsica de una base de datos) y el
REGISTRO (conjunto de informacin referida a una misma persona u
objeto).

1.2 Operaciones sobre las bases de datos


En una base de datos se pueden realizar pocas operaciones ahora
veremos cules son estas partiendo de una base de datos que controla el
acceso a una biblioteca.
Insercin:
Insercin Para insertar un nuevo libro o un nuevo lector lo nico que
hay que hacer es aadir al final de la tabla de libros o lectores una nueva
ocurrencia, y cuando se preste un libro a un lector se registra en una tabla
general prestamos. No se puede aadir un registro en la tabla prstamos
si no existe el registro de la tabla lector y de la tabla libro.
Apliquemos otra vez la pura lgica: si no tengo un libro no puedo
prestarlo y si una persona no est registrada en la biblioteca no le
prestarn ningn libro.
Borrado:
Borrado Se puede borrar sin ningn problema el registro de lectura.
Para borrar un lector o un libro hay que actualizar la informacin del
prstamo, eliminando otras apariciones de ese libro o ese lector.
En estos apuntes vamos a tratar de entender cmo funciona MySql y
este gestor de bases de datos es un gestor de tipo relacional, pero existen
otros tipos de gestores que definen las entidades y estructuran las
conexiones de una manera diferente.
Supongo que los que estn leyendo esto se inician en el tema de las
bases de datos, por lo tanto no me extender con los otros tipos de
gestores, creo que es mejor comprender como funciona de momento ste.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 7 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Gestor jerrquico
Su estructura bsica es el rbol. Va a tener un nodo padre y una serie
de nodos hijos, la conexin se hace eligiendo quien va a ser el padre y
quien va a ser el hijo.
El rbol se puede implementar mediante:
Registros variables: Son registros que van creciendo segn se
aumente el archivo.
Cadenas de punteros.
Operaciones que se pueden realizar
Insercin:
Insercin Insertar un padre se hace sin problemas. No se puede
insertar un hijo sin estar asociado a un padre. La insercin va bien
siempre que no se quiera insertar un hijo que no tenga padre.
Borrado:
Borrado Si se borra un padre se borran todos sus descendientes.
Modificacin:
Modificacin Si se modifica un hijo hay que modificarlo en todos los
rboles en que se encuentre.
El problema de esta implementacin es que los rboles solo permiten
representar una estructura de uno a muchos, por tanto no es eficiente
cuando se tiene que implementar una estructura de muchos a muchos.
Gestor en grafo
Se implementa mediante cadenas de punteros. Contiene dos tipos de
conjuntos:
Conjunto de registros: libros, lectores.
Conjunto de ligas: prstamos (Cantidad).
Una ocurrencia de un tipo de registro especfico puede tener cualquier
nmero de superiores inmediatos. Se pueden representar relaciones de
muchos a muchos.
Su desventaja ms importante es su gran complejidad en la realizacin
de los algoritmos y la cantidad de memoria que hay que reservar para los
punteros.
Un sistema de gestin de base de datos (SGBD) tiene como funciones:
Permitir la perfecta definicin de todos los datos. Es decir debe
permitir incorporar a las estructuras todos aquellos objetos necesarios
para completarlas y debe permitir incluir todos los atributos necesarios
para definir a los objetos.
Debe permitir la manipulacin de los datos: operaciones de
intercambio de datos entre las tablas que pueden ser de consulta o de
puesta al da (insercin, modificacin supresin).

ING JUAN ALBERTO VAZQUEZ G.


Pgina 8 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Debe establecer controles de seguridad para esos datos garantizando


que slo los usuarios autorizados puedan efectuar operaciones correctas
bien sobre toda la base de datos o sobre algunas tablas.
Debe permitir los accesos concurrentes. El principal objetivo de la
implantacin de una base de datos es poner a disposicin de un gran
nmero de usuarios un conjunto integrado de datos y que estos datos
puedan ser manipulados por los diferentes usuarios. El SGBD debe
garantizar que esos datos seguirn siendo coherentes despus de las
diversas manipulaciones.
Una mala concepcin a la hora de disear una base de datos puede dar
origen a:
La redundancia de datos.
datos Existira redundancia de datos por ejemplo,
si no cresemos una tabla de lectores y nos visemos obligados a repetir
en la tabla libros los datos del lector cada vez que prestamos un libro.
Incoherencia en los datos.
datos Si despus de manipular los datos las
consultas nos devolviesen definiciones errneas. Por ejemplo, si no se
estableciese como clave externa de la tabla prstamos la clave primaria
del libro, en cuanto empezsemos a dejar libros a los lectores sobrevendra
un caos, pues sera imposible determinar quin tiene qu libro.
Prdida de datos.
datos Por ejemplo, si la supresin de una lnea en la tabla
libros (dar de baja un libro) supusiese tambin la eliminacin de todos los
registros de aquellos lectores que han ledo el libro. A este
comportamiento se le denomina "comportamiento anormal de las tablas".
Estado de la tabla.
tabla Decimos que una tabla se encuentra en estado de
primera forma, si todas columnas de la tabla contienen valores atmicos y
decimos que un valor es atmico cundo es indivisible. Por ejemplo, si en
la tabla libros dedicsemos una columna para anotar el ttulo del libro y
del autor, o en la tabla lectores dedicsemos una columna para anotar la
direccin completa del usuario (calle, nmero y piso) las tablas no
estaran en primera forma.

1.3 Vistas de una base de datos


Las vistas son una especie de ventanas que permiten ver los datos
almacenados en las tablas base, pero estructurados, organizados o
formateados de otra manera.
Una vista implementa una seleccin de varias columnas de una o
diferentes tablas. Una vista no almacena datos; slo los presenta en forma
dinmica. Se utilizan para simplificar la visin del usuario sobre un

ING JUAN ALBERTO VAZQUEZ G.


Pgina 9 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

conjunto de tablas, haciendo transparente para l la forma de obtencin


de los datos.
Las vistas no tienen una copia fsica de los datos, son consultas a los
datos que hay en las tablas, por lo que si actualizamos los datos de una
vista, estamos actualizando realmente la tabla, y si actualizamos la tabla
estos cambios sern visibles desde la vista (con ciertas excepciones que
veremos ms adelante).
Podemos clasificar las vistas en dos tipos:
Simples: son aquellas que realizan operaciones sobre una nica
tabla.
Complejas: aquellas que realizan operaciones sobre mltiples
tablas.
Una vista de base de datos es un resultado de una consulta SQL de
una o varias tablas; tambin se le puede considerar una tabla virtual.
La nica diferencia es que slo se almacena de ellas la definicin, no
los datos. Los datos que se recuperan mediante una consulta a una vista
se presentarn igual que los de una tabla. De hecho, si no se sabe que se
est trabajando con una vista, nada hace suponer que es as. Al igual que
sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar
datos en una vista. Aunque siempre es posible seleccionar datos de una
vista, en algunas condiciones existen restricciones para realizar el resto
de las operaciones sobre vistas.
Una vista se especifica a travs de una expresin de consulta (una
sentencia SELECT) que la calcula y que puede realizarse sobre una o ms
tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un
nmero cualquiera de vistas.
La mayora de los SGBD soportan la creacin y manipulacin de
vistas.
La vista es un objeto de la base de datos que es un acceso recurrente a
tu tabla, que se genera por dos razones principales para tener seguridad
por si quieres ocultar alguna informacin de la tabla adems de que es
solo una consulta, por lo tanto no puedes modificar los datos de la tabla. Y
la segunda razn es por si tienes una consulta que utilizas mucho, la
guardas como vista y puedes tenerla disponible en cualquier momento.
En s tambin es conocida como una tabla temporal ya que solo se
genera si la tabla es consultada.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 10 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Para hacer una vista es


CREATE VIEW ejemplo
AS
SELECT nombre, edad, sueldo
FROM trabajador
WHERE sexo = 'm'
y para ejecutar la vista solo tienes que consultarla:
SELECT * FROM ejemplo;
Si te das cuenta ejemplo es la vista recurrente a la tabla de trabajador
la cual extrae solo tres atributos de dicha tabla, y tambin puedes darle
tratamiento de tabla, por ejemplo:
SELECT nombre, sueldo
FROM ejemplo
WHERE sueldo >20000;
Bueno es suficiente de teora vamos a instalar nuestro gestor de base
de datos para poder trabajar con estas sentencias.
Cuando deseamos trabajar con MySQL es necesario antes instalarlo,
este software viene incluido en el paquete XAMPP y usted de manera
automtica tiene SQL y podr
trabajar, Hagmoslo ms
detenidamente y con imgenes, le
parece.
Usted deber instalar XAMPP
y posteriormente ejecutar el
control panel de XAMPP. Esto lo
hacemos para poder correr
Apache y de este modo visualizar
MySQL en el navegador. Si todo
ha salido bien usted tendr una
ventana similar a la que se
muestra en la figura y podr
inicializar MySQL y Apache.
Tras haber instalado e inicializado XAMPP debemos localizar y editar
en el fichero C:\xampplite\phpMyAdmin\config.inc.php las siguientes lneas:
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 11 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

La primera lnea indica que aparecer un cuadro de dialogo al inicio de


la sesin solicitando el nombre de usuario y contrasea, en la segunda
(esta lnea no se puede cambiar) y tercera lnea le damos los parmetros
solicitados anteriormente por ejemplo el usuario root tiene por contrasea
123456 y la ltima lnea es para que siempre pida contrasea.
Ahora si vamos al navegador y escribimos la direccin
http://127.0.0.1/phpmyadmin/ y luego de dar Enter nos pedir el login y
contrasea y cuando usted haya llenado los cuadros entonces vera la
siguiente ventana en el explorador de Internet.

Trabajaremos sobre SQL por eso lo invito a darle clic en ese lugar.
Pruebe ahora si con las sentencias que haba citado anteriormente y
que corramos sobre SQL.
Si les arrojo un error no se preocupen, tanto su maestro como yo ya
sabamos que iba a mandar error debido a que no existe an una base de
datos, y aun cuando existiera (suponiendo que usted la ha creado, ya) no
contiene datos.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 12 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

1.4 Esquemas e instancias


Con el paso del tiempo la informacin que se va acumulando y
desechando en la base de datos, ocasiona que est cambie.
Denominaremos instancia al estado que presenta una base de datos en
un tiempo dado. Vemoslo como una fotografa que tomamos de la base de
datos en un tiempo t, despus de que transcurre el tiempo t la base de
datos ya no es la misma.
Llamaremos de igual modo esquema a la descripcin lgica de la base
de datos, proporciona los nombres de las entidades y sus atributos
especificando las relaciones que existen entre ellos. Es un banco en el que
se inscriben los valores que irn formando cada uno de los atributos. El
esquema no cambia los que varan son los datos y con esto tenemos una
nueva instancia.
Ejemplo:
Considerando el ejemplo del vendedor que vende artculos, esquema e
instancia segn nuestro ejemplo, quedara:
Esquema:
{Vendedor: Nombre, puesto, salario, RFC}
{Articulo: Clave, costo, descripcin}
Instancia:

Como podemos observar el esquema nos muestra la estructura en el


cual se almacenaran los datos, en este caso en registros cuyos nombres de
campos son: por parte del vendedor (Nombre, puesto, salario, RFC) y por
el artculo (Clave, costo, descripcin); La instancia representa a una serie
de datos almacenados en los registros establecidos por el esquema, estos
datos varan, no permanecen fijos en el tiempo.
Una base de datos relacional es un conjunto de relaciones
normalizadas. Para representar el esquema de una base de datos
relacional se debe dar el nombre de sus relaciones, los atributos de stas,
los dominios sobre los que se definen estos atributos, las claves primarias
y las claves ajenas.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 13 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

El esquema de la base de datos de la empresa inmobiliaria es el


siguiente:
OFICINA (Onum, Calle, Area, Poblacin, Telfono, Fax)
(Enum, Nombre, Apellido, Direccin, Telfono, Puesto, Fecha_nac, Salario,
PLANTILLA
DNI, Onum)
INMUEBLE (Inum, Calle, Area, Poblacin, Tipo, Hab, Alquiler, Pnum, Enum, Onum)
INQUILINO (Qnum, Nombre, Apellido, Direccin, Telfono, Tipo_pref, Alquiler_max)
PROPIETARIO (Pnum, Nombre, Apellido, Direccin, Telfono)
VISITA (Qnum, Inum, Fecha, Comentario)
En el esquema, los nombres de las relaciones aparecen seguidos de los
nombres de los atributos encerrados entre parntesis. Las claves
primarias son los atributos subrayados. Las claves ajenas se representan
mediante los siguientes diagramas referenciales.
PLANTILLA OFICINA : Oficina a la que pertenece el empleado.
INMUEBLE PROPIETARIO : Propietario del inmueble.
INMUEBLE PLANTILLA : Empleado encargado del inmueble.
INMUEBLE OFICINA : Oficina a la que pertenece el inmueble.
VISITA INQUILINO : Inquilino que ha visitado el inmueble.
VISITA INMUEBLE : Inmueble que ha sido visitado.
A continuacin se muestra un estado (instancia) de la base de datos
cuyo esquema se acaba de definir.
OFICINA
Onum Calle Area Poblacin Telfono Fax
O5 Enmedio, 8 Centro Castelln 964 201 240 964 201 340
O7 Moyano, s/n Centro Castelln 964 215 760 964 215 670
O3 San Miguel, 1 Villarreal 964 520 250 964 520 255
O4 Trafalgar, 23 Grao Castelln 964 284 440 964 284 420
O2 Cedre, 26 Villarreal 964 525 810 964 252 811

ING JUAN ALBERTO VAZQUEZ G.


Pgina 14 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

PLANTILLA
Enum Nombre Apellido Direccin Telfono Puesto Fecha_nac Salario DNI Onum

EL21 Amelia Pastor Magallanes, 15 964 284 560 Director 12/10/62 30000 39432212E O5

Castelln

EG37 Pedro Cubedo Bayarri, 11 964 535 690 Supervisor 24/3/57 18000 38766623X O3

Villarreal

EG14 Luis Collado Borriol, 35 964 522 230 Administ. 9/5/70 12000 24391223L O3

Villarreal

EA9 Rita Renau Casalduch, 32 964 257 550 Supervisor 19/5/60 18000 39233190F O7

Castelln

EG5 Julio Prats Melilla, 23 964 524 590 Director 19/12/50 24000 25644309X O3

Villarreal

EL41 Carlos Baeza Herrero, 51 964 247 250 Supervisor 29/2/67 18000 39552133T O5

Castelln

INMUEBLE
Inum Calle Area Poblacin Tipo Hab Alquiler Pnum

IA14 Enmedio, 128 Centro Castelln Casa 6 600 P46

IL94 Riu Ebre, 24 Ronda Sur Castelln Piso 4 350 P87

IG4 Sorell, 5 Grao Castelln Piso 3 300 P40

IG36 Alicante,1 Segorbe Casa 3 325 P93

IG21 San Francisco, 10 Vinaroz Piso 5 550 P87

IG16 Capuchinos, 19 Rafalafena Castelln Piso 4 400 P93

PROPIETARIO
Pnum Nombre Apellido Direccin Telfono

P46 Amparo Felip Asensi 24, Castelln 964 230 680

P87 Manuel Obiol Av. Libertad 15, Vinaroz 964 450 760

P40 Alberto Estrada Av. del Puerto 52, Castelln 964 200 740

P93 Yolanda Robles Pursima 4, Segorbe 964 710 430


INQUILINO
Qnum Nombre Apellido Direccin Telfono Tipo Alquiler

Q76 Juan Felip Barcel 47, Castelln 964 282 540 Piso 375

Q56 Ana Grangel San Rafael 45, Almazora 964 551 110 Piso 300

Q74 Elena Abaso Navarra 76, Castelln 964 205 560 Casa 700

Q62 Alicia Mori Alloza 45, Castelln 964 229 580 Piso 550

ING JUAN ALBERTO VAZQUEZ G.


Pgina 15 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

VISITA
Qnum Inum Fecha Comentario

Q56 IA14 24/11/99 muy pequeo

Q76 IG4 20/10/99 muy lejos

Q56 IG4 26/11/99

Q62 IA14 14/11/99 no tiene saln

Q56 IG36 28/10/99

1.5 Archivos, registros y campos


El primer paso para crear una base de datos, es planificar el tipo de
informacin que se quiere almacenar en la misma, teniendo en cuenta dos
aspectos: la informacin disponible y la informacin que necesitamos.
La planificacin de la estructura de la base de datos, en particular de
las tablas, es vital para la gestin efectiva de la misma. El diseo de la
estructura de una tabla consiste en una descripcin de cada uno de los
campos que componen el registro y los valores o datos que contendr cada
uno de esos campos.
Los campos son los distintos tipos de datos que componen la tabla, por
ejemplo: nombre, apellido, domicilio. La definicin de un campo requiere:
el nombre del campo, el tipo de campo, el ancho del campo, etc.
Los registros constituyen la informacin que va contenida en los
campos de la tabla, por ejemplo: el nombre del paciente, el apellido del
paciente y la direccin de este. Generalmente los diferente tipos de
campos que su pueden almacenar son los siguientes: Texto (caracteres),
Numrico (nmeros), Fecha / Hora, Lgico (informaciones lgicas si/no,
verdadero/falso, etc., imgenes.
En resumen, el principal aspecto a tener en cuenta durante el diseo
de una tabla es determinar claramente los campos necesarios, definirlos
en forma adecuada con un nombre especificando su tipo y su longitud y
por lo mismo nos detendremos un momento para definir los conceptos
empleados en las bases de datos.
Tablas:
Tablas unidad donde crearemos el conjunto de datos de nuestra base
de datos. Estos datos estarn ordenados en columnas verticales. Aqu
definiremos los campos y sus caractersticas. Ms adelante veremos qu
es un campo.
Consultas:
Consultas aqu definiremos las preguntas que formularemos a la base
de datos con el fin de extraer y presentar la informacin resultante de
diferentes formas (pantalla, impresora...)
ING JUAN ALBERTO VAZQUEZ G.
Pgina 16 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Formulario:
Formulario elemento en forma de ficha que permite la gestin de los
datos de una forma ms cmoda y visiblemente ms atractiva.
Informe:
Informe permite preparar los registros de la base de datos de forma
personalizada para imprimirlos.
Campo:
Campo unidad bsica de una base de datos. Un campo puede ser, por
ejemplo, el nombre de una persona. Los nombres de los campos, no
pueden empezar con espacios en blanco y caracteres especiales. No
pueden llevar puntos, ni signos de exclamacin o corchetes. Si pueden
tener espacios en blanco en el medio. La descripcin de un campo, permite
aclarar informacin referida a los nombres del campo. El tipo de campo,
permite especificar el tipo de informacin que cargaremos en dicho campo,
esta puede ser:

TIPO NUMERICO.
BIT: es un sinnimo de TINYINT(1).
TINYINT[(M)]: Un nmero entero muy pequeo. El rango suscrito va
de -128 a 127. El rango no suscrito va de 0 a 255.
BOOL, BOOLEAN: Estos tipos son sinnimos de TINYINT(1). Un
valor para cero es considerado falso. Valores que no sean cero son
considerados verdad.
SMALLINT: Un nmero entero pequeo. El rango suscrito va de -
32768 a 32767. El rango no suscrito va de 0 a 65535.
MEDIUMINT: Un nmero entero de tamao medio. El rango suscrito
va de -8388608 a 8388607. El rango no suscrito va de 0 a 16777215.
INT: Un nmero entero de tamao normal. El rango suscrito va de -
2147483648 to 2147483647. El rango no suscrito va de 0 a 4294967295.
INTEGER: Este tipo es sinnimo de INT.
BIGINT: Un nmero entero grande. El rango suscrito va de -
9223372036854775808 a 9223372036854775807. El rango no suscrito va
de 0 a 18446744073709551615.
FLOAT: Un nmero punto flotante pequeo (simple precisin). Los
valores van de 3.402823466E+38 a -1.175494351E-38, 0, y 1.175494351E-
38 a 3.402823466E+38.
DOUBLE: Un nmero punto flotante normal (doble precisin). Los
valores van de 1.7976931348623157E+308 a -2.2250738585072014E-308,
0, y 2.2250738585072014E-308 a 1.7976931348623157E+308.
DECIMAL: El nmero mximo de dgitos (M) para DECIMAL es 64.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 17 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

TIPO FECHAS Y HORA.


HORA
DATE: Una Fecha. El rango es 1000-01-01 a 9999-12-31. Los valores
de fecha se muestran con el formato YYYY-MM-DD (Ao-Mes-Da).
TIME: Una Hora. El rango es -838:59:59 a 838:59:59. Los valores de
hora se muestran con el formato HH:MM:SS.
DATETIME: Una combinacin de Fecha y Hora. El rango es 1000-01-
01 00:00:00 a 9999-12-31 23:59:59. Los valores fecha hora son mostrados
en formato YYYY-MM-DD HH:MM:SS.
TIMESTAMP: Una Marca de Tiempo. El rango es 1970-01-01 00:00:01
UTC hasta parcialmente el ao 2037. Una columna TIMESTAMP es til
para grabar la fecha y hora de una operacin INSERT o UPDATE.
YEAR: Un Ao. Los valores de ao son mostrados en formato de dos
dgitos o de cuatro. El rango de valores para un dgito de cuatro es 1901 a
2155. Para los dos dgitos, el rango es 70 a 69, representando aos desde
1970 a 2069. Para todas las columnas de fecha y hora, podemos asignar
tambin los valores usando strings o nmeros.

PARA CADENAS DE CARACTERES


CHAR(): Es un string de longitud fija que es principalmente usado
cuando los datos no van a variar mucho en su longitud. Toma valores de 0
a 255 de longitud de caracteres. Cuando almacenamos valores CHAR ellos
estn rellenos correctamente con espacios de la longitud especfica.
Cuando obtenemos valores CHAR, los espacios finales son eliminados.
VARCHAR(): Es una variable string de longitud y es usada
principalmente cuando los datos pueden variar en longitud. Toma valores
de 0 a 255 de longitud de caracteres. Los valores VARCHAR no son
rellenados cuando son ms cortos.
TINYTEXT, TINYBLOB: Un string con una longitud mxima de 255
caracteres.
TEXT: Las columnas TEXT son tratadas como caracteres string
(strings no binarios). Contiene una longitud mxima de 65535 caracteres.
BLOB: Es el acrnimo de Binary Large OBject (Objeto Binario
Grande). Puede tener un montn de datos variables. Las columnas BLOB
son tratadas como string de bytes (string binarios). Contiene una longitud
mxima de 65535.
MEDIUMTEXT, MEDIUMBLOB: Tiene una longitud mxima de
16777215 caracteres.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 18 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

LONGTEXT, LONGBLOB: Tiene una longitud mxima de


4294967295 caracteres.
BINARY: Es similar al tipo CHAR. Almacena el valor como string de
byte binario en vez de como un caracter string no binario.
VARBINARY: Es similar al tipo VARCHAR. Almacena el valor como
un string de bytes binario en vez de como un caracter string no binario.
ENUM(): Una enumeracin. Cada columna puede tener uno de los
posibles valores especificados. Puede almacenar solo uno de los valores
que estn declarados en la lista especfica contenida en los parntesis ( ).
La lista ENUM tiene un alcance de ms de 65535 valores.
SET(): Un set. Cada columna puede tener ms de uno de los posibles
valores especificados. Contiene ms de 64 objetos de lista y puede
almacenar ms de una opcin. Los valores SET son representados
internamente como nmeros enteros.
Si CHAR y VARCHAR son usados en la misma tabla, entonces MySQL
cambiar automticamente CHAR a VARCHAR por razones de
compatibilidad. Los parntesis ( ) permiten introducir un mximo nmero
de caracteres que sern usados en la columna.
Registro:
Registro es el conjunto de informacin referida a una misma persona
u objeto. Un registro vendra a ser algo as como una ficha.

ACTIVIDADES DE APRENDIZAJE
Construya con su asesor y sus compaeros un servidor de Base de
datos en MySQL.

AUTOEVALUACION

1) Mencione por lo menos 5 actividades donde se haga uso de la


bases de datos.
2) Cul es la diferencia entre una base de datos relacional y una
orientada a objetos?
3) A que se llama esquema y a que instancia?
4) Mencione a que se le llama Vista en una base de datos?
5) Mencione por lo menos 10 tipos de datos que trabaje MySQL

ING JUAN ALBERTO VAZQUEZ G.


Pgina 19 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

2. CREACIN DE UNA BASE DE DATOS


Una base de datos (cuya abreviatura es BD) es una entidad en la cual
se pueden almacenar datos de manera estructurada, con la menor
redundancia posible. Diferentes programas y diferentes usuarios deben
poder utilizar estos datos. Por lo tanto, el concepto de base de datos
generalmente est relacionado con el de red ya que se debe poder
compartir esta informacin. De all el trmino base. "Sistema de
informacin" es el trmino general utilizado para la estructura global que
incluye todos los mecanismos para compartir datos que se han instalado.
Una base de datos proporciona a los usuarios el acceso a datos, que
pueden visualizar, ingresar o actualizar, en concordancia con los derechos
de acceso que se les hayan otorgado. Se convierte ms til a medida que la
cantidad de datos almacenados crece.
Una base de datos puede ser local, es decir que puede utilizarla slo un
usuario en un equipo, o puede ser distribuida, es decir que la informacin
se almacena en equipos remotos y se puede acceder a ella a travs de una
red.
La principal ventaja de utilizar bases de datos es que mltiples
usuarios pueden acceder a ellas al mismo tiempo.
Rpidamente surgi la necesidad de contar con un sistema de
administracin para controlar tanto los datos como los usuarios. La
administracin de bases de datos se realiza con un sistema llamado
DBMS (Database management system [Sistema de administracin de
bases de datos]). El DBMS es un conjunto de servicios (aplicaciones de
software) para administrar bases de datos, que permite:
un fcil acceso a los datos
el acceso a la informacin por parte de mltiples usuarios
la manipulacin de los datos encontrados en la base de datos
(insertar, eliminar, editar)
El DBMS puede dividirse en tres subsistemas:
El sistema de administracin de archivos: para almacenar
informacin en un medio fsico.
El DBMS interno: para ubicar la informacin en orden
El DBMS externo: representa la interfaz del usuario

ING JUAN ALBERTO VAZQUEZ G.


Pgina 20 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Los principales sistemas de administracin de bases de datos son:


Borland Paradox
Filemaker
IBM DB2
Ingres
Interbase
Microsoft SQL server
Microsoft Access
Microsoft FoxPro
Oracle
Sybase
MySQL
PostgreSQL
mSQL
SQL Server 11

2.1 Generalidades acerca de MySQL


MySQL Server es la base de datos de cdigo fuente abierto ms usada
del mundo desarrollado y proporcionado por MySQL AB. MySQL AB es
una empresa cuyo negocio consiste en proporcionar servicios en torno al
servidor de bases de datos MySQL.
Su origen se debi a la bsqueda por parte de los fundadores de crear
un manejador de bases de datos que fuera "rpido", todava ms rpido
que mSQL. As surgi MySQL, primero como un producto de la empresa y
despus como software de dominio pblico.
El servidor MySQL fue desarrollado originalmente para manejar
grandes bases de datos mucho ms rpido que las soluciones existentes y
ha estado siendo usado exitosamente en ambientes de produccin
sumamente exigentes por varios aos. Aunque se encuentra en desarrollo
constante, el servidor MySQL ofrece hoy un conjunto rico y til de
funciones. Su conectividad, velocidad, y seguridad hacen de MySQL un
servidor bastante apropiado para acceder a bases de datos en Internet.
A continuacin se mencionan algunas de las ms importantes
caractersticas del SGBD:
 Escrito en C y C++
 Trabaja bajo diferentes plataformas: AIX 4x 5x, Amiga, BSDI,
Digital Unix 4x, FreeBSD 2x 3x 4x, HP-UX 10.20 11x, Linux 2x,
Mac OS, NetBSD, Novell NetWare 6.0 , OpenBSD 2.5, OS/2,

ING JUAN ALBERTO VAZQUEZ G.


Pgina 21 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

SCO OpenServer, SCO UnixWare 7.1.x, SGI Irix 6.x, Solaris 2.5,
SunOS 4.x, Tru64 Unix y Windows 9x, Me, NT, 2000, XP, 2003
 Desarrollo de librerias para C, C++, Eiffel, Java, Perl, PHP,
Python, Ruby, y Tcl
 Procesos MultiHilo, es decir capacidad de trabajar servidores con
varios procesadores.
 Velocidad cuando se manipula datos.
 Velocidad en la utilizacin de procesos de optimizacin
 Soporta muchos tipos de columnas para las tablas: FLOAT,
DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME,
DATETIME, TIMESTAMP, YEAR, SET, ENUM y OpenGIS
(Modelo Geomtrico no visto en este material).
 Manejo de la memoria a travs de manejo de cache

2.2 Creacin de un esquema


El diseo general de la base de datos se llama esquema de la base de
datos. Los esquemas se alteran muy raras veces, o nunca.
En mysql create schema es sinonimo de create database.
database
En MySQL pueden existir varias bases de datos, pero solo podremos
estar trabajando con una a la vez, el modo para saber cuntas bases de
datos existen es tecleando
show databases;
En la pestaa de MySql. Obsrvese como cada uno de los comandos o
instrucciones de MySql terminan con un punto y coma (;).
Antes de crear la base datos es til definir las tablas que se utilizaran.
Supngase que se desea crear un proyecto en donde se trabajar con
una base de datos para calificaciones.
Tabla: estudiante
Nombre Sexo Nmero _ estudiante
Ivo H. Pineda M 437926292
Tabla: calificaciones
Nmero _ estudiante Identificador_examen Calificacin
437926292 Q 100
Tabla: Tipo de examen
Identificador_examen Fecha Tipo_examen
1 2004-03-10 Q
Tabla: Ausencias
Numero_estudiante Fecha
43792629 2004-03-10

ING JUAN ALBERTO VAZQUEZ G.


Pgina 22 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

De la creacin de las tablas anteriores se puede observar como hemos


relacionado campos de las tablas de manera que las consultas para
obtener informacin se pueda hacer de varias maneras una de ellas podra
ser conociendo el identificador_examen y fecha usted puede saber que
persona se present a un examen y obtener su calificacin. Digamos que
conociendo el nmero_estudiante usted podr consultar otras tablas pues
de alguna manera se relacionan los campos de las tablas con el nmero de
estudiante.
Una vez que tenemos las tablas definidas el proceso siguiente ser su
creacin usando MySQL
Ya en el capitulo anterior hemos hecho uso de XAMPP para accesar a
la interfaz de la base de datos, lo hemos hecho tecleando la direccin
http://127.0.0.1/phpmyadmin luego de haber corrido XAMPP y tambin
mencionamos que desde la pestaa SQL bamos a ir realizando las
practicas; ahora y luego de haber arrancado el servidor XAMPP hagamos
el intento por encontrarnos en la ventana que a continuacin se muestra y
luego de haberlo conseguido siga al pie de la letra lo que se indica en este
material bibliogrfico.

Con un cuadro de color negro hemos marcado la pestaa en la


estaremos insertando los comandos que esteremos viendo en este material
y en el cuadro de color rojo mostramos lo que sucede luego de crear la base
de datos estudiantes_db, lo hemos hecho insertando el comando
create database estudiante_db;
y posteriormente dando clic en el botn continuar.
Si de igual modo insertamos la instruccin
use estudiante_db;
en el cuadro de texto y volvemos a dar clic en continuar nos ser
informado que no existe ninguna tabla en la base de datos.
Introduciremos las tablas de las calificaciones que habamos
mencionado anteriormente introduciendo cdigo en la pestaa SQL.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 23 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Tabla 1: estudiantes.
CREATE TABLE estudiante
( nombre VARCHAR(20) not null,
sexo ENUM('F','M') NOT NULL,
numero_estudiante INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
KEY);

Tabla 2: Tipo Examen.


CREATE TABLE clase_examen
( tipo_examen INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
fecha DATE NOT NULL,
type ENUM('T','Q') NOT NULL);
NULL);

Tabla 3: Calificaciones
CREATE TABLE calificaciones
( numero_estudiante INT UNSIGNED NOT NULL,
tipo_examen INT UNSIGNED NOT NULL,
calificacion INT NOT NULL ,
PRIMARY KEY (numero_estudiante, tipo_examen));

Tabla 4: Ausencias
CREATE TABLE ausencias
( numero_estudiante INT UNSIGNED NOT NULL,
fecha DATE NOT NULL, PRIMARY KEY (numero_estudiante,fecha));

2.3 Visualizacin de un esquema


En la seccin anterior hemos creado las tablas y aun cuando nuestra
interfaz grafica nos permite visualizar los datos es posible que usted
quiera ver la estructura de la base.
Veremos en esta seccin instrucciones que nos informen de las tablas y
el contenido de ellas, as como de la estructura de la base de datos.
El comando
show tables;
muestra la cantidad de tablas existente, sin
embargo no hemos obtenido informacin sobre
los datos que pueden almacenar cada una de las
tablas de la base de datos.
Para nuestro caso se muestra en el primer rengln el nombre de la
base de datos (estudiantes_db) que se ha definido al inicio de este
captulo, en los renglones siguientes se han mostrado las tablas que
conforman a la base de datos creada.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 24 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Si quisiramos ahora obtener informacin sobre algunas de las tablas


de la base de datos tendramos que escribir en la lnea de comandos de
SQL lo siguiente:
Describe ausencias;
y se nos mandara informacin de la estructura de los campos que
integran la tabla ausencia por ejemplo.

Los datos que en la tabla se muestran corresponde al campo en el


primer lugar (numero_estudiante y fecha) y el tipo de datos que en el
primer campo se trata de un valor entero que puede contener hasta 10
dgitos, no contiene signo, debe de contener datos y es una clave primaria
declarada desde la tabla estudiante.
El segundo de los datos es similar al primero, en lo nico que cambia
es que ahora no es un entero, sino un dato del tipo fecha(date).
Si ahora damos
describe estudiante;
estudiante;

en la seccin de comandos de SQL.


Con este comando se nos informa: que el nombre es un dato de tipo
caracteres con un espacio de 20, no es clave primaria, en el sexo podemos
encontrar M o F tampoco es clave primaria y finalmente en el numero de
estudiante tenemos 10 caracteres y es clave primaria como se haba
mencionado anteriormente, en este tipo de tabla se ha agregado la
columna de autoincremento, por lo que cuando agreguemos registros
tendremos muy en cuenta esta tabla.
En la seccin siguiente estaremos mostrando como agregar datos
(registros) a cada una de las tablas.

2.4 Adicin de registros


Existen varias formas de introducir datos en las tablas o lo que es lo
mismo aadir nuevos registros, la forma ms lenta es hacerlo de manera
manual utilizando el comando INSERT, para esto usted deber teclear en
la lnea de comando de mysql de la siguiente manera

ING JUAN ALBERTO VAZQUEZ G.


Pgina 25 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

INSERT INTO estudiante


estudiante VALUES ('Arruti Yarc
Adriana','F',NULL),('Contreras Vazquez Misael','M',NULL);
Si usted as lo hace no se insertara ningn dato porque el segundo de
los datos, (Contreras Vzquez Misael) contiene ms de los 20 caracteres
que han sido destinados para la tabla estudiante, esto le ser informado
luego de teclear el botn continuar.
Modificaremos un poco nuestro comando tecleando en su lugar
INSERT INTO estudiante VALUES
VALUES ('Arruti Yarce
Adriana','F',NULL),('Contreras Vazquez M','M',NULL)

El formato general de el comando de insercin de valores en una tabla


es:
INSERT INTO nombre_tabla (nombre_col1,nombre_col2,.)
VALUES(valor1,valor2,);
Otra alternativa es utilizar el comando carga informacin de la tabla
que se encuentra en un archivo de texto (txt), donde cada campo o
columna de la tabla debe estar separado por un espacio de tabulador y la
posicin de cada campo y su tipo se debe respetar.
LOAD DATA LOCAL INFILE "c:\
"c:\db.txt" INTO TABLE estudiante
En este caso los datos contenidos en el archivo c:\ c:\db.txt son los
siguientes:
juan alberto vaz m
Rocio sanchez f
Juan Carlos Tapia m
En este momento se asume que ud. ha creado satisfactoriamente la
base datos, creado y cargado informacin en cada una de las tablas que
conforman la base de datos.
En todo momento ud. tendr la oportunidad de conocer la estructura
de cada tabla definida previamente, para esto se recomienda utilizar el
comando DESCRIBE, seguido del nombre de la tabla. Para obtener
informacin de esta tabla en cuestin usted puede hacer uso de la
clusula SELECT. Usted puede utilizar operadores de comparacin para
realizar consultas a la base de datos.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 26 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

La instruccin select es la fundamental del lenguaje SQL y por tanto


de MySQL. Esta instruccin permite realizar consultas sobre la base de
datos. El formato bsico de la instruccin es:
select ListaDecampos from tablas where condicin;
El campo especial * sirve para representar todos los campos de una
tabla.

De este modo el comando


SELECT nombre FROM estudiante
WHERE sexo="F";
sexo="F";
Nos devolver el campo nombre de la tabla estudiante en los cuales el
sexo sea F.

Por otro lado el comando


SELECT * FROM estudiante
WHERE sexo="M"
sexo="M";
Nos devolver todos (*) los campos de la tabla estudiante en los cuales
el sexo sea M.

Finalmente el comando
SELECT * FROM estudiante
Nos devolver todos (*) los campos de la tabla estudiante

ING JUAN ALBERTO VAZQUEZ G.


Pgina 27 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ACTIVIDADES DE APRENDIZAJE
Construya con su asesor y sus compaeros una Base de datos en
MySQL y llene los campos con los registros correspondientes.

AUTOEVALUACION

1) Mencione y explique la utilidad de los comandos:


a. CREATE databases
b. CREATE TABLE
c. DESCRIBE
2) Explique la instruccin
a. SELECT * FROM estudiante
WHERE numero_estudiante="
numero_estudiante="2
="2";
3) Agregue otros 5 registros a la tabla estudiante utilizando
instrucciones.
4) Agregue 5 registros a la tabla estudiantes utilizando un archivo.
5) Muestre la tabla estudiante luego de haber agregado los
registros.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 28 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

3. MODIFICACIN DE UNA BASE DE DATOS


Al inicio o arranque de un sistema de informacin construido alrededor
de una base de datos, es muy comn que la primera vez que se almacenan
datos contenga mucha informacin errnea y por lo tanto ocupe de
mecanismos o instrucciones que permitan corregir, modificar, editar o
eliminar esta informacin.
La modificacin y eliminacin son dos de los procesos ms comunes
que se realizan con tablas en bases de datos, se le conoce como
actualizacin, edicin o modificacin de los datos o registros o renglones
contenidos en una tabla.
Las instrucciones UPDATE y DELETE son las instrucciones en SQL
especializadas en esta rea de procesos comunes con tablas, y son estas
instrucciones las que se desarrollarn en esta unidad.

3.1 Edicin de registros


Hasta ahora ya conocemos la forma de introducir datos en las tablas
que componen nuestra base de datos, pero que pasa cuando echamos un
vistazo, y nos damos cuenta de que hemos cometido algn error en alguno
de los datos, qu hacemos para arreglar este tipo de problemas?
La instruccin UPDATE, nos permite realizar cambios en los datos
que ya tenemos dentro de una tabla de nuestra base de datos. La sintaxis
de esta orden es:
UPDATE nombretabla SET nomcolumna=expresion WHERE
condicion ;
La instruccin UPDATE actualiza o modifica los renglones de una
tabla, SET le indica a MYSQL cules son las columnas a modificar y
WHERE se usa para seleccionar un rengln determinado o un conjunto de
renglones, los casos ms comunes son:
Realicemos un ejemplo:
En la seccin anterior contbamos con la tabla estudiante.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 29 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Pero el tercer y el cuarto de los nombre no tienen bien escrito el


apellido, se han colocado letras minsculas inciales, si quisiramos
corregirlo tendramos que teclear la instruccin
update estudiante
estudiante set nombre="Juan Alberto Vaz" where nombre="juan alberto
vaz"
Podemos ver que la tabla ha cambiado
SELECT * FROM estudiante

El cambio se ha encerrado en un recuadro de color negro.


Del mismo modo proceda a realizar el cambio de Rocio.
Para que servir esta instruccin?
update estudiante set sexo='F' where nombre="Contreras Vazquez M";
Si usted ha respondido que para cambiar el sexo de Contreras Vazquez
M es que tiene razn, observe como no se trata de una cadena de
caracteres, sino de una sola letra en lugar de comillas luego de la
instruccin set se ha utilizado la apostrofe, ahora si observamos la salida.
SELECT * FROM estudiante

Una instruccin como la siguiente no efecta cambios en la tabla


update estudiante set sexo='F' where numero_estudiante=2
numero_estudiante=2
dado que en sexo solo podemos colocar o M o F, sin embargo
update estudiante set numero_estudiante=200 where numero_estudiante=2
si afectara la tabla. Si ahora insertamos un nuevo registro
INSERT INTO estudiante VALUES ('Joel Baizabal Diaz','M',
Diaz','M',NULL)
',NULL)
Y volvemos a solicitar que se muestre la tabla vemos que la
numeracin continuara hasta llegar al nmero de estudiante 199 y
posteriormente asignara el 201.
SELECT * FROM estudiante

ING JUAN ALBERTO VAZQUEZ G.


Pgina 30 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

La salida es:

3.2 Eliminacin de registros


La eliminacin de un registro no ser una opcin muy utilizada, pero
es necesaria ya que puede darse la desaparicin de una empresa o en
ciertos casos extremos en que el usuario haya desaparecido o por
cualquier otra razn deba ser dado de baja en la base de datos.
Por razones de seguridad es conveniente restringir el uso de esta
opcin a los operadores de la base de datos.
Para borrar datos de una tabla, debemos utilizar la sentencia
DELETE.
La sintaxis de la sentencia DELETE es la siguiente:
DELETE FROM <nombre_tabla>
[ WHERE <condicion>];
El siguiente ejemplo ilustra el uso de la sentencia DELETE.
DELETE Es buena
idea especificar en la sentencia WHERE los campos que forman la clave
primaria de la tabla para evitar borrar datos que no queramos eliminar.
DELETE FROM tCoches
WHERE marca = 'SEAT';
Cuando trabajemos con la sentencia DELETE debemos tener en
cuenta las siguientes consideraciones:
1. Solo podemos borrar datos de una nica tabla.
2. Cuando borramos datos de una vista, los estamos borrando
tambin de la tabla. Las vistas son solo una forma de ver los
datos, no una copia.
Ejecutaremos ahora la instruccin que a continuacin se muestra:
DELETE FROM estudiante
WHERE sexo= 'M';
Si ahora visualizamos los datos que contiene la tabla estudiante como
ya lo sabemos hacer veremos que se han eliminado aquellos alumnos que
contenan en sexo la letra M.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 31 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Para realizar un borrado completo de tabla debemos considerar la


posibilidad de utilizar la sentencia TRUNCATE, mucho ms rpida que
DELETE.
La sintaxis de la sentencia TRUNCATE es la siguiente:
TRUNCATE TABLE <nombre_tabla>;
El siguiente ejemplo muestra el uso de la sentencia TRUNCATE.
TRUNCATE TABLE estudiante;
estudiante;
Cuando trabajemos con la sentencia TRUNCATE debemos tener en
cuenta las siguientes consideraciones.
1. La sentencia TRUNCATE no es transaccional. No se puede
deshacer.
2. La sentencia TRUNCATE no admite clausula WHERE. Borra
toda la tabla.
3. No todos los gestores de bases de datos admiten la sentencia
TRUNCATE.

La funcin DELETE slo elimina informacin en una tabla, ms no


elimina tablas o bases de datos, para poder borrar tablas o bases de datos
esta la funcin DROP. De modo que:
drop table ausencias;
Borrara la tabla ausencias con todo y su contenido.
drop database estudiante_db;
estudiante_db;
Esto eliminara toda la base de datos incluyendo todas las tablas
guardadas en esta.
Es importante tener mucho cuidado a la hora de trabajar con estas
instrucciones.

3.3 Recuperacin de registros


MySQL Server mantiene un registro de transacciones que sirve para
llevar all todas las operaciones de actualizaciones, inserciones y
eliminaciones que ocurren en la bases de datos.
El archivo de log o registro de transacciones se usa en conjunto con la
copia de seguridad de una base de datos y se utilizan para poder
restaurar una base a un estado anterior consistente.
Las restauraciones de bases se hacen a nivel de base completa, base
diferencial, o bien hay restauraciones incrementales que se hacen
utilizando uno o varios respaldos del log.... estas operaciones se usan para
casos en donde hay errores de consistencia de datos por parte del usuario,
fallas de disco o fallas en el motor; no est pensado para recuperar

ING JUAN ALBERTO VAZQUEZ G.


Pgina 32 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

registros en forma unitaria... es un proceso complejo que est dentro de


las tareas de mantenimiento y no ser cubierto por lo mismo en este
captulo, dado que ser muy difcil y largo de explicar pero se ha
comentado para que usted se hagas una idea de cmo y para que se usa el
archivo de log.

3.4 Insercin de registros


Empezaremos de nuevo con la creacin de una base de datos, la
creacin de una tabla y la insercin de datos. Lo haremos ms
detenidamente:
CREATE DATABASE zoologico;
Bajo el sistema operativo Unix, los nombres de las bases de datos son
sensibles al uso de maysculas y minsculas (no como las palabras clave
de SQL), por lo tanto debemos de tener cuidado de escribir correctamente
el nombre de la base de datos. Esto es cierto tambin para los nombres de
las tablas.
Al crear una base de datos no se selecciona sta de manera
automtica; debemos hacerlo de manera explcita, por ello usamos el
comando USE en el ejemplo anterior.
La base de datos se crea slo una vez, pero nosotros debemos
seleccionarla cada vez que iniciamos una sesin con mysql.
La parte un tanto complicada es decidir la estructura que debe tener
nuestra base de datos: qu tablas se necesitan y qu columnas estarn en
cada tabla.
En principio, necesitamos una tabla que contenga un registro para
cada una de nuestras mascotas. sta puede ser una tabla llamada
mascotas, y debe contener por lo menos el nombre de cada uno de
nuestros animalitos. Ya que el nombre en s no es muy interesante, la
tabla debe contener alguna otra informacin. Por ejemplo, si ms de una
persona en nuestra familia tiene una mascota, es probable que tengamos
que guardar la informacin acerca de quien es el dueo de cada mascota.
As mismo, tambin sera interesante contar con alguna informacin ms
descriptiva tal como la especie, y el sexo de cada mascota.
Y que sucede con la edad?. Esto puede ser tambin de inters, pero no
es una buena idea almacenar este dato en la base de datos. La edad
cambia conforme pasa el tiempo, lo cual significa que debemos de
actualizar los registros frecuentemente. En vez de esto, es una mejor idea
guardar un valor fijo, tal como la fecha de nacimiento. Entonces, cuando

ING JUAN ALBERTO VAZQUEZ G.


Pgina 33 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

necesitemos la edad, la podemos calcular como la diferencia entre la fecha


actual y la fecha de nacimiento. MySQL proporciona funciones para hacer
operaciones entre fechas, as que no hay ningn problema.
Al almacenar la fecha de nacimiento en lugar de la edad tenemos
algunas otras ventajas:
Podemos usar la base de datos para tareas tales como generar
recordatorios para cada cumpleaos prximo de nuestras mascotas.
Podemos calcular la edad en relacin a otras fechas que la fecha actual.
Por ejemplo, si almacenamos la fecha en que muri nuestra mascota en la
base de datos, es fcil calcular que edad tena nuestro animalito cuando
falleci. Es probable que estemos pensando en otro tipo de informacin
que sera igualmente til en la tabla "mascotas", pero para nosotros ser
suficiente por ahora contar con informacin de nombre, propietario,
especie, nacimiento y fallecimiento.
Usamos la sentencia CREATE TABLE para indicar como estarn
conformados los registros de nuestras mascotas.
CREATE TABLE mascotas
(nombre VARCHAR(20), propietario VARCHAR(20), especie VARCHAR(20), sexo
CHAR(1), nacimiento DATE, fallecimiento DATE);
VARCHAR es una buena eleccin para los campos nombre,
propietario, y especie, ya que los valores que almacenarn son de longitud
variable. No es necesario que la longitud de estas columnas sea la misma,
ni tampoco que sea de 20. Se puede especificar cualquier longitud entre 1
y 255, lo que se considere ms adecuado. Si resulta que la eleccin de la
longitud de los campos que hemos hecho no result adecuada, MySQL
proporciona una sentencia ALTER TABLE que nos puede ayudar a
solventar este problema.
El campo sexo puede ser representado en una variedad de formas, por
ejemplo, "m" y "f", o tal vez "masculino" y "femenino", aunque resulta ms
simple la primera opcin.
El uso del tipo de dato DATE para los campos nacimiento y
fallecimiento debe de resultar obvio.
Despus de haber creado la tabla, ahora podemos incorporar algunos
datos en ella, para lo cual haremos uso de las sentencias INSERT y LOAD
DATA.
Ya que estamos iniciando con una tabla vaca, la manera ms fcil de
poblarla es crear un archivo de texto que contenga un registro por lnea
para cada uno de nuestros animalitos para que posteriormente carguemos
el contenido del archivo en la tabla nicamente con una sentencia.
ING JUAN ALBERTO VAZQUEZ G.
Pgina 34 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Por tanto, debemos de crear un archivo de texto "mascotas.txt" que


contenga un registro por lnea con valores separados por tabuladores,
cuidando que el orden de las columnas sea el mismo que utilizamos en la
sentencia CREATE TABLE. Para valores que no conozcamos podemos
usar valores nulos (NULL). Para representar estos valores en nuestro
archivo debemos usar \N.
Para cargar el contenido del archivo en la tabla mascotas, usaremos el
siguiente comando:
LOAD DATA LOCAL INFILE "c:mascotas.txt" INTO TABLE mascotas;
La sentencia LOAD DATA nos permite especificar cul es el separador
de columnas, y el separador de registros, por default el tabulador es el
separador de columnas (campos), y el salto de lnea es el separador de
registros, que en este caso son suficientes para que la sentencia LOAD
DATA lea correctamente el archivo "mascotas.txt".
El archivo mascotas.txt contiene:
Fluffy Arnoldo Gato f 2009-02-04 \N
Mau Juan Gato m 2008-03-17 \N
Buffy Arnoldo Perro f 2009-05-13 \N
FanFan Benito Perro m 2010-01-27 \N
Kaiser Diana Perro m 2008-08-31 2009-08-31
Chispa Omar Ave f 2008-09-11 \N
Wicho Toms Ave \N 2010-01-09 \N
Skim Benito Serpiente m 2010-01-29 \N
Si lo que deseamos es aadir un registro a la vez, entonces debemos
hacer uso de la sentencia INSERT. En la manera ms simple, debemos
proporcionar un valor para cada columna en el orden en el cual fueron
listados en la sentencia CREATE TABLE. Supongamos que nuestra
hermana Diana compra un nuevo hmster nombrado Pelusa. Podemos
usar la sentencia INSERT para agregar su registro en nuestra base de
datos.
INSERT INTO mascotas VALUES('Pelusa','Diana','Hamster','f','2000
VALUES('Pelusa','Diana','Hamster','f','2000-
r','f','2000-03-
03-30',NULL);

ING JUAN ALBERTO VAZQUEZ G.


Pgina 35 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Notar que los valores de cadenas y fechas deben estar encerrados entre
comillas. Tambin, con la sentencia INSERT podemos insertar el valor
NULL directamente para representar un valor nulo, un valor que no
conocemos. En este caso no se usa \N como en el caso de la sentencia
LOAD DATA.
De este ejemplo, debemos ser capaces de ver que es un poco ms la
tarea que se tiene que realizar si inicialmente cargamos los registros con
varias sentencias INSERT en lugar de una nica sentencia LOAD DATA.

3.5 Modificacin de campos


La sentencia MySQL, que permite modificar uno o varios campos en
todos los registros de una tabla, es la siguiente:
UPDATE tabla SET campo1=valor1, campo2=valor2;
Hay que tener muy presente que con esta sentencia en la que no
aparece WHERE se modificarn TODOS LOS REGISTROS DE LA
TABLA y por lo tanto los campos modificados tendrn el mismo valor en
todos los registros. En secciones anteriores hemos modificado solo parte
del campo de la tabla utilizando la instruccin:
UPDATE tabla SET campo1=valor1, campo2=valor2 WHERE condicin;
La condicin es fundamental en esta opcin y normalmente aludir a
un campo ndice (clave principal o nica), de modo que sea un solo
registro el que cumpla la condicin.
Podra ser el caso de un campo DNI que por su unicidad garantizara
que la modificacin solamente va a afectar a uno solo de los registros.
Cuando intentamos ingresar con "insert" un registro que repite el
valor de un campo clave o indexado con ndice nico, aparece un mensaje
de error indicando que el valor est duplicado. Si empleamos "replace" en
lugar de "insert", el registro existente se borra y se ingresa el nuevo, de
esta manera no se duplica el valor nico.
Si tenemos la tabla "libros" con el campo "codigo" establecido como
clave primaria e intentamos ingresar ("insert") un valor de cdigo
existente, aparece un mensaje de error porque no est permitido repetir
los valores del campo clave. Si empleamos "replace" en lugar de "insert",
la sentencia se ejecuta reemplazando el registro con el valor de cdigo
existente por el nuevo registro.
Ninguno de los campos que se ha manejado ha sido clave primaria por
lo tanto es posible modificar cualquiera de los campos sin ninguna

ING JUAN ALBERTO VAZQUEZ G.


Pgina 36 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

dificultad, sin embargo reemplazaremos el registro Mau de la tabla


mascotas.
REPLACE INTO mascotas VALUES ('Mau','Diana','Perro','f','2010-
('Mau','Diana','Perro','f','2010-03-
03-30',NULL);

Gran error verdad... No fue posible, no haba clave primaria en la


tabla y por lo mismo no tenemos los datos ligados. Veremos la estructura
de la tabla en la siguiente seccin.

3.6 Modificacin de la estructura de una base de datos


Para modificar la estructura de una tabla existente, usamos "alter
table" se usa para:
Agregar nuevos campos,
Eliminar campos existentes,
Modificar el tipo de dato de un campo,
Agregar o quitar modificadores como "null", "unsigned",
"auto_increment",
Cambiar el nombre de un campo,
Agregar o eliminar la clave primaria,
Agregar y eliminar ndices,
Renombrar una tabla.
"alter table" hace una copia temporal de la tabla original, realiza los
cambios en la copia, luego borra la tabla original y renombra la copia.
Depende del tipo de modificacin que deseamos realizar. Para los usos
mencionados anteriormente, las instrucciones [modificar especificacin]
son:
Agregar una columna: ADD columna 1 tipos de datos para
columna 1
Eliminar una columna: DROP columna 1

ING JUAN ALBERTO VAZQUEZ G.


Pgina 37 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Cambiar el nombre de una columna: CHANGE nombre antiguo


de la columna nuevo nombre de la columna tipos de datos
para la nueva columna".
Cambiar el tipo de datos para una columna: MODIFY columna
1 nuevo tipo de datos
Aprenderemos a agregar campos a una tabla.
Para ello utilizamos nuestra tabla "mascotas", definida con la
siguiente estructura:
nombre VARCHAR(20),
propietario VARCHAR(20),
especie VARCHAR(20),
sexo CHAR(1),
nacimiento DATE,
fallecimiento DATE
Necesitamos agregar el campo "codigo", de tipo int unsigned
auto_increment, con clave primaria.
Las claves primarias pueden especificarse cuando se crea la tabla
(utilizando CREATE TABLE) o cambiando la estructura existente de la
tabla (utilizando ALTER TABLE). En esta seccin cambiaremos la
estructura al agregar el campo cdigo.
ALTER TABLE mascotas ADD codigo int unsigned not null auto_increment
PRIMARY KEY

Usamos "alter table" seguido del nombre de la tabla y "add" seguido


del nombre del nuevo campo con su tipo y los modificadores que para este
caso se trato de unas clave primaria llamada cdigo.
Agreguemos otro campo a la tabla:
ALTER TABLE mascotas ADD codigo int unsigned
unsigned not null;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 38 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Si intentamos agregar un campo con un nombre existente como es el


caso de la instruccin dada anteriormente, aparece un mensaje de error
indicando que el campo ya existe y la sentencia no se ejecuta.
Para borrar una columna basta con utilizar la clusula DROP
COLUMN (COLUMN es opcional) y el nombre de la columna que
queremos borrar, se perdern todos los datos almacenados en la columna.
Ejemplo:
ALTER TABLE mascotas DROP codigo;

Cuando se agrega un campo, si no especificamos, lo coloca al final,


despus de todos los campos existentes; podemos indicar su posicin
(luego de qu campo debe aparecer o si ser el primer campo) con after.
ALTER TABLE mascotas ADD codigo int unsigned not null auto_increment PRIMARY
KEY first;

La opcin first indica que ser el primer campo.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 39 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Cuando modificamos una columna, tenemos que especificar el atributo


de la columna de nuevo. El siguiente ejemplo renombra el nombre del
campo nacimiento a nacido en la tabla mascotas.
ALTER TABLE mascotas CHANGE nacimiento nacido VARCHAR(10);

En este ejemplo adems se han asignado 10 espacios a la variable, sin


embargo si usted lee detalladamente este comando se dar cuenta que el
dato que era de tipo fecha se cambio por un dato de texto y esto suele ser
muy comn, por lo tanto debemos de corregir nuestra base con la
siguiente instruccin.
ALTER TABLE mascotas CHANGE nacido
nacido nacido DATE;
DATE;
Aqu lo nico que se ha hecho es cambiar el tipo de dato.
De igual modo podemos modificar el nombre de una columna:
ALTER TABLE mascotas MODIFY propietario varchar(15);
varchar(15);
Incluso se pueden renombrar las tablas, y tambin se hace de una sola
instruccin:
RENAME TABLE <nombre antiguo> TO <nombre nuevo>
Renombraremos nuestra tabla:
RENAME TABLE mascotas TO granja;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 40 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ACTIVIDADES DE APRENDIZAJE
Construya con su asesor y sus compaeros una Base de datos en
MySQL y llene los campos con los registros correspondientes.

AUTOEVALUACION

1) Mencione y explique las instrucciones para:


a. Agregar datos a un registro.
b. Eliminar una tabla.
c. Cambiar de nombre a una tabla.
d. Insertar un nuevo campo a la tabla y que adems tenga
clave primaria.
e. Borrar una tabla.
2) Explique la instruccin
a. ALTER TABLE tab1 DROP COLUMN col3
Contruya una base de datos y realice las siguientes actividades
en el orden que se indica.
3) Agregue otros 3 campos (prenda, precio, sexo)
4) Agregue 1 campo antes de prenda.
5) Reemplace el campo prenda por articulo.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 41 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

4. CONSULTAS EN LA BASE DE DATOS


Las consultas a la base de datos son el tpico uso de una aplicacin tras
varios meses o aos de funcionamiento. Salvo que nuestra aplicacin
realice operaciones masivas de insercin de registros, debemos
preocuparnos slo de las operaciones de SELECT. Es en este tipo de
operaciones donde notaremos como, poco a poco, se va degradando nuestra
aplicacin.
La degradacin de una consulta que, inicialmente funcionaba bien, se
produce por dos motivos. En primer lugar, porque crece el nmero de
registros de nuestra base de datos. Lo habitual es que, al poner la
aplicacin en marcha tengamos pocos registros (clientes, pedidos,
expedientes...) y que, segn transcurre el tiempo, las tablas tengan cada
vez ms registros.
El segundo motivo de degradacin es el incremento del nmero de
usuarios, la concurrencia. Al desarrollar la aplicacin posiblemente las
consultas se probaron con un nico usuario. A lo sumo con alguna
simulacin de carga (pero esto no es muy habitual). Incluso tras la puesta
en marcha suele haber un periodo de aceptacin en el que los usuarios
van incorporndose poco a poco a la aplicacin, usndola cada da un poco
ms.
Esta combinacin de mayor cantidad de datos y mayor concurrencia
puede poner en evidencia un diseo poco profesional de las consultas.
Naturalmente nuestras consultas estarn embebidas en una
aplicacin, no es habitual que los usuarios lancen consultas SQL
directamente a la base de datos. As que, los primeros sntomas de que
algo empieza a fallar sern espordicos. Tendremos comentarios como
La bsqueda de clientes va ms lenta, habis tocado algo? o incluso
Hoy la red va muy mal, alguien estar bajando pelculas. Comentarios
que no constituyen quejas formales y que, fcilmente pueden ser
achacados a otras causas.
Pero la degradacin de las consultas, aunque lenta, es progresiva. Y
poco a poco (o quizs no tan poco a poco) nuestra aplicacin se ir
degradando hasta la sublevacin de los usuarios. Antes de que ocurra
deberemos remangarnos para resolver el problema.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 42 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

4.1 Uso de los comandos DISPLAY, LIST, y LOCATE


Para poder mejorar el rendimiento de una consulta debemos conocer
antes cmo las resuelve MySQL. Es lo que se conoce como proceso de
consulta.
Cuando MySQL recibe una consulta,
procede de la siguiente forma: En primer
lugar, busca la consulta en la cach. Si hay
suerte, ya tendr los resultados guardados
de una consulta anterior y no tendr que
resolverla.
En segundo lugar, si no ha podido
utilizar la cach, analiza la consulta,
comprueba su sintaxis e identifica su tipo;
es la fase de parseo.
Con la informacin obtenida del anlisis,
llega al siguiente paso, la planificacin. Este
es el punto crtico y del que depender el
tiempo de resolucin. El planificador de
MySQL decide cual ser el proceso para
resolver la consulta, qu parte se resolver
primero, qu ndices se utilizarn y cmo se
obtendrn los datos.
Por ltimo, en la fase de ejecucin solo resta ejecutar el plan trazado y
entregar los resultados al cliente.
Vamos a ver este proceso paso a paso:
MySQL registra las consultas de tipo SELECT y su resultado. Como lo
normal es que se acceda a la base de datos a travs de una aplicacin, las
consultas repetidas son muy frecuentes (listas de poblaciones, de cdigos,
de nombres...).
Si MySQL recibe una consulta que tiene en la cach, simplemente
entrega al cliente el mismo conjunto de resultados que produjo en su
ejecucin anterior. Naturalmente, las consultas de modificacin de datos
(INSERT, DELETE, UPDATE...) invalidan las consultas afectadas de la
cach y provocan la eliminacin de estas de la cach.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 43 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

En el proceso de anlisis (parseo), MySQL determina el tipo de


consulta, las tablas relacionadas, las caractersticas de la clausula
WHERE... pero todo esto apenas tiene incidencia en el rendimiento. Lo
nico que puedes tener en cuenta es, que cuanto ms largas sean las
consultas, ms tiempo de anlisis necesitarn.
El planificador es el punto crtico en la resolucin de una consulta. Del
plan de ejecucin que elabore depender que la consulta tarde unas pocas
dcimas de segundo o varios minutos. Pero el trabajo del Planificador no
es fcil, para entenderlo debemos tener en cuenta dos factores:
El planificador trabaja para cualquier consulta. No es viable
programar un planificador especfico para nuestra aplicacin, as que nos
tenemos que conformar con el planificador de MySQL. Este est
optimizado para cualquier aplicacin. Y, aunque acumula los aos de
experiencia de los programadores de MySQL y utiliza estadsticas de
ejecucin para decidir cul ser el mejor plan, no siempre acertar.
En segundo lugar, el planificador no tiene tiempo de encontrar la
solucin ptima. Sera absurdo que utilizara tres segundos en planificar
una consulta que, en el peor de los casos, slo requerir dos segundos para
resolverse. El planificador debe encontrar el mejor plan posible, en el
menor tiempo posible.
Por eso necesitamos conocer cmo trabaja, qu decisiones toma y,
sobre todo, como influir en sus decisiones cuando nos convenga.
Centrndonos en lo importante, el planificador debe decidir dos
aspectos principales en el plan de ejecucin: qu ndice se va a utilizar
para resolver la consulta y en qu orden se realizarn los campos de las
tablas. Los ndices sern estudiados ms adelante.
Cuando ya se ha tenido acceso a los datos estos simplemente se
mostraran a nuestro cliente.
Veamos algunos de los ejemplos que es posible realizar con nuestra
base de datos:
SELECT * FROM granja;
Nos muestra todos aquellos (comodin *) registros que integran la tabla
granja.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 44 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

SELECT nombre, sexo FROM granja;


Mostrara solo los campos nombre y sexo de la base de datos.

SELECT nombre, sexo FROM granja WHERE nombre='Mau';


Mostrara el nombre y el sexo pero solo de aquellos registros donde
nombre sea Mau.

SELECT nombre, nacido FROM granja WHERE nacido < '2009';


'2009';
Muestra los campos nombre y nacido condicionado que nacido sea
menor de 2009.

SELECT DISTINCT nombre FROM granja;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 45 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Se ha utilizado DISTINCT para omitir los


registros duplicados, uno de los registros
duplicados es Mau.

SELECT nombre, nacido FROM granja WHERE


WHERE nombre='Mau' OR nacido
<'2009';
<'2009';
Se hacen visibles solo aquellos registros que tienen como nombre Mau
y que adems nacido es menor que 2009.

SELECT nombre, nacido FROM


FROM granja WHERE nombre='Mau' AND nacido
<'2010';
<'2010';
Similar al anterior pero ahora deben de cumplirse las dos condiciones.

SELECT nombre FROM granja WHERE nombre LIKE 'P%'


Muestra todos aquellos registros que inician con la letra P.

SELECT * FROM granja WHERE nombre LIKE "%u%";


Encuentra los valores que tienen una u.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 46 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

4.2 Uso de los comandos COUNT, SUM y AVERAGE


MySQL proporciona diversas funciones que se pueden usar para
efectuar clculos sobre fechas, por ejemplo, para calcular edades o extraer
partes de una fecha (da, mes, ao, etc).
Para determinar la edad de cada una de nuestras mascotas, tenemos
que calcular la diferencia de aos de la fecha actual y la fecha de
nacimiento, y entonces substraer uno si la fecha actual ocurre antes en el
calendario que la fecha de nacimiento. Las siguientes consultas muestran
la fecha actual, la fecha de nacimiento y la edad para cada mascota.
SELECT nombre, nacido, CURRENT_DATE, (YEAR(CURRENT_DATE) -
YEAR(nacido)) - (RIGHT(CURRENT_DATE,5) < RIGHT(nacido,5)) AS edad
FROM granja;

Aqu, YEAR( ) obtiene nicamente el ao y RIGHT( ) obtiene los cinco


caracteres ms a la derecha de cada una de las fechas, que representan el
mes y el da (MM-DD). La parte de la expresin que compara los valores
MM-DD se evala a 1 o 0, y permite ajustar el valor de la edad en el caso
de que el valor MM-DD de la fecha actual ocurra antes del valor MM-DD
de la fecha de nacimiento.
Dado que la expresin en s es bastante fea, se ha usado un alias
(edad) que es el que aparece como etiqueta en la columna que muestra el
resultado de la consulta.
Esta consulta debe trabajar bien, pero el resultado puede ser de
alguna manera ms til si las filas son presentadas en algn orden. Para
ello haremos uso de la clusula ORDER BY.
Por ejemplo, para ordenar por nombre, usaremos la siguiente consulta:
SELECT nombre, nacido, CURRENT_DATE, (YEAR(CURRENT_DATE) -
YEAR(nacido))
YEAR(nacido)) - (RIGHT(CURRENT_DATE,5) < RIGHT(nacido,5)) AS edad
FROM granja ORDER BY nombre;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 47 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Para ordenar por edad en lugar de nombre, nicamente tenemos que


usar una clusula ORDER BY diferente:
SELECT nombre, nacido, CURRENT_DATE, (YEAR(CURRENT_DATE) -
YEAR(nacido)) - (RIGHT(CURRENT_DATE,5) < RIGHT(nacido,5)) AS edad
FROM granja ORDER BY edad;

Qu sucede si deseamos conocer cules de nuestras mascotas cumplen


aos el prximo mes? Para este tipo de clculos, el ao y el da son
irrelevantes; simplemente tenemos que extraer el valor del mes en la
columna nacimiento. Como se mencion anteriormente, MySQL
proporciona diversas funciones para trabajar y manipular fechas, en este
caso haremos uso de la funcin MONTH( ). Para ver cmo trabaja, vamos
a ejecutar una consulta muy simple que muestra tanto el valor de una
fecha como el valor que regresa la funcin MONTH( ).
SELECT nombre, nacido,
nacido, MONTH(nacido) FROM granja;
granja;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 48 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Encontrar los animalitos cuyo cumpleaos es el prximo mes es muy


sencillo. Suponiendo que el mes actual es Abril (valor 4), entonces
tenemos que buscar los registros cuyo valor de mes sea 5 (Mayo).
SELECT nombre, nacido
nacido FROM
FROM granja WHERE MONTH(nacido)
MONTH(nacido) = 5;

Aqu habr por supuesto una complicacin si el mes actual es


Diciembre. No podemos simplemente agregar uno al nmero del mes (12)
y buscar los registros cuyo mes de nacimiento sea 13 porque dicho mes no
existe. En vez de esto, tenemos que buscar los animalitos que nacieron en
Enero (mes 1).
Sin embargo, lo mejor es que podemos escribir una consulta que
funcione no importando cul sea el mes actual. La funcin DATE_ADD( )
nos permite agregar un intervalo de tiempo a una fecha dada. Si
agregamos un mes al valor regresado por la funcin NOW( ), y entonces
extraemos el valor del mes con la funcin MONTH( ), el resultado es que
siempre obtendremos el mes siguiente.
SELECT nombre, nacido FROM granja WHERE MONTH(nacido) =
MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));
Las bases de datos son usadas frecuentemente para responder una
pregunta, "Con qu frecuencia ocurre un cierto tipo de dato en una
tabla?". Por ejemplo, tal vez queremos conocer cuntas mascotas tenemos,
o cuntas mascotas tiene cada uno de los propietarios.
Contar el nmero total de animalitos que tenemos es lo mismo que
hacer la siguiente pregunta Cuntas filas hay en la tabla granja? La
funcin COUNT( ) es la que nos ayuda en esta situacin.
SELECT COUNT(*) FROM granja;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 49 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Si deseamos conocer cuntas mascotas tiene cada uno de los


propietarios, la consulta es la siguiente:
SELECT propietario, COUNT(*) FROM granja GROUP BY
propietario;

Se debe notar que se ha usado una clusula GROUP BY para agrupar


todos los registros de cada propietario. Si no hacemos esto, obtendremos
un mensaje de error.
En efecto, el uso de la funcin COUNT( ) en conjunto con la clusula
GROUP BY es muy til en diversas situaciones. A continuacin se
muestran algunos ejemplos.
El nmero de animalitos por especie:
SELECT especie, COUNT(*) FROM granja GROUP BY especie;

El nmero de animalitos por combinacin de especie y sexo:


SELECT especie, sexo, COUNT(*) FROM granja GROUP BY especie, sexo;

No es necesario que se obtengan todos los datos de una tabla cuando se


usa la funcin COUNT( ). Por ejemplo, en la consulta anterior, para ver
nicamente los datos de perritos y gatitos, la consulta queda de la
siguiente manera:
SELECT especie, sexo, COUNT(*)
COUNT(*) FROM granja WHERE especie="Perro" OR
especie="Gato" GROUP BY especie, sexo;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 50 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ACTIVIDADES DE APRENDIZAJE
Constryase en equipo bases de datos con tablas que tengan ms de 5
campos, luego haga preguntas a otros equipos sobre lo que deseen buscar
y usted deber de ser capaz de realizar la bsqueda.

AUTOEVALUACION

1) Visualice en la base de datos creada en esta unidad todos


aquellos animales que contenga la letra b.
2) Imprima en pantalla aquellos animales que adems de contener
la letra b, hayan nacido en el 2009.
3) Imprima en pantalla aquellos animales que tienen ms de dos
aos.
4) Imprima aquellos animales que sean sexo=m.
5) Imprima aquellos animales que sean de Diana.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 51 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

5. ORDENACIN E INDEXACIN DE LAS BASES DE


DATOS
El ndice de una base de datos es una estructura de datos que mejora
la velocidad de las operaciones, permitiendo un rpido acceso a los
registros de una tabla. Al aumentar drsticamente la velocidad de acceso,
se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes
bsquedas.
El ndice tiene un funcionamiento similar al ndice de un libro,
guardando parejas de elementos: el elemento que se desea indexar y su
posicin en la base de datos. Para buscar un elemento que est indexado,
slo hay que buscar en el ndice dicho elemento para, una vez encontrado,
devolver el registro que se encuentre en la posicin marcada por el ndice.
Los ndices pueden ser creados usando una o ms columnas,
proporcionando la base tanto para bsquedas rpidas al azar como de un
ordenado acceso a registros eficiente.
El espacio en disco requerido para almacenar el ndice es tpicamente
menor que el espacio de almacenamiento de la tabla (puesto que los
ndices generalmente contienen solamente los campos clave de acuerdo
con los que la tabla ser ordenada, y excluyen el resto de los detalles de la
tabla), lo que da la posibilidad de almacenar en memoria los ndices de
tablas que no cabran en ella. En una base de datos relacional un ndice es
una copia de parte de una tabla.
Algunas bases de datos amplan la potencia del indexado al permitir
que los ndices sean creados de funciones o expresiones.
Los ndices pueden ser definidos como nicos o no nicos. Un ndice
nico acta como una restriccin en la tabla previniendo filas idnticas en
el ndice.
Los ndices son construidos sobre rboles o sobre una mezcla de ellos,
funciones de clculo u otros mtodos.
La definicin de ndices puede hacerse en el momento de creacin de la
tabla, mediante la palabra clave key (o index), a la que deberemos
proporcionar el nombre que vamos a asignar a esta clave y las columnas
que la forman, entre parntesis. Existen modificadores opcionales sobre el
ndice que nos permiten especificar si se trata de un ndice nico o
mltiple (segn puedan existir o no varios valores iguales del ndice en la
tabla).

ING JUAN ALBERTO VAZQUEZ G.


Pgina 52 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

En versiones recientes de MySQL existen otros tipos de ndices


(espaciales, de texto completo, etc.) para tipos de datos concretos y que
ofrecen prestaciones adicionales.

5.1 Ordenacin de una base de datos


Habamos visto en el capitulo anterior que SELECT se utiliza para
realizar bsquedas o para hacer consultas o reportes de los datos. El
SELECT tiene una sintaxis similar a la siguiente:
SELECT [campos]
FROM [tabla]
WHERE [condicin]
De esta forma, para obtener varios campos, los mismos se escriben en
el lugar correspondiente, separados por coma. Si desea obtenerse todos
los campos de una tabla, se puede usar el asterisco *.
Adicionalmente, es recomendable usar como prefijo de los campos, el
nombre de la tabla, por ejemplo: tabla1.campo1, tabla1.campo2, etc.
Si la consulta viene de varias tablas, estas tambin deben ir separadas
por coma. Hay que tener especial cuidado al hacer estas consultas con
varias tablas ya que el resultado es el producto cartesiano de los dos
conjuntos de resultados, o bien, la combinatoria de ambos conjuntos.
Para realizar consultas utilizando varias tablas, lo ms comn es
aplicar un JOIN, el cual se hace en la condicin del WHERE, similar a
como se presenta a continuacin.
SELECT [campos]
FROM tabla1, tabla2
WHERE tabla1.llave = tabla2.llaveforanea
La condicin est formada por una o varias operaciones lgicas
aplicadas a los campos. Entre estas operaciones se tiene:
Operacin Resultado
= Igual a
< Menor que
<= Menor o igual que
<> Distinto de
> Mayor que
>= Mayor o igual que

ING JUAN ALBERTO VAZQUEZ G.


Pgina 53 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Adems habamos mencionado que se pueden utilizar variables


booleanas que nos auxilien con la bsqueda y organizacin.
Operador Descripcin
AND La condicin se cumple s ambos lados de la operacin
son verdaderos
OR La condicin se cumple s cualquiera de los lados de
la operacin es verdadero
NOT Realiza una negacin del valor de verdad.
Para realizar ordenamientos de la informacin se puede utilizar el
operador ORDER BY y luego seleccionar los campos que establecen el
orden. Adicionalmente se le puede agregar el operador DESC al final,
para realizar ordenamientos en orden descendente. Tambin se menciono
que se poda hacer uso de otros operadores como:
COUNT(*): Devuelve el conteo de todas las tablas que cumplen con la
condicin.
AVG(campo):
AVG(campo) Devuelve el promedio de todas las tablas que cumplen
con la condicin para un campo particular.
SUM(campo):
SUM(campo) Devuelve la suma de todas las tablas que cumplen con la
condicin para un campo particular.
MIN(campo):
MIN(campo) Devuelve el mnimo de todas las tablas que cumplen
con la condicin para un campo particular.
MAX(campo):
MAX(campo) Devuelve el mximo de todas las tablas que cumplen con
la condicin para un campo particular.
Una de las operaciones de ms ayuda en MYSQL es su facilidad a la
hora de concatenar los datos, bastara con teclear la instruccin
select concat(especie,' de ',propietario) as producto
from granja;
y al momento nos mostrara una tabla con la mezcla
de la especie y el nombre del propietario.
Este tipo de ordenacin ha sido ya empleado en el
capitulo anterior, ahora centraremos nuestro inters
adems en adquirir la capacidad para ordenar datos de
ms de una tabla.
Crearemos una tabla adicional con precios para
cada una de las especies con las que ya contamos en
nuestra granja.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 54 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

5.2 Ordenacin mltiple.


mltiple.
Puede ordenarse tanto por valores alfabticos como numricos. Puede
ordenarse de menor a mayor (orden ascendente, o ASC) o de mayor a
menor (orden descendente, o DESC). Por defecto el orden considerado es
de menor a mayor. La ordenacin tiene asociado un cierto coste
computacional por lo que solo debe realizarse exclusivamente cuando sea
necesario.
No profundizaremos mucho en lo que ahora veremos porque ya fue
explicado anteriormente, solo mencionaremos algunos aspectos que no
han sido tocados.
Veremos algunos comandos de ejemplo y la forma de utilizarlos.
Para obtener los datos de forma ordenada: "Seleccionar todas las filas
de la tabla 'nombre_tabla' y ordenarlas por 'fecha' de forma descendiente".
SELECT * FROM nombre_tabla ORDER BY fecha DESC
Para obtener y limitar los datos: "Seleccionar 5 filas de la tabla
'nombre_tabla'".
SELECT * FROM nombre_tabla LIMIT 5
Para obtener datos limitados que cumplan una condicin dada ms un
ordenamiento: "Seleccionar 15 filas de la tabla 'nombre_tabla' donde la
celda de la columna 'dato' sea mayor a 'algo' y ordenarlas por 'fecha' de
forma ascendiente".
SELECT * FROM nombre_tabla WHERE dato>'algo' ORDER BY fecha ASC
LIMIT 15
Y as lgicamente podemos seguir creando las consultas SQL.
Por lo general, cuando se trata de columnas de tipo carcter, la
ordenacin, al igual que otras operaciones de comparacin no es
case_sensitive. Significa que el orden permanece indefinido para las
columnas que son idnticas excepto por sus maysculas y minsculas.
Puede no obstante forzar a que una columna se ordene en forma sensible
a maysculas empleando el modificador BINARY:
ORDER BY BINARY columna.
El sentido de ordenacin, por defecto, es ascendente, con los valores
ms pequeos primero. Para ordenar en sentido inverso (descendente), se
agregaba la palabra clave DESC luego del nombre de la columna por la
que ordena.
Puede ordenar basndose en varias columnas, y cada columna en un
sentido diferente. Por ejemplo, para ordenar por tipo de animal en sentido
ascendente y, dentro de cada tipo, ordenar por nacimiento en sentido

ING JUAN ALBERTO VAZQUEZ G.


Pgina 55 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

descendente (los animales ms jvenes primero) utilizariamos la siguiente


consulta:
SELECT nombre, especie, edad FROM granja ORDER BY especie, edad DESC;
Advierta que la palabra clave DESC se aplica sobre la columna
inmediatamente anterior (birth); no afecta el sentido de ordenacin de la
columna especie.

5.3 Indexacin
Indexacin de una base de datos.
datos.

El trmino indexacin hace referencia a la accin de ordenar registros


mediante la utilizacin de ndices. Las bases de datos, por ejemplo, suelen
almacenar ndices de su contenido en funcin de unos parmetros
previamente definidos.
Un ndice (o KEY, o INDEX) es un grupo de datos que MySQL asocia
con una o varias columnas de la tabla. En este grupo de datos aparece la
relacin entre el contenido y el nmero de fila donde est ubicado.
Los ndices -como los ndices de los libros- sirven para agilizar las
consultas a las tablas, evitando que mysql tenga que revisar todos los
datos disponibles para devolver el resultado.
Los ndices son campos elegidos arbitrariamente por el constructor de
la base de datos que permiten la bsqueda a partir de dicho campo a una
velocidad notablemente superior. Sin embargo, esta ventaja se ve
contrarrestada por el hecho de ocupar mucha ms memoria (el doble ms
o menos) y de requerir para su insercin y actualizacin un tiempo de
proceso superior.
Evidentemente, no podemos indexar todos los campos de una tabla
extensa ya que doblamos el tamao de la base de datos. Igualmente,
tampoco sirve de mucho el indexar todos los campos en una tabla pequea
ya que las selecciones pueden efectuarse rpidamente de todos modos.
Un caso en el que los ndices pueden resultar muy tiles es cuando
realizamos peticiones simultneas sobre varias tablas. En este caso, el
proceso de seleccin puede acelerarse sensiblemente si indexamos los
campos que sirven de nexo entre las dos tablas.
Los ndices pueden resultar contraproducentes si los introducimos
sobre campos triviales a partir de los cuales no se realiza ningn tipo de
peticin ya que, adems del problema de memoria ya mencionado,
estamos ralentizando otras tareas de la base de datos como son la edicin,
insercin y borrado. Es por ello que vale la pena pensrselo dos veces

ING JUAN ALBERTO VAZQUEZ G.


Pgina 56 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

antes de indexar un campo que no sirve de criterio para bsquedas o que


es usado con muy poca frecuencia por razones de mantenimiento.
En la medida de lo posible hay que evitar que las sentencias SQL
estn embebidas dentro del cdigo de la aplicacin. Es mucho ms eficaz
usar vistas o procedimientos almacenados por que el gestor los guarda
compilados. Si se trata de una sentencia embebida el gestor debe
compilarla antes de ejecutarla.
Seleccionar exclusivamente aquellos que se necesiten
No utilizar nunca SELECT * por que el gestor debe leer primero la
estructura de la tabla antes de ejecutar la sentencia
Si utilizas varias tablas en la consulta especifica siempre a que tabla
pertenece cada campo, le ahorras al gestor el tiempo de localizar a que
tabla pertenece el campo. En lugar de
SELECT Nombre, Factura FROM Clientes, Facturacion WHERE
IdCliente=IdClienteFacturado,
usa:
SELECT Clientes.Nombre,
Clientes.Nombre, Facturacion.Factura WHERE Clientes.IdCliente =
Facturacion.IdClienteFacturado.
Cuando se utilizan varias tablas dentro de la consulta hay que tener
cuidado con el orden empleado en la clusula FROM. Si deseamos saber
cuntos alumnos se matricularon en el ao 1996 y escribimos:
FROM Alumnos, Matriculas WHERE Alumno.IdAlumno =
Matriculas.IdAlumno AND Matriculas.Ao = 1996
el gestor recorrer primero todos los alumnos para buscar sus matriculas
y devolver las correspondientes. Si escribimos:
FROM Matriculas, Alumnos WHERE Matriculas.Ao = 1996 AND
Matriculas.IdAlumno
Matriculas.IdAlumno = Alumnos.IdAlumnos,
el gestor filtra primero las matrculas y despus selecciona los alumnos,
de esta forma tiene que recorrer menos registros.
La indexacin proporciona agilidad en las bsquedas, lo que se traduce
en mayor rapidez a la hora de mostrar resultados. La indexacin es
realizada por los motores de bsqueda mediante sus programas de
bsqueda. Estos programas estn continuamente recorriendo los sitios
Web o de almacenamiento de la base de datos, analizando su contenido e
insertndolos en un ndice. Por ejemplo un sitio Web bien planteado
lograr que dichos spiders rastreen rpidamente su contenido y adems
conseguir una buena posicin en el ndice del motor de bsqueda.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 57 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

5.4 Indexacin mltiple


Podemos crear el ndice a la vez que creamos la tabla, usando la
palabra INDEX seguida del nombre del ndice a crear y columnas a
indexar (que pueden ser varias):
La sintaxis es ligeramente distinta segn la clase de ndice:
PRIMARY KEY (nombre_columna_1 [,nombre_columna2...])
UNIQUE INDEX nombre_indice (columna_indexada1 [,columna_indexada2 ...])
INDEX nombre_index (columna_indexada1 [,columna_indexada2...])
Podemos tambin aadirlos a una tabla despus de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Si queremos eliminar un ndice:
ALTER TABLE tabla_nombre DROP INDEX nombre_indice;
nombre_indice;
Una regla bsica es crear tus ndices sobre aquellas columnas que
vayas a usar con una clusula WHERE, y no crearlos con aquellas
columnas que vayan a ser objeto de un SELECT:
SELECT texto from tabla_libros WHERE autor = Vazquez;
En este ejemplo, la de autor es una columna buena candidata a un
ndice; la de texto, no.
Otra regla bsica es que son mejores candidatas a indexar aquellas
columnas que presentan muchos valores distintos, mientras que no son
buenas candidatas las que tienen muchos valores idnticos, como por
ejemplo sexo (masculino y femenino) porque cada consulta implicar
siempre recorrer prcticamente la mitad del ndice.
En algunas bases de datos existen diferencias entre KEY e INDEX. No
as en MySQL donde son sinnimos.
Un ndice que s es especial es el llamado PRIMARY KEY. Se trata de
un ndice diseado para consultas especialmente rpidas. Todos sus
campos deben ser UNICOS y no admite NULL.
Un ndice UNIQUE es aquel que no permite almacenar dos valores
iguales.
Los ndices FULL TEXT permiten realizar bsquedas de palabras.
Puedes crear ndices FULLTEXT sobre columnas tipo CHAR, VARCHAR
o TEXT.
Una vez creado puedes hacer bsquedas del tipo:
SELECT * FROM nombre_tabla WHERE MATCH(nombre_indice_fulltext)
AGAINST('palabra_a_buscar');
AGAINST('palabra_a_buscar');
Algunas limitaciones de los ndices fulltext radica en que solo busca
por palabras completas, ndice no encontrar ndices. No se indexan las
palabras de menos de cuatro letras. No se indexan columnas que
contengan menos de tres filas, ni palabras que aparezcan en la mitad o

ING JUAN ALBERTO VAZQUEZ G.


Pgina 58 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ms de las filas. Las palabras separadas por guiones se cuentan como dos
palabras.
Los ndices ordinarios no tienen restricciones en cuanto a la existencia
de valores idnticos o nulos. Una posibilidad interesante, si pensamos
crear un ndice sobre columnas CHAR y VARCHAR es la de limitar el
campo a indexar. Por ejemplo, cada entrada en la columna puede ser de
hasta 40 caracteres y nosotros indexar nicamente los primeros 10 de
cada una. Para crear estos ndices basta con indicar entre parntesis el
nmero de caracteres a indexar despus del nombre de la columna:
ALTER TABLE libros ADD INDEX idx_autor(nombre(10), apellidos(10));
Los ndices se actualizan cada vez que se modifica la columna o
columnas que utiliza. Por ello no es aconsejable usar como ndices
columnas en las que sern frecuentes operaciones de escritura (INSERT,
UPDATE, DELETE).
Tampoco tendra sentido crear ndices sobre columnas cuando
cualquier select sobre ellos va a devolver una gran cantidad de resultados;
por ejemplo una columna booleana que admita los valores Y/N. En fin,
tampoco es necesario usar ndices en tablas demasiado pequeas, ya que
en estos casos no hay ganancia de rapidez frente a una consulta normal.
La sintaxis general para la creacin de un ndice es:
CREATE INDEX "NOMBRE_NDICE" ON "NOMBRE_TABLA"
(NOMBRE_COLUMNA)
Digamos que tenemos la siguiente tabla:
Tabla Clientes
(Nombre char(50),
Apellido char(50),
Domicilio char(50),
Ciudad char(50),
Pas char(25),
Fecha_nacimiento date)
Si deseamos crear un ndice tanto en Ciudad como en Pas,
ingresaramos,
CREATE INDEX IDX_CUSTOMER_LOCATION
on CUSTOMER (City, Country)
No hay una regla estricta respecto de cmo nombrar un ndice. El
mtodo generalmente aceptado es colocar un prefijo, tal como IDX_,
antes del nombre de un ndice para evitar la confusin con otros objetos de
la base de datos. Tambin es una buena idea brindar informacin sobre
qu tabla y columna(s) se utilizar el ndice.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 59 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Finalmente, los ndices ocupan espacio. A veces, incluso ms que la


tabla de datos.

ACTIVIDADES DE APRENDIZAJE
Realice un resumen de lo comentado en este captulo y posteriormente
conteste el cuestionario.

AUTOEVALUACION

1) Qu es y para qu sirve un ndice en una base de datos?


2) Cuntos tipos de ndices existen?
3) Cmo se pueden crear ndices para que no exista duplicidad de
datos?
4) Existe algn limitante o desventaja en la creacin de indices?
Explique.
5) Suponiendo que se tiene una tabla de datos con los campos: sexo,
sueldo, ocupacin, edad_en_el_puesto y adems se tiene otra
tabla con los datos: nombre, domicilio, fecha_nacimiento,
existir alguna posibilidad de indexarlos y de ser as como
hacerlo?

ING JUAN ALBERTO VAZQUEZ G.


Pgina 60 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

6 ELABORACIN DE REPORTES
En este punto, que es una de las partes ms esperadas, veremos cmo
realizar Reportes de Ciudades mediante PHP extrayendo datos desde la
Base de Datos MySQL.
Hemos realizado la Introduccin, hemos visto como Crear las Tablas y
Bases de Datos y vimos como realizar el Ingreso, Edicin y Eliminacin de
Datos ayudndonos con phpMyAdmin.
Si bien el phpMyAdmin, puede ser una forma habitual por la cual
Webmasters y Programadores, ingresamos a las bases de datos a realizar
modificaciones rpidas, esta no es una forma que pueda utilizar un simple
usuario, o visitante, debido a su complejidad y lo peligroso que puede ser
para nuestros datos.
Es por ello que debemos desarrollar en nuestro sitio, herramientas que
permitan trabajar con la informacin de manera fcil, a nuestros
usuarios, para ello vamos a utilizar el lenguaje PHP, que acceder a la
base de datos MySQL y mostrar la informacin en el navegador, en
formato xHTML.

6.1 Impresin sin formato


Lo primero que realizaremos ser un Reporte de alumnos, alumnos o sea
mostrar una Lista de las Ciudades ingresadas en nuestra Base de Datos.
Para este reporte que se mostrara en una pgina Web, vamos a utilizar lo
que es hoy da la mejor forma de tabular datos, o sea una tabla.
Las tablas son estructuras xHTML que muestran varias filas de datos,
con informacin en columnas, por ejemplo:
<html><head><title>Reporte
<html><head><title>Reporte de alumnos</title></head>
alumnos</title></head>
<body><h1>Reporte de alumnos</h1>
alumnos</h1>
<table border=1>
<tr><td>Matricula</td><td>Nombre</td></tr>
<?php
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("alumnos");
$tabla = mysql_query("SELECT * FROM estudiante");
while ($registro = mysql_fetch_array($tabla)) {
?>

<tr>
<td><?php echo $registro["matricula"]; ?></td>
<td><?php echo $registro["nombre"];
$registro["nombre"]; ?></td>
</tr>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 61 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

<?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>
</table></body></html>

Ese cdigo ser la base de este reporte, <html> y </html> indican el


comienzo y fin de la pgina xHTML respectivamente. <head> y </head>
indican el comienzo y fin de la cabecera de la pgina, donde nicamente
hemos definido el titulo, mediante la declaracin <title>Reporte de
alumnos</title> que har que en nuestro navegador arriba en la barra
azul, diga Reporte de alumnos.
Por ltimo dentro de <body> y </body> escribiremos todas las rdenes
xHTML para mostrar el Reporte de alumnos,
alumnos mediante una tabla.
Tambin he agregado un titulo que ser visible en el navegador
utilizando las etiquetas de encabezado principal <h1>Reporte de
alumnos</h1>
alumnos</h1>
Notara usted que se ha marcado el cdigo que corresponde a PHP con
un relleno en tono gris, este cdigo se ha insertado directamente dentro de
mi cdigo html y los pasos debe de realizar son los siguientes:
1. Conectarnos al MySQL
2. Seleccionar la base de datos
3. Seleccionar la tabla ciudades
4. Mostrar un rengln cada cuidad de la tabla ciudades
5. Cerrar la base de datos
PHP,
PHP tiene una orden para cada uno de estas 5 necesidades, estas
rdenes o funciones son:
mysql_connect que tiene como funcin conectar con el MySQL
mysql_select_db su funcin es seleccionar una Base de Datos del
Servidor MySQL
mysql_query ejecuta una consulta SQL,SQL como por ejemplo seleccionar
una tabla (en este caso estudiante)
estudiante
mysql_fetch_array obtiene de la tabla los datos de un registro
mysql_free_result libera la memoria de los registros
mysql_close cierra la conexin con la base de datos
Y nos est faltando la manera de repetir esa lectura de registros para
cada uno de los elementos de la tabla estudiante.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 62 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Para esto utilizaremos while,


while que justamente lo que hace es repetir un
bloque de ordenes mientras se cumple una determinada condicin, condicin
podemos entender esto como: mientras existan valores en matriculas
entonces sigue agregando filas.
Este cdigo lo pegaremos en un archivo llamado base.php
ase.php que en mi
caso lo guarde en C:\
C:\xampplite\
xampplite\htdocs,
htdocs y como mencione anteriormente
el cdigo PHP lo hemos metido dentro del xHTML (esta con relleno gris
para que lo identifiquen), para saber donde comienza y termina cada trozo
de cdigo PHP,
PHP siempre debemos utilizar <?php y ?> para comenzar y
finalizar respectivamente. Puede haber tantos trozos de cdigo como se
necesiten.
Cuando un Usuario llama la pgina base.php
base.php desde su Navegador,
Navegador el
navegador le pide la pgina al Servidor,
Servidor el servidor ejecuta las ordenes y
funciones PHP,
PHP las convierte en xHTML y las enva al navegador del
usuario, y este navegador las muestra. En nuestro navegador JAMAS
veremos cdigo PHP,
PHP ya que es un lenguaje de Servidor.
Servidor
Analicemos nuestro cdigo PHP lnea por lnea:
$conexion = mysql_connect(localhost,
mysql_connect(localhost, root, );
);
Se conecta con el servidor MySQL, para esto le indicamos el Nombre
del Servidor, localhost significa el Servidor local o sea nuestro PC (o si
estamos e Internet, nuestro hosting), root es el nombre de usuario
administrador de mysql (recuerden que al instalar AppServ le dejamos
root), y como no hay contrasea hemos colocado dos comillas, tambin del
MySQL, en ambos casos usuario y contrasea son los mismos que usaron
al Instalar AppServ para la opcin MySQL y son los mismos que usan
para entrar al phpMyAdmin.

mysql_select_db(alumnos);
mysql_select_db(alumnos);
Luego de Conectarse con el Servidor, tenemos que elegir cual de todas
las Bases de Datos queremos usar, en este caso usaremos alumnos que es
la que se ha creado para este captulo, usted puede trabajar con la
anterior.

$tabla = mysql_query(SELECT
mysql_query(SELECT * FROM estudiante);
estudiante);
Luego de elegir la Base de Datos, tenemos que Seleccionar la Tabla y
Registros con que vamos a trabajar. La opcin SELECT * FROM
estudiante,
estudiante seleccionar todos los Campos (por eso asterisco *) de la Tabla

ING JUAN ALBERTO VAZQUEZ G.


Pgina 63 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

estudiante. Con esto entonces vamos a poder trabajar con los 10, 20, 3, o
100 estudiantes.

Pero a estos estudiantes, los vamos a ir tomando uno por uno, por eso
tenemos la siguiente orden:

while ($registro = mysql_fetch_array($tabla))


Hasta cundo lo repite?, hasta que se deje de cumplir la condicin,
cul es la condicin? pues en palabras la condicin es, obtener un registro
nuevo, en cdigo se hace mediante:

$registro = mysql_fetch_array($tabla)
Cuando llega al final de la Tabla, no se cumplir ms la condicin del
while y dejara de repetirse esa porcin de cdigo, por tanto si hay n
estudiantes y por lo tanto obtiene n y muestra n veces el bloque, y si hay
10 lo repetir 10 veces, Cual bloque de ordenes repite pues este, que es el
que est entre llaves { }:
<tr>
<td><?php echo $registro["matricula"]; ?></td>
<td><?php echo $registro["nombre"]; ?></td>
</tr>
Cuando hacemos el while en $registro queda guardada la informacin
de 1 registro de la tabla (por ejemplo el primero Juan), cada registro de
estudiante tiene 2 campos que se muestran matricula y nombre,nombre que
guardan el nmero de identificacin y su nombre, respectivamente. Es por
eso que luego usamos as: $registro[matricula] para obtener de ese
registro solo el numero y $registro[nombre] para obtener el nombre de
este alumno.
Completamos la orden con un <?php y ?> para indicar que ah no es
xHTML si no cdigo PHP y por ltimo, la orden echo muestra en una
pgina un valor, en el ejemplo vimos que primero muestra la matricula
as:
<?php echo $registro[matricula]; ?>
Y el nombre as:
<?php echo $registro[nombre]; ?>
Ambos valores estn dentro de las correspondientes <td> </td> para
que salgan en cada columna de la tabla, y esto se repite por cada
matricula, logrando de esa forma nuestro Reporte de alumnos.
alumnos

ING JUAN ALBERTO VAZQUEZ G.


Pgina 64 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

6.2 Agregando informacin desde HTML


Para esta seccin necesitaremos una base de datos, cada uno de
ustedes puede disear su propia base, yo he trabajado con una base
llamada alumnos en la cual se ha insertado una tabla con los siguientes
campos:
Nombre: Es de tipo varchar cuenta con 10 espacios, en el se guarda el
nombre de nuestro alumno.
Aparterno, amaterno: Ambos son del tipo varchar con 10 espacios y en
ellos se insertara la informacin de nuestros alumnos referente a sus
apellidos.
Domicilio: Similar a los anteriores, tipo varchar de tamao 20.
Cal1, Cal2, Cal3: De tipo entero y sin signo.
Sexo: Del tipo Enum, M=masculino y F Femenino.
Matricula
Matricula: Este campo es de tipo entero se autoincrementa por lo que
no es necesario incluirlo en el formulario a llenar de HTML.
Nuestra tabla fue llamada estudiante.
estudiante
Recordemos que la sintaxis SQL para insertar registros ya se ha visto
en secciones anteriores y ahora necesitamos insertar los datos de los
campos desde una pgina de internet.
INSERT INTO TABLE (field1, field2) VALUES (value1, value2)
Igual que en el ejemplo anterior para hacer la insercin utilizando
PHP, lo primero es crear una conexin y luego enviar la consulta
utilizando el mtodo mysql_query de la siguiente forma:
$conexion = mysql_connect("localhost",
mysql_connect("localhost", "root",
"root", "");
mysql_select_db("alumnos",
mysql_select_db("alumnos", $conexion);
$conexion);
$que = "INSERT INTO estudiante (nombre, apaterno, amaterno, domicilio, cal1,
Cal2,Cal3, sexo)
sexo) ";
Para que el usuario pueda ingresar los datos de manera sencilla
crearemos un formulario en cual se ingresarn los datos del alumno, para
ello creamos el formulario en html.
<form id="insertar" name="insertar" method="post" action="">
Nombre:
<input name="nombre" type="text" id="nombre" size="10"
size="10" />
Apellido Paterno:
Paterno:
<input name="apaterno" type="text" id="apaterno"
id="apaterno" size="10"
size="10" />
Apellido Materno:
Materno:
<input name="amaterno" type="text" id="amaterno"
id="amaterno" size="10"
size="10" />
Domicilio:
Domicilio:

ING JUAN ALBERTO VAZQUEZ G.


Pgina 65 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

<input name="domicilio" type="text" id="domicilio"


id="domicilio" size="20"
size="20" />
Calificacion 1:
1:
<input name="Cal1"
name="Cal1" type="text" id="Cal1
id="Cal1"
Cal1" size="2"
size="2" />
Calificacion 2:
<input name="Cal2" type="text" id="Cal2" size="2" />
Calificacion 3:
<input name="Cal3" type="text" id="Cal3" size="2" />
sexo:
<input name="sexo" type="text" id="sexo" size="2" />
<input type="submit" name="Submit" value="Insertar Registro" />
<input type="hidden" name="action" value="add" />
</form>
Ntese que hemos agregado un campo oculto llamado action el cual lo
utilizaremos para verificar si se ha enviado el formulario y procesar los
datos. Entonces verificamos que se enviado el formulario en cuyo caso
realizamos la conexin a MySQL y enviamos la consulta para insertar los
datos.
<?php
$state = false;
if ($_POST['action'] == "add") {
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("alumnos", $conexion);
$sql = "INSERT INTO estudiante (nombre, apaterno, amaterno, domicilio,Cal1, Cal2,
Cal3, sexo)
VALUES ('$_POST[nombre]', '$_POST[apaterno]', '$_POST[amaterno]',
'$_POST[domicilio]', '$_POST[Cal1]', '$_POST[Cal2]', '$_POST[Cal3]', '$_POST[sexo]')";
mysql_query($sql, $conexion);
$state = true;
}
?>
Finalmente mostramos un mensaje cuando se ha insertado
correctamente el registro en la base de datos.
<?php if ($state)
{
?>
<p><em>Registro insertado correctamente</em></p>
<?php
}
?>

El cdigo HTML queda como se muestra a continuacin:


<html>
<head>
<title>Reporte de Ciudades</title>
</head>
<body>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 66 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

<form id="insertar" name="insertar" method="post" action="">


Nombre:
<input name="nombre" type="text" id="nombre" size="10" />
Apellido Paterno:
<input name="apaterno" type="text" id="apaterno" size="10" />
Apellido Materno:
<input name="amaterno" type="text" id="amaterno" size="10"
size="10" />
Domiclio:
<input name="domicilio" type="text" id="domicilio" size="20" />
Calificacion 1:
<input name="Cal1" type="text" id="Cal1" size="2" />
Calificacion 2:
<input name="Cal2" type="text" id="Cal2" size="2" />
Calificacion 3:
<input name="Cal3"
name="Cal3" type="text" id="Cal3" size="2" />
sexo:
<input name="sexo" type="text" id="sexo" size="2" />
<input type="submit" name="Submit" value="Insertar Registro" />
<input type="hidden" name="action" value="add" />
</form>
<?php
$state = false;
if ($_POST['action'] == "add") {
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("alumnos", $conexion);

$sql = "INSERT INTO estudiante (nombre, apaterno, amaterno, domicilio,Cal1, Cal2,


Cal3, sexo)
VALUES ('$_POST[nombre]', '$_POST[apaterno]', '$_POST[amaterno]',
'$_POST[domicilio]', '$_POST[Cal1]', '$_POST[Cal2]', '$_POST[Cal3]', '$_POST[sexo]')";
mysql_query($sql, $conexion);
$state = true;
}
?>
<?php if ($state)
{
?>
<p><em>Registro insertado correctamente</em></p>
<?php
}
?>
</body>
</body></html>

Sugiero que siempre con la ayuda de su maestro revisen la salida en


internet.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 67 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

6.3 Trabajar con tablas temporales

Si trabajamos con tablas muy grandes, solemos necesitar trabajar


ocasionalmente con un pequeo conjunto de datos dentro de esa gran
tabla. Si cada vez hemos de ejecutar una consulta completa sobre la tabla
podemos cargar mucho el servidor y ralentizar el sistema, por lo que
podemos intentar trabajar en MySQL con tablas temporales que tendrn
este pequeo conjunto de datos de la tabla madre, que sern mucho ms
pequeas y ms rpidas.
Para crear una tabla temporal solo debemos agregar TEMPORARY a
la sentencia CREATE TABLE:
Ejemplo:
CREATE TEMPORARY TABLE tabla_temp
tabla_temp
(
id int(11) NOT NULL auto_increment,
fecha1 date NOT NULL default '0000-
'0000-00-
00-00',
id_doc int(11),
titulo text,
apartado varchar(50),
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
);
La tabla temporal existir mientras la conexin esta abierta si es que
nosotros no la destruimos antes. Una vez cerrada la conexin la tabla ser
destruida y el espacio que ocupaba (en memoria o disco) ser liberado.
Si creamos una tabla que tiene el mismo nombre que una existente ya
en la base de datos, la que existe quedar oculta y trabajaremos sobre la
temporal.
Tablas tipo HEAP
MySQL tambin permite especificar que una tabla temporal sea
creada en memoria si dicha tabla se declara del tipo HEAP:
CREATE TEMPORARY TABLE tabla_temp
tabla_temp
(
fecha1 date NOT NULL default '0000-
'0000-00-
00-00',
id_doc int(11),
titulo text,
apartado varchar(50),
PRIMARY KEY (`id`),

ING JUAN ALBERTO VAZQUEZ G.


Pgina 68 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

UNIQUE KEY `id` (`id`)


) TYPE = HEAP;
Una tabla no puede tener ms de 1600 campos (esto viene limitado por
el hecho que el mximo tamao de una tupla debe ser menor que 8192
bytes), pero este lmite puede ser configurado a un tamao menor en
algunos sitios. Una tabla no puede tener el mismo nombre que una tabla
del sistema.
A diferencia de una tabla TEMPORARY, que solo puede ser accedida
por el usuario que la crea, una tabla HEAP puede ser utilizada por
diversos usuarios. No soportan columnas de autoincremento ni que haya
valores nulos en los ndices. Los datos son almacenados en pequeos
bloques.

ACTIVIDADES DE APRENDIZAJE
Realice una pgina en donde solicite y despliegue los datos de una
base de datos.

AUTOEVALUACION

1) Qu es una tabla temporal en MySQL?


2) Cul es la utilidad de PHP en MySQL?
3) Cul es la sintaxis para tener acceso a la base de datos con
PHP?
4) Cul sera la sintaxis para insertar tres calificaciones desde
PHP?
5) Escriba un cdigo en PHP para la imprimir los datos de las
mascotas de la seccin 4.1 y 4.2.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 69 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

7. CREACIN DE FORMATOS DE PANTALLA.


PANTALLA.
La creacin de sitios web utilizando PHP y MySQL es uno de los
recursos ms utilizados por los programadores Web en la actualidad.
Mediante la utilizacin de ambos se pueden realizar desde formularios
sencillos hasta complejos lugares para el comercio electrnico.
PHP es un lenguaje basado en la secuencia de comandos de servidor
para su aplicacin exclusiva en la Web, mientras que MySQL es un
sistema de administracin para bases de datos relacionales de gran
potencia y estabilidad. Si el lector es capaz de manejar ambos elementos
tendr en su mano la posibilidad de crear potentes sitios web.
Esta seccin no es ms que una ampliacin de la anterior en donde
tendremos la oportunidad de conocer cmo se realizan diversas tareas.
Estaremos dedicados a crear un sitio web para el comercio electrnico, con
posibilidades de crear foros Web y ms.
Esta es una seccin recomendable para usuarios que tengan, al menos,
conocimientos bsicos en HTML y que deseen mejorar sus desarrollos
web, dado que ofrece las premisas para crear sitios web avanzados con el
uso de bases de datos relacionales y cdigo PHP, mismos que fueron vistos
en las secciones anteriores.

7.1 Creacin de pantallas de captura.

Los formularios interactivos permiten a los autores de pginas Web


poner elementos interactivos en sus pginas, por ejemplo, para recibir
mensajes de sus lectores, de forma similar a las cartas de respuestas que
se encuentra en algunas revistas.
El lector escribe la informacin rellenando campos o haciendo clic
sobre botones, y luego presiona un botn de envo para enviarla a una
direccin URL que se suele dirigir a una direccin de correo electrnico o a
un script dinmico Web como PHP, ASP o CGI. Nuestro caso se centrara
en PHP.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 70 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Una vez que ya tenemos instalados PHP y MySQL, y el servidor


Apache configurado para usarlos, podemos comenzar a escribir nuestro
primer Script en PHP.

Ejemplo script php


<html>
<body>
<?php
$myvar = "Hola Mundo. Este es mi primer script en PHP";
//Esto es un comentario
echo $myvar;
?>
</body>
</html>
Una vez escrito esto lo salvamos en un fichero con la extensin php, y
lo colocamos en nuestro servidor, http://localhost/ejemplo1.php Ahora si
ponemos esta URL en nuestro navegador veremos una lnea con el texto
"Hola Mundo. Este es mi primer script en PHP".
Lo primero que apreciamos en el script son sus delimitadores. En la
primera lnea del script vemos <?php que nos indica que comienza un
script en PHP, y en la ltima colocamos ?> para indicar el final del script.
Hay que destacar que todas las lneas que se encuentre entre estos
delimitadores deben acabar en punto y coma, excepto las sentencias de
control (if, swich, while, etc.).
Como en toda programacin, es importante poner muchos comentarios,
para lo cual si queremos comentar una sola lnea tenemos que poner al
principio de la lnea //, si lo que queremos es comentar varias utilizaremos
los delimitadores /* - */.
Para que el servidor envi texto utilizaremos la instruccin echo,
aunque tambin podemos utilizar printf de uso similar al del C oPerl.
Finalmente, vemos que la palabra myvar comienza con el signo dlar
($). Este smbolo le indica a PHP que es una variable. Nosotros le hemos
asignado un texto a esta variable, pero tambin pueden contener nmeros
o arreglos. Es importante recordar que todas las variables comienzan con
el signo dlar.
Para crear nuestra BD, debemos ser el administrador de MySQL o el
root, para ello haremos lo siguiente:
CREATE DATABASE mybd;
mybd;

ING JUAN ALBERTO VAZQUEZ G.


Pgina 71 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Ya hemos creado una BD, ahora le aadiremos una tabla y algunos


registros.
CREATE TABLE agenda (id INT NOT NULL AUTO_INCREMENT, nombre
CHAR(50), direccion
direccion CHAR(50), telefono CHAR(15),
CHAR(15), email CHAR(30), KEY
(id));

Luego tecleamos
INSERT INTO agenda VALUES (1, 'Luis Garca', 'C/ Betis, 22. Cdiz',
'95.655.66.33',
'95.655.66.33', 'luis@agenda.com' );

INSERT INTO agenda VALUES (2, 'Carlos Rodrguez', 'C/ Sevilla, 6. Huelva',
'95.113.22.77',
'95.113.22.77', 'carlos@agenda.com' );

INSERT INTO agenda VALUES (3, 'Juan Prez', 'C/ Laguna, 15. Sevilla',
'95.455.55.55', 'juan@agenda.com' );
Debemos tener en cuenta que los comandos de arriba debe escribirse
cada uno en una sola lnea. Se han separado para aumentar la legibilidad
del cdigo.
Cabe destacar el campo id, que no puede estar vacio, y adems es
autoincrementable, lo cual deberemos tener en cuenta a la hora de
actualizar y aadir registros. Si no hemos cometido ningn error, ya
tenemos nuestra base de datos de ejemplo en el servidor MySQL.
Ya tenemos datos en nuestra BD, as que con el siguiente script nos
conectaremos a la BD del servidor MySQL para obtener los datos de un
registro.
Conexin al MySQL

<html>
<body>

<?php
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd', $link);
$result = mysql_query("SELECT * FROM agenda", $link);
echo "Nombre: ".mysql_result($result, 1, "nombre")."<br>";
"direccion")."<br>";;
echo "Direccin: ".mysql_result($result, 1, "direccion")."<br>"
echo "Telfono :".mysql_result($result, 1, "telefono")."<br>";
echo "E-
"E-Mail :".mysql_result($result, 1, "email")."<br>";
?>

</body>
</html>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 72 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

En la primera lnea del script que como se menciono anteriormente fue


iniciada con <?php, nos encontramos con la funcin mysql_connect(), que
abre una conexin con el servidor MySQL en el host especificado (en este
caso la misma mquina en la que est alojada el servidor MySQL,
localhost). Tambin debemos especificar el usuario (nobody, root, etc. ), en
nuestro caso root y si fuera necesario un password para el usuario
indicado (mysql_connect("localhost", "root", "clave_del_root")). El
resultado de la conexin es almacenado en la variable $link.
Con mysql_select_db() PHP le dice al servidor que en la conexin $link
nos queremos conectar a la base de datos mydb y se ha indicado entre
apostrofes el nombre de nuestra base de datos. Podramos establecer
distintas conexiones a la BD en diferentes servidores, pero nos
conformaremos con una.
La siguiente funcin mysql_query(), es la que hace el trabajo duro,
usando el identificador de la conexin ($link), enva una instruccin SQL
al servidor MySQL para que ste la procese. El resultado de sta
operacin es almacenado en la variable $result.
Finalmente, mysql_result() es usado para mostrar los valores de los
campos devueltos por la consulta ($result). En este ejemplo mostramos los
valores del registro 1, que es el primer registro, y mostramos el valor de
los campos especificados.
En las prximas secciones estaremos mostrando como darle formato a
las pantallas de captura, utilizar tablas, etc.

7.2 Tablas de MySQL.

Hoy en da, la mayora de las pginas web se basan en tablas, ya que


resultan de gran utilidad al mejorar notablemente las opciones de diseo.
Todos los objetos se alinean por defecto a la izquierda de las pginas
web, pero gracias a las tablas es posible distribuir el texto en columnas,
colocar imgenes al lado de un bloque de texto, y otra serie de cosas que
sin las tablas seran imposibles de realizarse.
Las tablas estn formadas por celdas,
celdas que son los recuadros que se
obtienen como resultado de la interseccin entre una fila y una columna
Para crear una tabla hay que insertar las etiquetas <table> y </table>.
Entre dichas etiquetas habr que especificar las filas y columnas que
formarn la tabla.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 73 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Fila <tr>
Es necesario insertar las etiquetas <tr> y </tr> por cada una de las
filas de la tabla. Estas etiquetas debern insertarse entre las etiquetas
<table> y </table>.
Por ejemplo, para crear una tabla con dos filas escribiramos:
<table>
<tr>...</tr>
<tr>...</tr>
</table>
Columna o celda <td>
Para crear una tabla no basta con especificar el nmero de filas, es
necesario tambin especificar el nmero de columnas.
Una celda es el resultado de la interseccin entre una fila y una
columna, por lo que podremos especificar el nmero de celdas por fila, que
equivale a especificar el nmero de columnas por fila.
Columna <td>
<td>
Es necesario insertar las etiquetas <td> y </td> por cada una de las
celdas que compongan cada una de las filas de la tabla. Por lo tanto,
habr que insertar esas etiquetas entre las etiquetas <tr> y </tr>.
Por ejemplo, para insertar la siguiente tabla:
Habra que escribir: Sabado Domingo
<table border="1"> Curso HTML Curso Dreamweaver
<tr> Curso Frontpage Curso Flash
<td>Sabado</td>
<td>Domingo</td>
</tr>
<tr>
<td>Curso HTML</td>
<td>Curso Dreamweaver</td>
</tr>
<tr>
<td>Curso Frontpage</td>
<td>Curso Flash</td>
</tr>
</table>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 74 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Es posible modificar los siguientes atributos de una tabla:


Atributo Significado Posibles valores
un nmero, acompaado de % cuando se
Width ancho de la tabla
desee que sea en porcentaje
un nmero, acompaado de % cuando se
height altura de la tabla
desee que sea en porcentaje
espacio entre el contenido
cellpadding un nmero
de las celdas y el borde
cellspacing espacio entre celdas un nmero
border grosor del borde un nmero
left (izquierda)
alineacin de la tabla
Align right (derecha)
dentro de la pgina
center (centro)
bgcolor color de fondo nmero hexadecimal
background imagen de fondo nmero hexadecimal
bordercolor color del borde nmero hexadecimal
Por ejemplo, para modificar la tabla de la pgina anterior para que
quede como la siguiente:
Sabado Domingo
Curso HTML Curso Dreamweaver
Curso Frontpage Curso Flash
Habra que escribir:
<table width="50%" border="2" align="center" cellspacing="0"
bordercolor="#000000" bgcolor="#FFCC99">..</table>
Las etiquetas <td> y </td> se utilizan para definir las celdas de cada
una de las filas, pero podemos poner en su lugar las etiquetas <th> y
</th>.
Para la etiqueta <th> es posible especificar los mismos atributos que
para la etiqueta <td>, pero esta nueva etiqueta hace que el texto de la
celda aparezca centrado y en negrita, por lo que se utiliza para definir los
encabezados o ttulos de las columnas.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 75 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Por ejemplo, si escribiramos el siguiente cdigo:


<table width="50%" border="1" align="center">
<tr>
<th>Sabado</td> Sbado Domingo
<th>Domingo</td> Curso HTML Curso Dreamweaver
</tr> Curso Frontpage Curso Flash
<tr>
<td>Curso HTML</td>
<td>Curso Dreamweaver</td>
</tr>
<tr>
<td>Curso Frontpage</td>
<td>Curso Flash</td>
</tr>
</table>

No solamente es posible establecer ttulos para las columnas, tambin


es posible establecer un ttulo para la tabla mediante las etiquetas
<caption> y </caption>.
Estas etiquetas han de ir despus de la etiqueta <table>, y puede
especificarse el valor de los atributos align (con los valores bottom, center,
left, right y top) y valign (con los valores bottom y top).
Por ejemplo, si escribiramos el siguiente cdigo:
<table width="50%" border="1"
Titulo de la tabla
align="center">
<caption align="right" Sbado Domingo
valign="top">Titulo de la table Curso HTML Curso Dreamweaver
<tr> Curso Frontpage Curso Flash
<tr>
<th>Sabado</td>
...
</tr>
</table>
Para las etiquetas <td> y <th> existen los atributos colspan y
rowspan, que se utilizan para combinar celdas.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 76 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

A travs del atributo colspan se especifica el nmero de columnas por


las que se extender la celda, y a travs del atributo rowspan se especifica
el nmero de filas por las que se extender la celda.

Para que quede ms claro, vamos a ver un ejemplo de su uso. Por


ejemplo, para insertar la siguiente tabla:
DIFERENCIAS ENTRE EL PERRO Y EL HOMBRE
DIFERENCIAS PERRO HOMBRE
PEQUEO GRANDE
Duracin crecimiento 10 meses 18 a 24 16 aos
meses
Tiempo de gestacin 58 a 63 das 9 meses
Duracin de vida del pelo/cabello 1 ao 2 a 7 aos
Habra que escribir el siguiente cdigo:
<table width="575" border="2" cellspacing="2">
<tr align="center" valign="middle">
<th colspan="4">DIFERENCIAS ENTRE EL PERRO Y EL HOMBRE</th>
</tr>
<tr align="center" valign="middle">
<th rowspan="2">DIFERENCIAS</th>
<th colspan="2">PERRO</th>
<th rowspan="2">HOMBRE</th>
</tr>
<tr align="center" valign="middle">
<th>PEQUE&Ntilde;O</th>
<th>GRANDE</th>
</tr>
<tr align="center" valign="middle">
<td>Duraci&oacute;n crecimiento</td>
<td>10 meses</td>
<td>18 a 24 meses</td>
<td>16 a&ntilde;os</td>
</tr>
<tr align="center" valign="middle">
<td>Tiempo de gestaci&oacute;n</td>
<td colspan="2">58
colspan="2">58 a 63 d&iacute;as</td>
<td>9 meses</td>
</tr>
<tr align="center" valign="middle">
<td>Duraci&oacute;n de vida del pelo/cabello</td>
<td colspan="2">1 a&ntilde;o</td>
<td>2 a 7 a&ntilde;os</td>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 77 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

</tr>
</table>

7.3 Mostrar datos de una tabla.

Ahora que ya sabemos conectar con el servidor de BD y que adems


hemos aprendido como crear tablas veremos cmo mostrar los datos por
pantalla.
Consulta de la BD
<html>
<body>

<?php
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd', $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
echo "<table border = '1'> \n";
echo "<tr><td>Nombre</td><td>E-
"<tr><td>Nombre</td><td>E-Mail</td></tr> \n";
while ($row = mysql_fetch_row($result))
{
echo "<tr><td>$row[0]</td><td>$row[1]</td></tr>
"<tr><td>$row[0]</td><td>$row[1]</td></tr> \n";
}
echo "</table> \n";
?>

</body>
</html>
En este script hemos introducido dos novedades, la ms obvia es la
sentencia de control while(), que tiene un funcionamiento similar al de
otros lenguajes, ejecuta una cosa mientras la condicin sea verdadera. En
esta ocasin while() evalua la funcin mysql_fetch_row(), que devuelve un
array con el contenido del registro actual (que se almacena en $row) y
avanza una posicin en la lista de registros devueltos en la consulta SQL.
La funcin mysql_fetch_row() tiene un pequeo problema, es que el
array que devuelve slo admite referencias numricas a los campos
obtenidos de la consulta. El primer campo referenciado es el 1, el segundo
el 2 y as sucesivamente. En el siguiente script solucionaremos este
pequeo inconveniente.
ING JUAN ALBERTO VAZQUEZ G.
Pgina 78 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Consulta modificada de BD
<html>
<body>

<?php
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd', $link);
$result = mysql_query('SELECT nombre, email FROM agenda', $link);
if ($row = mysql_fetch_array($result))
{
echo "<table border = '1'> \n";
echo
echo "<tr><td>Nombre</td><td>E-
"<tr><td>Nombre</td><td>E-Mail</td></tr> \n";
do {
echo "<tr><td>".$row["nombre"]."</td><td>".$row["email"]."</td></tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
}
else
{
echo " No se ha encontrado ningn registro !";
}
?>

</body>
</html>

Esencialmente, este script hace lo mismo que el anterior.


Almacenamos en $row el registro actual con la funcin
mysql_fetch_array() que hace exactamente lo mismo que
mysql_fetch_row(), con la exepcin que podemos referenciar a los campos
por su nombre ($row["email"]), en vez de por un nmero.
Con la sentencia if/else, asignamos a $row el primer registro de la
consulta, y en caso de no haber ninguno (else) mostramos un mensaje
("No se ha encontrado..."). Mientras que con la sentencia do/while, nos
aseguramos que se nos muestren todos los registros devueltos por la
consulta en caso de haber ms de uno.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 79 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Hay que destacar la utilizacin del punto (.), como operador para
concatenar (unir) cadenas. En el ejemplo mostrado se ha unido el nombre
con el E-mail en una misma cadena llamada $row.

7.4 Modificacin de una tabla de MySQL.


En esta leccin vamos ver cmo podemos aadir nuevos registros a
nuestra BD. La recogida de datos la vamos a hacer a travs de una
interfaz de web. En primer lugar vamos a crear una pgina web con un
simple formulario, con los campos que deseamos. Para hacerlo
utilizaremos dos archivos que a continuacin de listan y el nombre del
archivo se ha encerrado entre parntesis.

Formulario inicial aadir BD (ejemplo2.php)


<html>
<body>

<form method="post"
method="post" action="ejemplo3.php">
action="ejemplo3.php">
Nombre :<input type="Text" name="nombre"><br>
Direccin:<input type="Text" name="direccion"><br>
Telfono :<input type="Text" name="telefono"><br>
name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar informacin">
</form>

</body>
</html>
Hemos creado un formulario donde recoger los datos, y una vez
introducidos ejecutamos un script llamado ejemplo3.php, pues veamos
como es este script.

Aadir registros (ejemplo3.php)


<html>
<body>
<?php
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd',$link);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ".

ING JUAN ALBERTO VAZQUEZ G.


Pgina 80 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

"VALUES ('".$_POST[nombre]."', '".$_POST[direccion]."', '".$_POST[telefono]."',


'".$_POST[email]."')";
echo $sql;
mysql_query($sql);
echo "Gracias! Hemos recibido sus datos.\
datos.\n";
?>
</body>
</html>
Como se puede ver, para introducir un nuevo registro, utilizamos la ya
conocida funcin mysql_query(), la cual tambin usamos para las
consultas, y usaremos para las actualizaciones, es decir una seora
funcin. Aaah!, una cosa muy importante, para poder aadir o modificar
registros debemos tener permiso para ello en el servidor MySQL, por eso
en este caso me conecto como root, pero podra ser cualquier otro usuario.
En el formulario se ha hecho uso del mtodo POST.
<FORM METHOD="POST" ACTION="ejemplo3.php">
Entonces a la hora de insertar los valores de los campos falta hacer
referencias en ellas, vemos como
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ".
"VALUES ('".$_POST[nombre]."', '".$_POST[direccion]."', '".$_POST[telefono]."',
'".$_POST[email]."')";
En caso de necesitar modificar un registro de la base de datos hay que
tener permiso para ello en el servidor de BD, el resto nos viene de corrido.
Primero seleccionamos el registro que deseamos modificar, y luego,
mandamos una consulta con las modificaciones, o ambas cosas a la vez.
Suponemos que las modificaciones las recogemos de un formulario como el
de la leccin anterior, solo que ahora agregamos un espacio para el ID que
ser el que tomaremos como referencia para la modificacin del registro.
El cdigo (modifica1.php) quedara como:
<html>
<body>

<form method="post" action="modifica3.php">


ID :<input type="Text" name="id"><br>
Nombre :<input type="Text" name="nombre"><br>
Direccin:<input type="Text" name="direccion"><br>
Telfono :<input type="Text" name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit"
type="Submit" name="enviar" value="Modificar ID">
ID">
</form>

</body>
</html>

ING JUAN ALBERTO VAZQUEZ G.


Pgina 81 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Mientras que el script para modifica3 que ser el archivo que


llamaremos ser:
<html>
<body>

<?php
if (isset($_POST[id]))
{
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd',$link);

$sql = "UPDATE agenda SET nombre='".$_POST[nombre]."',


direccion='".$_POST[direccion]."', telefono='".$_POST[telefono]."', email=
'".$_POST[email]."' WHERE id ='".$_POST[id]."'";
echo $sql;
mysql_query($sql);
}

?>
</body>
</html>

Como observara no es muy difcil el cdigo que se ha escrito, se ha


utilizado una condicin if en la cual buscamos si existe el ID que hemos
tecleado en caso de existencia se reemplazan los valores de la tabla por los
valores teclados en el formulario.
El proceso de borrar un registro es idntico al de modificar, solo que en
vez de utilizar UPDATE utilizamos DELETE en la sentencia SQL. En el
ejemplo que a continuacin se muestra se hace suponer que ya se tiene
conocido el ID de la persona que se borrara y por lo tanto lo borraremos a
partir de su ID. El formulario por lo tanto lo nico que nos solicitara ser
el ID de la persona a la cual se desea borrar (se suponen conocidos los
datos).
<html>
<body>

<form method="post" action="ejemplo3.php">

ING JUAN ALBERTO VAZQUEZ G.


Pgina 82 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ID :<input type="Text" name="id"><br>


<input type="Submit" name="enviar" value="Borrar Registro">
</form>
</form>

</body>
</html>

Mientras que el script construido en PHP para el borrado del registro


quedara como:
<html>
<body>

<?php
if (isset($_POST[id]))
{
$link = mysql_connect("localhost", "root");
mysql_select_db('mybd',$link);

$sql = "DELETE FROM agenda WHERE id ='".$_POST[id]."'";


echo $sql;
mysql_query($sql);
}
?>
</body>
</html>

Documentarse en el manejo de HTML ampliara los recursos con los


que usted cuente a la hora de elaborar formularios que por cierto cada da
son ms utilizados por las pequeas y medianas empresas para ofrecer
sus servicios entre los cuales los ms importantes son las ventas.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 83 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ACTIVIDADES DE APRENDIZAJE
Elabore una pgina en donde solicite informacin para el llenado de
una base de datos, pueda tener botones para desplegar la informacin y
adems pueda modificar y borrar la informacin contenida.

AUTOEVALUACION

Explique y corrija las siguientes lneas de cdigo.

1) <?php
$sql = "UPDATE agenda SET telefono = 555405181 WHERE nombre = 'eloi'" ;
mysql_query ( $sql , $db );
?>

2) <form method="post" action="manejador.php">

3) $conecion= mysql_connect($host, $usuario, $password);

El siguiente script tiene errores que no han sido corregidos, corrjalos


usted.

<html>
<body>
<?php
$link = mysql_connect("localhost",
mysql_connect("localhost", "root">
"root">
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Nombre</b></td>
"<td><b>Nombre</b></td> \n";
echo "<td><b>E-
"<td><b>E-Mail</b></td> \n";
echo "</tr> \n";
while ($row = mysql_fetch_row($result)){
echo "<tr> \n";
echo "<td>$row[0]</td> \n";

ING JUAN ALBERTO VAZQUEZ G.


Pgina 84 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

echo "<td>$row[1]</td> \n";


echo "</tr> \n";
}
echo "</table> \n";
?>
</body>
</html>

8. XAMMP.
XAMMP.
Muchos usuarios saben por experiencia propia que la instalacin de un
servidor web Apache no es fcil y que se complica an ms si se desea
agregar MySQL, PHP y Perl.
XAMPP es una forma fcil de instalar la distribucin Apache que
contiene MySQL, PHP y Perl. XAMPP es realmente simple de instalar y
usar, basta descargarlo, extraerlo y comenzar.
En este momento hay cuatro versiones de XAMPP:
XAMPP para Linux
La versin para sistemas Linux (testeado para SuSE, RedHat,
Mandrake y Debian)contiene: Apache, MySQL, PHP & PEAR, Perl,
ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg, libpng, gdbm,
zlib, expat, Sablotron, libxml, Ming, Webalizer, pdf class, ncurses,
mod_perl, FreeTDS, gettext, mcrypt, mhash, eAccelerator, SQLite e IMAP
C-Client.
XAMPP para Windows
Versin para Windows 98, NT, 2000, XP, Vista y Seven. Esta versin
contiene: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl,
mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport
System para Win32 y NetWare Systems v3.32, JpGraph, FileZilla FTP
Server, mcrypt, eAccelerator, SQLite, y WEB-DAV + mod_auth_mysql.
XAMPP para Mac OS X
La versin para Mac OS X contiene: Apache, MySQL, PHP & PEAR,
SQLite, Perl, ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg,
libpng, zlib, Ming, Webalizer, mod_perl, eAccelerator.
XAMPP para Solaris
La versin para Solaris (desarrollada y probada con Solaris 8, probada
con Solaris 9) contiene: Apache, MySQL, PHP & PEAR, Perl, ProFTPD,
phpMyAdmin, OpenSSL, Freetype2, libjpeg, libpng, zlib, expat, Ming,
Webalizer, pdf class.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 85 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ADVERTENCIA: Esta versin de XAMPP est an en sus primeras


etapas de desarrollo. Usar bajo propio riesgo!

XAMPP es gratuito
No me gusta el caro software comercial y XAMPP es nuestro intento
por mostrar que el software gratuito no tiene que ser malo.

8.1 Instalacin de XAMMP


Voy a explicar cmo debemos instalar el servidor apache XAMPP.
Descargaremos el programa gratuito desde Internet y lo ejecutamos

Le iremos dando a Next (siguiente), y en esta pantalla seleccionamos


todas las opciones y empezar la instalacin.

Una vez acabada la instalacin le damos a finalizar (Finish).

ING JUAN ALBERTO VAZQUEZ G.


Pgina 86 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Nos irn saliendo una serie de ventanas informativas e iremos


pulsando aceptar en todas.
En esta ltima nos felicita por la correcta instalacin de XAMPP y nos
da la opcin de abrir el panel de control. Seleccionaremos si.

Aqu se nos abre esta ventana que corresponde con el panel de control
de XAMPP. Para el correcto funcionamiento debemos observar que estn
funcionando (running), si no lo estn debemos iniciarlos presionando el
botn start (cuando est funcionando el botn se llama stop). Los mdulos
apache MySQL y FileZilla Una vez comprobado vamos a configurarlo
pulsando en admin del modulo apache.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 87 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Una vez pulsado admin sobre el rengln Apache se nos abrir esta
pantalla. (Previamente nos habr dado la opcin de elegir el idioma).

Bien pues, en esta pantalla observamos el men que aparece a nuestra


izquierda, y en la seccin de HERRAMIENTAS pulsamos phpMyAdmin,
con esto nos saldr la pantalla que corresponde con la base de datos.
Entonces crearemos una base nueva. Pondremos un nombre ( por
ejemplo mibase) y el idioma.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 88 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Le daremos a crear y si todo est bien nos pondr que la base de datos
mibase (o el nombre que hayas puesto) se cre.

Del lado izquierdo entremos ahora a la base de datos que ya hemos


creado.
ING JUAN ALBERTO VAZQUEZ G.
Pgina 89 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Le damos a PRIVILEGIOS para conocer hasta donde llegan los


permisos que tengo.

Nos aparecer un cuadro como este y observamos que nuestro usuario


se llama ROOT.
Y nuestro servidor LOCALHOST y no tenemos contrasea. Estos
datos sern imprescindibles.

Y despus de esto ya tenemos configurado el servidor apache XAMPP


en nuestro ordenador.

8.2 Construccin y modificacin de bases de datos con el asistente

Como se habr dado cuenta al ir avanzando a lo largo de este material


es posible realizar operaciones en las bases de datos y para hacerlo
contamos con los comandos de SQL o de una forma ms fcil con XAMPP
que nos simplificara el trabajo o por lo menos ya no tendremos que estar
memorizando cada comando.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 90 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Una de las operaciones ms comunes es crear una tabla y para hacerlo


la primera vez bastara con localizar del lado izquierdo nuestra base de
datos para posteriormente teclear el nombre que llevara nuestra tabla as
como la cantidad de campos que contendr y darle click en el botn
continuar que se localiza a la derecha..

En este caso yo he construido una tabla llamada mitabla que est


dentro de la base de datos mibase y esta adems integrada por tres
campos y luego de presionar el botn continuar.

En mi caso he dicho que quiero que el primer campo se llame nombre,


el segundo apellido y finalmente el tercero edad, por lo mismo las dos
primeras columnas que se refieren a los dos primeros campos los he
declarado del tipo varchar, mientras que la 3 columna la he declarado
entero, pero tambin puedo para cada uno de los campos cambiar el tipo
de variable.
Si alguno de los campos se autoincrementa es necesario considerarlo
previamente y marcarlo en el lugar indicado (casilla
AUTO_INCREMENT).
Cuando usted haya terminado esto entonces es el momento de darle
grabar OJO, si usted le diera continuar lo que estara haciendo seria
grabar,
agregar otro campo, tenga cuidado con esto y no se vaya a confundir.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 91 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

Hemos creado la tabla, pero la tabla aun no contiene ningn dato. En


la captura de pantalla que a continuacin se muestra se informa que
nuestra base de datos ha sido creada, adems se nos muestra informacin
sobre los campos que hemos agregado, para llenar ahora la tabla debemos
de entrar y para hacerlo bastara con ir al botn insertar que se localiza en
una de las pestaas de nuestra base de datos e ir llenando cada uno de los
campos.

En la siguiente imagen se muestra como se ha insertado el primero de


los campos.

Aconsejo no mover la columna que se llama funcin, solo dedicarse a


los valores. Algo que tambin es importante mencionar es que lo tecleado
en el espacio de cada valor puede superar el tamao de la variable, pero a
la hora en la que se pasa a la tabla solo se toman en cuenta la cantidad de
caracteres asignados, por ejemplo en el campo nombre he asignado 15
espacio por lo tanto puedo escribir Juan Alberto Vazquez pero solo se

ING JUAN ALBERTO VAZQUEZ G.


Pgina 92 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

pasara a la base de datos Juan Alberto Va que es lo que corresponde a los


15 espacios asignados (los espacios tambin cuentan).
Cuando haya terminado de escribir los campos deber darle continuar.
Y ahora se mostrara la siguiente otra pgina.

Esta es nuestra tabla en la cual podemos modificar (utilizando el lpiz)


la informacin de este campo o eliminar (utilizando la X) el registro de la
tabla. Cuando se tiene ms de un registro para modificar o eliminar
podemos hacer uso de las casillas de seleccin y hacerlo con los iconos que
aparecen debajo de nuestra tabla, que finalmente sirve para lo mismo.
El icono que aparece al lado de la X que se muestra abajo nos servir
para exportar la informacin mostrada en la tabla a otros formatos.
Si ahora queremos insertar un registro ms deberemos de seguir el
mismo procedimiento, es decir nos moveremos a la pestaa insertar,
insertaremos la informacin, le daremos continuar y tendremos otro dato
ms.
Cuando hayamos insertado ms de un registro en nuestra tabla
entonces podemos ordenarlo en base a apellidos, a edad o a nombre con
solo dar click en el nombre de la columna.
Es cierto si piensa que lo expuesto en esta unidad ha sido ms fcil
que las anteriores pero tambin es cierto que a la hora de trabajar no
siempre se cuenta con XAMPP y por lo mismo debo de trabajar desde
MySQL o incluso desde SQL, y conste que lo digo por experiencia propia.
Hemos concluido nuestro material, ha obtenido usted un aprendizaje
bsico sobre bases de datos, MySQL tiene mucho ms que explorarle pero
su dejo que su inters lo lleve a un conocimiento ms profundo que queda
fuera de lo planeado dentro de nuestro programa acadmico, un
conocimiento que no est por dems que usted adquiera estudiando
minuciosamente en sus ratos libres o solicitando la atencin de sus
profesores que ser recompensado cuando usted pueda ofrecer sus
servicios sin necesidad de tener que pagar a un webmaster, que por cierto
son muy caros y reducen significativamente sus ganancias.
Vamos con ganas.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 93 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

ACTIVIDADES DE APRENDIZAJE

Elabore una base de datos que contenga las tres primeras


calificaciones de alumnos, adems de sus datos ms importantes,
utilizando XAMPP

AUTOEVALUACION

Manteniendo cerrada cualquier pgina de internet y solo bastndole


su memoria explique los procedimientos que es necesario seguir en
XAMPP para:
a) Crear una base de datos.
b) Crear una tabla.
c) Insertar un campo en una tabla.
d) Insertar un registro en una tabla.
e) Eliminar una base de datos.

ING JUAN ALBERTO VAZQUEZ G.


Pgina 94 de 95
CESVER MATERIAL BIBLIOGRAFICO DE APOYO DIDACTICO
NEGOCIOS Y COMERCIO INTERNACIONALES INFORMATICA 2 SEMESTRE

BIBLIOGRAFIA
Manual de referencia de MySQL.

La Biblia MySQL.
Ian Gilfillan
Ed Anaya.

ENLACES RELACIONADOS
http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060029/lecciones/cap10-4.html
http://www.peiper.com.ar/recursos/ciencias_computacion/bases_datos5.pdf
http://www.jorgesanchez.net/bd/mysql.pdf
http://yaqui.mxl.uabc.mx/~bdatos/sem05-2/practica7.pdf
http://downloads.mysql.com/docs/refman-5.0-es.a4.pdf
http://www.programacion.com/articulo/tutorial_de_php_y_mysql_7/1

www.cesver.edu.mx
Tel. 01-228-8182038 01-228-8182039
Serafn Olarte 43 Col. Mrtires de Chicago. Xalapa ver

ING JUAN ALBERTO VAZQUEZ G.


Pgina 95 de 95

S-ar putea să vă placă și