You are on page 1of 8

Laboratorio de Base de Datos Pgina: 1

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03






MySQL-Comandos
Especializados




I
OBJETIVOS

! Ms comandos SQL


II
TEMAS A TRATAR

! Crear Tablas
! Cargar Datos en una tabla
! Extraer datos de una tabla
! Seleccionar, borrar, actualizar datos especficos.


III
MARCO TEORICO

CREAR TABLAS

La creacin de la base de datos ha sido una tarea sencilla, pero hasta ahora permanece
vaca, como le muestra SHOW TABLES:
mysql> SHOW TABLES;
Empty set (0.00 sec)

La parte difcil es decidir cmo debera ser la estructura de su base de datos: qu tablas
necesitar, y qu columnas habr en cada tabla.
Quizs quiera una tabla para contener un registro por cada mascota. Esta tabla puede
llamarse pet, y debera contener, como mnimo, el nombre de cada animal. Dado que el
nombre no es muy relevante por s mismo, tendra que tener ms informacin. Por
ejemplo, si ms de una persona en su familia tendr mascotas, puede listar tambin el
dueo de cada animal. Y algunos otros datos descriptivos bsicos, como especie y sexo.
Sesin
3
Laboratorio de Base de Datos Pgina: 2

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
Qu hacer con la edad? Podra ser de inters, pero no es un buen dato para almacenar en
una base de datos. La edad cambia a medida que pasa el tiempo, lo cual significa que
debera actualizar la base de datos a menudo. En lugar de esto, es mejor almacenar un
valor fijo, como la fecha de nacimiento. De este modo, cada vez que requiera saber la
edad, podr calcularla como la diferencia entre la fecha de nacimiento y la fecha actual.
MySQL provee funciones para realizar clculos con fechas, por lo que no es dificultoso.
Almacenar la fecha de nacimiento en lugar de la edad tiene otras ventajas:
Puede usar la base de datos para tareas como generar recordatorios para los prximos
cumpleaos de mascotas. (Si piensa que este tipo de consultas no es importante,
considere que es lo mismo que hara en un contexto de base de datos de negocios
para identificar aquellos clientes a los que habr que enviar una tarjeta por su
cumpleaos, para conseguir ese toque personal con la asistencia del ordenador).
Puede calcular edades en relacin a otras fechas adems de la actual. Por ejemplo,
almacenar la fecha de muerte de una mascota le posibilita calcular la edad que
tena a ese momento.
Probablemente pensar en otros tipos de informacin que resultaran tiles dentro de la
tabla pet pero los identificados hasta ahora son suficientes: name (nombre), owner
(propietario), species (especie), sex (sexo), birth (nacimiento) y death (muerte).
Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla:
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);


El tipo de dato VARCHAR es una buena eleccin para las columnas name, owner, y
species porque los datos que all se almacenan no son de longitud uniforme. En realidad
no es necesario que todas estas columnas tengan la misma longitud ni que sta sea 20. En
MySQL 5.0.3 y versiones posteriores, normalmente se puede adoptar cualquier longitud
entre 1 y 65535, segn lo que se crea ms razonable. (Nota: Anteriormente a MySQL
5.0.3, el lmite de longitud era 255.) Si en el futuro debiera aumentar la longitud de estos
campos, MySQL tiene la sentencia ALTER TABLE.
Hay varios tipos de datos que podran usarse para representar el sexo en los registros de
animales, tal como 'm' y 'f', o 'male' (masculino) y 'female' (femenino). Lo ms simple
es usar los caracteres 'm' y 'f'.
Es obvio el uso del tipo de dato DATE para las columnas birth y death.
Luego de crear una tabla, SHOW TABLES debera producir una salida:
mysql> SHOW TABLES;
+------------------------+
| Tables in menagerie |
+------------------------+
| pet |
+------------------------+

Laboratorio de Base de Datos Pgina: 3

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
Para verificar que la tabla ha sido creada en la forma esperada, utilice la sentencia
DESCRIBE:
mysql> DESCRIBE pet;

+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+

DESCRIBE puede ser utilizada en cualquier momento, por ejemplo, si olvida los
nombres o el tipo de dato de las columnas de la tabla.

Cargar datos en una tabla

