Está en la página 1de 20

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

PRÁCTICA 5,6

BASES DE DATOS

2CM5

ALUMNO:
RUBIO VARGAS NADIA PAULINA

PROFESOR: HERNÁNDEZ RUBIO ERIKA


Práctica 5 y 6
Introducción

Un lenguaje de manipulación de datos (DML) es una familia de elementos de sintaxis similar a un lenguaje
de programación utilizado para seleccionar, insertar, eliminar y actualizar datos en una base de datos.
La realización de consultas de sólo lectura de los datos a veces también se considera un componente de
la DML.

Los lenguajes de manipulación de datos tienen su capacidad funcional, organizado por la palabra inicial
en un comunicado, que casi siempre es un verbo. En el caso de SQL, estos verbos son:

 DELETE FROM ... WHERE ...


 SELECT ... FROM ... WHERE ...
 INSERT INTO ... VALUES ...
 UPDATE ... SET ... WHERE ...

También si queremos hacer consultas y tenemos el mismo nombre de un atributo en diferentes tablas
podemos utilizar NombreTabla.NombreColumna. A esto que se acaba de hacer se le llama join.

El join nos permite combinar varias tablas haciendo coincidir los valores de las columas que nos interesen.
Es decir, si tenemos dos tablas A y B que contienen una (o varias) columnas con el mismo nombre,
podemos relacionar ambas tablas por la columna del mismo nombre.

Por cada registro de la columna en la tabla A que también esté en la columna de la tabla B, obtendremos
una relación. Lo que quiere decir que se produce un producto cartesiano de cada valor de la columna de
la tabla A, por todos los valores coincidentes de la columna en la tabla B.

Cuando se relacionan varias tablas es normal que una misma columna forme parte de varias tablas.
Para evitar errores de nombres duplicados podemos hacer dos cosas. Una es utilizar la sintaxis que
arriba se mencionó:

-- NombreTabla.NombreColumna.
select * from dbo.Products, dbo.Categories
where dbo.Products.CategoryID = dbo.Categories.CategoryID

La otra forma es dar un alias a cada tabla. Ejemplo:

select * from dbo.Products P, dbo.Categories C


where P.CategoryID = C.CategoryID

Y la función COUNT (*) cuenta el número de filas que tienes de cierto dato.

Desarrollo práctica 5

Para el desarrollo de la práctica 5 emplearemos el DML tomando en cuenta los comandos que se
mencionaron arriba: DELETE, SELECT, INSERT INTO y también el comando que ya habiamos visto
anteriormente ALTER TABLE que se utiliza para añadir, eliminar o modificar las columnas en una tabla
existente.

Primeramente tenemos el siguiente diagrama:

A partir de él se tuvo que cumplir con los siguientes puntos:


Primero creamos una base de datos y a partir de ella cargamos la de sams.

Una vez cargada la base de datos, ahora si procedemos a realizar los puntos.

Usamos primero un alter table para cambiar el nombre de la tabla socio a socioSC
Igualmente para cambiar el campo nombre en producto a “producto” usamos un alter table

De la misma manera para los siguientes dos pasos usamos un alter table para borrar tel en club y agregar
contenido_neto en producto.
Podemos observar como cambian las tablas de acuerdo a la modificación que se le hizo.

Para los siguientes pasos nos solicitan hacer consultas de diferentes tipos, según podemos ver en la
redacción de la práctica.

5. select * from gerente order by nombre;


Aquí podemos ver que obtenemos 200 registro de
la tabla gerente ordenados de A-Z los nombres.

6.- select gerente.nombre, club.nombre from gerente, club where club.idClub= gerente.idClub and
club.nombre='Toluca' order by 1 desc;
Vemos aquí que solo obtuvimos dos registros de buscar nombre de gerente y el nombre del club al que
pertenecen que tiene que ser Toluca.

7.- select estado.nombre from club, estado where club.idEdo=estado.idEdo;

Aquí nos salen todos los registros del


nombre de los estados registrados
en la relación Club. Como podemos
ver, nos sale un listado de los
estados y son 108 registros.

8.- select gerente.nombre, club.nombre from gerente, club where club.idClub=gerente.idClub;

Aquí la consulta nos muestra el nombre del gerente y el nombre del Sam’s Club en el que labora.
9.- select nombre AS SOCIOS_SANCHEZ from socioSC where nombre like '%SANCHEZ%';

10.- En este caso, no es una consulta, como es dar de alta, hay que insertar datos que te piden, para
inserar datos a la base, usamos el comando INSERT INTO tablaNombre VALUES(valores);

 insert into gerente values(302, 'CUEVAS RASGADO ALMA DELIA', (SELECT idClub from club where
club.nombre='Hiperplaza Texcoco'));
 insert into gerente values(303, 'OCAMPO BOTELLO FABIOLA', (SELECT idClub from club where
club.nombre='El molinito'));
 insert into gerente values(304, 'CATALAN SALGADO EDGAR ARMANDO', (SELECT idClub from club where
club.nombre='Tepeyac'));