Luego de crear la tabla, necesitar completarla con datos. Para esto, le sern de utilidad
las sentencias LOAD DATA e INSERT.
Suponga que los registros de mascotas fueran como los mostrados a continuacin.
(Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD', esto
puede ser diferente a lo que acostumbra utilizar).
name owner species sex birth death
Fluffy Harold cat f 1993-02-
04

Claws Gwen cat m 1994-03-
17

Buffy Harold dog f 1989-05-
13

Fang Benny dog m 1990-08-
27

Bowser Diane dog m 1979-08-
31
1995-07-
29
Chirpy Gwen bird f 1998-09-
11

Whistler Gwen bird 1997-12-
09

Slim Benny snake m 1996-04-
29

Laboratorio de Base de Datos Pgina: 4

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
Dado que est comenzando con una tabla vaca, una forma fcil de completarla es
creando un fichero de texto que contenga una lnea por cada animal, y luego insertando el
contenido del fichero en la tabla mediante una sola sentencia.
Para esto, debera crear un fichero de texto llamado pet.txt, conteniendo un registro por
linea, con cada valor separado por un carcter de tabulacin, y dispuestos en el orden en
el cual se especificaron las columnas en la sentencia CREATE TABLE. Para valores
ausentes (como sexo desconocido o fechas de muerte de animales con vida), puede usar
valores NULL. Para representar estos valores en el archivo de texto, utilice \N (barra
diagonal y N mayscula). Por ejemplo, el registro de Whistler se vera del modo siguiente
(el espacio en blanco entre cada valor es un solo carcter de tabulacin):
name own
er
speci
es
s
e
x
birth dea
th
Whist
ler
Gwe
n
bird \
N
1997-
12-09
\N

Para cargar el fichero pet.txt dentro de la tabla pet, utilice este comando:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO
TABLE pet;

Si trabaja en Windows, con un editor que emplea \r\n (retorno de carro + nueva linea)
como caracteres de fin de lnea, debera usar:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO
TABLE pet
-> LINES TERMINATED BY '\r\n';

(En un ordenador Apple bajo OS X, probablemente quiera utilizar LINES
TERMINATED BY '\r'.)
Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que
actuarn como separador de campo y fin de lnea, pero los valores por defecto son
tabulacin y nueva lnea. Estos son suficientes para que la sentencia lea correctamente el
fichero pet.txt
Si ocurre un error al ejecutar la sentencia, probablemente se deba a que su instalacin de
MySQL no tiene habilitada por defecto la capacidad de manejar archivos locales.
Consulte Seccin 5.5.4, Cuestiones relacionadas con la seguridad y LOAD DATA
LOCAL para obtener informacin sobre cmo cambiar esto.
Cuando lo que desea es agregar nuevos registros de a uno por vez, la sentencia INSERT
resulta de utilidad. De esta sencilla manera, se suministran valores para cada columna,
dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE
TABLE statement. Suponga que Diane obtiene un nuevo hamster llamado "Puffball". Se
podra agregar un nuevo registro, usando la sentencia INSERT de este modo:
Laboratorio de Base de Datos Pgina: 5

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-
03-30',NULL);
Observe que las cadenas alfanumricas y las fechas son representados como cadenas
delimitadas por apstrofos. Tambin, con INSERT, se pueden insertar valores NULL
directamente, para indicar un valor ausente. No se debe utilizar \N como se hace con
LOAD DATA.
A partir de este ejemplo queda demostrado que lleva mucho ms trabajo realizar una
carga inicial de registros empleando varias sentencias INSERT que si se hace mediante la
sentencia LOAD DATA.

Extraer datos de una tabla

La sentencia SELECT es utilizada para traer informacin desde una tabla. La sintaxis
general de esta sentencia es:

SELECT seleccionar_Esto
FROM desde_tabla
WHERE condiciones;

seleccionar_esto es lo que se quiere ver. Puede ser una lista de columnas, o * para indicar
todas las columnas. desde_tablaindica la tabla donde estn los datos a recuperar. La
clusula WHERE es opcional. Si est presente, condiciones representa las condiciones
que cada registro debe cumplir para retornar como resultado.


La forma ms simple de SELECT recupera todo lo que hay en la tabla:
mysql> SELECT * FROM pet;

+----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+--------+---------+------+------------+------------+
Esta forma de SELECT es til si se quiere revisar la tabla completa, por ejemplo,
despues de haberla cargado con un conjunto de datos inicial. Por ejemplo, puede ocurrir
que la fecha de nacimiento de Bowser no parezca correcta. Consultando los papeles de
pedigri, se descubre que el ao correcto de nacimiento es 1989, no 1979.
Existen al menos dos formas de solucionarlo:
Laboratorio de Base de Datos Pgina: 6

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
Editando el fichero pet.txt para corregir el error, vaciando la tabla y volviendola a llenar
con los datos. Para esto se usan las sentencias DELETE y LOAD DATA:
mysql> DELETE FROM pet;
mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

No obstante, si opta por esto, deber volver a cargar el registro de Puffball.

Corrigiendo nicamente el registro errneo. Para esto se usa la sentencia UPDATE:

mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

UPDATE modifica solo el registro en cuestin y no requiere que se vuelva a llenar la
tabla.


Seleccionar registros especficos

Como se ha visto en la seccin anterior, es fcil recuperar una tabla en su totalidad. Slo
debe omitir la clusula WHERE en la sentencia SELECT. Pero, generalmente, no se
desea ver la tabla completa, especialmente cuando alcanza un gran tamao. En cambio,
usualmente, se tiene inters en obtener una respuesta para una consulta en particular, en
cuyo caso se especifican algunas restricciones para la informacin que se traer. A
continuacin se vern algunas consultas que responden preguntas acerca de las mascotas.
Se pueden seleccionar slo algunos registros de la tabla. Por ejemplo, si quisiera verificar
los cambios realizados sobre la fecha de nacimiento de Bowser, seleccione el registro de
Bowser de esta manera:
mysql> SELECT * FROM pet WHERE name = 'Bowser';
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
La salida confirma que el ao fue correctamente registrado como 1989, ya no es 1979.
Normalmente, las comparaciones de cadenas no son case sensitive, por eso puede escribir
el nombre como 'bowser', 'BOWSER', etc. El resultado de la consulta ser el mismo.
Se pueden indicar condiciones a cumplir por cualquier columna, no solamente por name.
Por ejemplo, si quisiera saber qu animales han nacido luego de 1998, necesita evaluar la
columna birth:
mysql> SELECT * FROM pet WHERE birth > '1998-1-1';

+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
Laboratorio de Base de Datos Pgina: 7

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+-------+---------+------+------------+-------+
Se pueden combinar condiciones, por ejemplo para localizar perros hembra:
mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

La consulta anterior emplea el operador lgico AND. Tambin existe el operador OR:
mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+-------+---------+------+------------+-------+

AND and OR pueden ser combinadas, si bien AND tiene mayor precedencia que OR. Si
utiliza ambos operadores, es buena idea emplear parntesis para indicar explicitamente la
forma en que las condiciones deben agruparse:
mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
-> OR (species = 'dog' AND sex = 'f');

+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+


IV
(La prctica tiene una duracin de 04 horas) ACTIVIDADES

01. Realice la invocacin a MySQL.
02. Compruebe que el servidor MySQL este funcionando correctamente.
03. Cree la BD Veterinaria
04. Establezca en uso la BD Veterinaria y cree la tabla pet visto en el marco terico
05. Inserte 20 registros adicionales a los vistos en el marco terico.
06. Cree la tabla propietario con los siguientes campos names, lastnames, address.
07. Visualice la tabla propietario.
Laboratorio de Base de Datos Pgina: 8

Guillermo Caldern Ruiz, Eveling G. Castro Gutierrez Sesin 03
08. Inserte 5 registros a la tabla propietario con el comando INSERT.
09. Cargue 20 registros a la tabla propietario con el comando LOAD.
10. Utilice el comando DELETE para borrar los registros de las mascotas que cumplan
con la condicion que su fecha de nacimiento sea menor de 1990
11. Utilice el comando UPDATE para actualizar las fechas de nacimiento de las
mascotas que su fecha de nacimiento sea menor a 1999 por 2004
12. Liste los registros que cumplan con la siguiente condicin : nombre empiece con B y
la especie sea un perro (dog).

V

CUESTIONARIO

1. Qu es ?
2. Investigue Ud. acerca de las funciones de tratamiento de cadenas que se utilizan en
MySQL para su mejor desempeo en su funcionamiento.

You might also like