11.- De igual manera que el 10, hay que insertar nuestros propios datos, pero ahora no en la tabla gerente,
sino en la de socioSC.

 insert into socioSC values(193, 'RUBIO VARGAS NADIA PAULINA', 'AV. INDEPENDENCIA NO.191 COL.
INDEPENDENCIA C.P. 03630', '55-60-64-38-44');
 insert into socioclub values(193,55);

12.- Como aquí tenemos el caso de que los atributos de las tablas se llaman iguales, lo especificamos con
el join: select socioSC.nombre, club.nombre from socioSC, club, socioclub where socioSC.idSocio =
socioclub.idSocio and club.idClub= socioclub.idClub and socioSC.nombre like '%GARCIA%';
13.-

select * from sociosSC where nombre like '%GONZALEZ%' and nombre not like 'GONZALES%';

delete from socioSC where nombre LIKE '% GONZALEZ%';

14.-
Confirmando que si sea de los gerentes que se apellidan flores

Desarrollo práctica 6

Para el desarrollo de esta práctica es necesario tener en cuenta lo último citado en la introducción, de
el join y sus alias que se le pueden dar a las tablas.

Primero creamos y cargamos la base de datos como en la práctica anterior.

Teniendo en cuenta que la base de datos esta basada en el siguiente diagrama

Y tenemos que realizar los siguientes pasos:


1.- select articulo.nombre, departamento.nombre from articulo, departamento where
articulo.idDepto=departamento.idDepto and departamento.nombre IN ('Vinyl','Cds') order by 1;
Nosotros igualamos a la hora de hacer la consulta los id's y que haga un filtro para bajar el número de
registros que estamos consultando.

2.-

select m.nombre, ubicacion, d.nombre from mixup m, mixupdepto md, departamento d


where m.idmixUp=md.idmixUp and
d.idDepto= md.idDepto and
m.ubicacion='VERACRUZ';

Como habiamos mencionado antes, para que las consultas sean más rápidas, podemos asignarle un alias
a la tabla.
3.- select s.nombre, s.tel, m.nombre from socio s, sociomix sm, mixup m
where s.idSocio=sm.idSocio and
m.idmixUp=sm.idmixUp and
s.nombre like '%HERNANDEZ%';

Aquí es lo mismo que en la otra, sólo que aquí usamos un like para poder especificar que queremos
conocer a los que fueron dados de alta como “HERNANDEZ” en alguno de sus apellidos y como es en
alguno de sus apellidos, usamos el % antes y después de hernandez.

4.- select s.nombre, m.nombre from socio s,sociomix sm, mixup m


where s.idSocio=sm.idSocio and
m.idmixUp=sm.idmixUp and
m.nombre like "GALERIAS";

Aquí como queremos que sólo sea los que estan dados de alta en mixup GALERIAS, pues sólo ponemos la
palabra después del like entre “”.
5.- select a.nombre, a.precioUnitario, d.nombre from articulo a, departamento d, mixupdepto md,
mixup m
where m.idmixUp=md.idmixUp and
d.idDepto=md.idDepto and
a.idDepto=d.idDepto and
a.precioUnitario between 500 and 2000 and m.nombre= 'PLAZA ANGELOPOLIS';

6.- select nombre, dir from mixup where dir like '%39670' or dir like '%64620' or dir like '%72450';

7.- select a.nombre, m.nombre, ubicacion from asociado a, mixup m where ubicacion ='GUADALAJARA'
and a.idmixUp=m.idmixUp;
8.- select a.nombre, descripcion, d.nombre from articulo a, departamento d
where d.idDepto = a.idDepto and
d.nombre ='Cds';

9.- select * from socio where nombre like '% % %E%' and nombre like '%GARCIA%';
Como queremos que nos dé todos los datos de aquellos socios que se apellidan GARCIA y tengan al menos
una E en su nombre, usamos el comando select * from… y dos like, uno para indicar el apellido GARCIA y
otro las E en su nombre.

10.- select a.nombre, m.nombre, d.nombre from articulo a, departamento d, mixupdepto md, mixup m
where m.idmixUp=md.idmixUp and
d.idDepto=md.idDepto and
a.idDepto=d.idDepto and
d.nombre= 'iShop';

Al ejecutar el comando, te lanza 1748 datos encontrados con las especificaciones que nos pide el inciso
10, listar el nombre de los artículos que pertenecen al departamento iShop y el nombre del mixup en
dónde se venden.

11.- select distinct (a.nombre), m.nombre from asociado a, mixup m, mixupdepto md, departamento d

Where d.iddepto = md.iddepto and

md.idmixUp= m.idmixUp and

a.idmixUp = m.idmixUp and

(d.nombre = “Libros” or d.nombre=”Accesorios”) order by a.nombre;


Aquí podemos observar que los registros son 77 que tengan como nombre de departamento ACCESORIOS
y LIBROS.

12.- select COUNT(*) from mixup;

13.- select ubicacion, COUNT(nombre) from mixup group by ubicacion order by 2 desc;
14.-

select d.nombre, COUNT(a.nombre) from departamento d, articulo a


where d.iddepto=a.iddepto
group by d.nombre order by count(a.nombre);
Conclusiones

De estas dos prácticas se puede concluir que se cumplió con el objetivo que era manipular datos por
medio del lenguaje DML, y que además se pudieron realizar todas las consultas con éxito, aunque hay
que ser caudelosos porque mysql tiene “jerarquías” por lo que hay que poner parentesis en algunos lados
y leer bien el enunciado para saber que te piden para ver que comando vas a ejecutar y de que forma.

Además se aprendió como usar el join de manera correcta.

También podría gustarte