Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Una inmobiliaria vende inmuebles; los inmuebles pueden ser: casa, departamento,
local o terreno.
tipo de inmueble:
create table inmuebles_cjm(
tipo enum('casa','dpto','local','terreno')not null,
domicilio varchar(30),
propietario varchar(50),
precio decimal unsigned);
27- Una persona quiere inscribirse en un curso de "PHP" y slo tiene disponibles
los sbados. Localice los cursos de "PHP" que se dictan solamente los sbados:
28- Otra persona quiere aprender a disear pginas web, tiene disponibles todas las
maanas excepto los mircoles. Vea si existe algn curso que cumpla con sus
necesidades:
select * from cursos_cjm where tema like '%paginas web%' and horario='AM' and dias
not like '%miercoles%';
29- Otra persona necesita aprender JavaScript, tiene disponibles todos las tardes
excepto los jueves y quiere un curso que no supere las 15 clases para el mes de
setiembre. Busque algn curso para esta persona:
select * from cursos_cjm where tema='%javascript%' and horario='PM' and not
find_in_set('jueves',dias)>0 and clases<=15 and month(fechainicio)=9;
45- Seleccione todos los viajes que no incluyan "Acapulco" y que incluyan pensin
completa:
select * from viajes_cjm where ciudades not like '%Acapulco%' and
pension='completa';
Una inmobiliaria guarda los datos de sus inmuebles en venta en una tabla llamada
"inmuebles".
50- Busque todos los inmuebles que tengan "patio": select * from inmuebles_cjm
where detalles like '%patio%';
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", tambin
tiene una tabla "provincias" donde registra los nombres de las provincias.
53- Ingrese algunos registros para ambas tablas: insert into provincias (nombre)
values('Cordoba'); insert into provincias (nombre) values('Santa Fe'); insert into
provincias (nombre) values('Corrientes'); insert into provincias (nombre)
values('Misiones'); insert into provincias (nombre) values('Salta');
55- Obtenga la misma informacin anterior pero ordenada por nombre del cliente:
select c.nombre,c.domicilio,c.ciudad,p.nombre,c.telefono from clientes_cjm as c
join provincias_cjm as p on c.codigoProvincia=p.codigo order by c.nombre;
56- Omita la referencia a las tablas en la condicin "on" para verificar que la
sentencia no se ejecuta porque el nombre del campo "codigo" es ambiguo (ambas
tablas lo tienen):
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", tambin
tiene una tabla "provincias" donde registra los nombres de las provincias.
62- Vea cmo afect el cambio a la tabla "clientes": select * from clientes_cjm;
El cliente de "Bahia Blanca" con cdigo de provincia "15" ("Buenos Aires") ahora
tiene "1" ("Cordoba") y el cliente con cdigo de provincia "30" ("Misiones") ahora
almacena "3" (valor inexistente en "provincias").
64- Intente modificar la clave primaria en "provincias" para que se corresponda con
"codigoprovincia" de "clientes":
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", tambin
tiene una tabla "provincias" donde registra los nombres de las provincias.
65- Elimine las tablas "clientes" y "provincias", si existen: drop table if exists
clientes_cjm, provincias_cjm;
67- Ingrese algunos registros para ambas tablas: insert into provincias (nombre)
values('Cordoba'); insert into provincias (nombre) values('Santa Fe'); insert into
provincias (nombre) values('Corrientes'); insert into provincias (nombre)
values('Misiones'); insert into provincias (nombre) values('Salta');
70- Omita la referencia a las tablas en la condicin "on" para verificar que la
sentencia no se ejecuta porque el nombre del campo "codigo" es ambiguo (ambas
tablas lo tienen):
Un club dicta clases de distintos deportes. En una tabla llamada "socios" guarda
los datos de sus socios y en una tabla denominada "inscriptos" almacena la
informacin necesaria para las inscripciones de los socios a los distintos
deportes.
75- Muestre los nombres de los socios que no se han inscripto nunca en un deporte:
select s.nombre from socios_cjm as s left join inscriptos_cjm as i on
s.documento=i.documento where i.documento is null;
76- Omita la referencia a las tablas en la condicin "on" para verificar que la
sentencia no se ejecuta porque el nombre del campo "documento" es ambiguo (ambas
tablas lo tienen):
Un club de barrio realiza una rifa anual y guarda los datos de las rifas en dos
tablas, una denominada "premios" y otra llamada "numerosrifa".
80- Muestre todos los nmeros de rifas vendidos ("numerosrifas") y realice un "left
join" mostrando la posicin y el premio:
note que la posicin "5" no aparece en la lista porque el nmero ganador de esa
posicin no fue vendido, no se encuentra en la tabla "premios". Y note que los
nmeros vendidos que no ganaron tiene la fila seteada a "null".
81- Muestre los mismos datos anteriores pero teniendo en cuenta los nmeros
ganadores solamente:
82- Realice un "left join" pero en esta ocasin busque los nmeros ganadores de la
tabla "premios" en la tabla "numerosrifa":
select nr.numero,p.posicion,p.premio from premios_cjm as p left join
numerosrifa_cjm as nr on p.numeroganador=nr.numero;
83- Realice el mismo "join" anterior pero sin considerar los valores de "premios"
que no encuentren coincidencia en "numerosrifa".
Un club dicta clases de distintos deportes. En una tabla llamada "socios" guarda
los datos de sus
Note que el socio que no est inscripto en ningn deporte tiene la fila seteada a
"null".
89- Ingrese una inscripcin de alguien que no sea socio (documento que no se
encuentre en la tabla "socios"):
insert into inscriptos_cjm values ('26333444','basquet','2006','n');
Una empresa de seguridad almacena los datos de sus guardias de seguridad en una
tabla llamada "guardias". tambin almacena los distintos sitios que solicitaron sus
servicios en una tabla llamada "tareas".
94- La empresa quiere que todos sus empleados realicen todas las tareas. Realice
una "cross join":
Devuelve el producto cartesiano de ambas tablas, combina todos los registros de una
tabla con todos
los registros de la otra.
95- Obtenga la misma salida realizando un simple "join" sin parte "on":
select nombre,t.domicilio,descripcion from guardias_cjm join tareas_cjm as t;
99- Cada equipo jugar con todos los dems 2 veces, una vez en cada sede. Realice
un "cross join"
para combinar los equipos teniendo en cuenta que un equipo no juega consigo mismo:
select e1.nombre,e2.nombre,e1.barrio as 'sede' from equipos_cjm as e1 cross join
equipos_cjm as e2 where e1.nombre<>e2.nombre;
104- La agencia necesita la combinacin de todas las personas de sexo femenino con
las de sexo masculino. Use un "join" sin parte "on" y establezca como condicin que
las personas de la primera tabla sean de sexo femenino y las de la segunda tabla de
sexo masculino:
106- Se pide, adems, que las edades de las posibles parejas no tengan una
diferencia superior a 10 aos:
select c1.nombre,c1.edad,c1.sexo, c2.nombre,c2.edad,c2.sexo from clientes_cjm as c1
cross join clientes_cjm as c2 where c1.sexo='f' and c2.sexo='m' and c2.edad -
c1.edad between -10 and 10;
Un club dicta clases de distintos deportes. En una tabla llamada "socios" guarda
los datos de sus socios y en una tabla denominada "inscriptos" almacena la
informacin necesaria para las inscripciones de los socios a los distintos
deportes.
Note que el socio que no est inscripto en ningn deporte tiene la fila seteada a
"null".
113- Realice un "natural left join" para obtener la misma salida anterior:
select nombre,i.* from socios_cjm as s natural left join inscriptos_cjm as i;
114- Realice un "natural right join" para obtener la misma salida anterior:
select nombre,i.* from inscriptos_cjm as i natural right join socios_cjm as s;
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", tambin
tiene una tabla "provincias" donde registra los nombres de las provincias de las
cuales son oriundos los clientes.
118- Agrupe por nombre de provincia y cuente la cantidad de clientes por provincia
usando un "join":
119- Agrupe por nombre de provincia y cuente la cantidad de clientes por provincia
usando un "left join":
120- Agrupe por nombre de provincia y muestre la cantidad de clientes por provincia
usando un "join" de las provincias en las cuales tenemos 2 o ms clientes:
select p.nombre, count(c.codigoprovincia) as 'cant. clientes' from provincias_cjm
as p join clientes_cjm as c on p.codigo=c.codigoprovincia group by p.nombre having
count(c.codigoprovincia)>=2;
Un comercio que tiene un stand en una feria registra en una tabla llamada
"visitantes" algunos datos de las personas que visitan o compran en su stand para
luego enviarle publicidad de sus productos.
125- Muestre la cantidad de visitantes que hicieron alguna compra, agrupados por
nombre de la ciudad:
select c.nombre,count(v.codigociudad) from ciudades_cjm as c join visitantes_cjm as
v on c.codigo=v.codigociudad where v.montocompra>0 group by c.nombre;
126- Muestre la suma de las compras y el promedio de las mismas, agrupados por
ciudad y sexo:
131- Muestre la cantidad de departamentos por edificio con el nombre del barrio:
select edificio,nombre,count(*) from departamentos_cjm as d join barrios_cjm as b
on d.codigobarrio=b.codigo group by edificio;
132- Muestre el promedio de los precios de los departamentos agrupados por barrio:
select nombre,avg(precio) from departamentos_cjm as d join barrios_cjm as b on
d.codigobarrio=b.codigo group by nombre;
133- Muestre el promedio de los precios de los departamentos agrupados por barrio
teniendo en cuenta todos los barrios, incluso aquellos en los cuales no hay
departamentos disponibles:
Un video club que alquila pelculas en video guarda informacin de sus pelculas en
alquiler y los alquileres en las tabla "peliculas" y "alquileres" respectivamente.
141- Muestre la cantidad de pelculas alquiladas por mes por cada socio ordenado
por mes:
select socio,monthname(a.fechaprestamo) as mes, count(a.codigopelicula) from
alquileres_cjm group by socio, mes order by mes;
Un video club que alquila pelculas en video guarda informacin de sus pelculas en
alquiler, sus socios y los alquileres en 3 tablas llamadas "peliculas", "socios" y
"alquileres" respectivamente.
149- Muestre la cantidad de pelculas alquiladas por mes por cada socio ordenado
por mes:
select s.nombre,monthname(a.fechaprestamo) as mes, count(a.codigopelicula) from
socios_cjm as s join alquileres_cjm as a on s.codigo=a.codigosocio group by
s.nombre, mes order by mes;
153- Intente ingresar un registro con clave primaria repetida (legajo "3567"):
insert into alumnos_cjm values('3567','Marcos Pereyra','30000333','Guemes 134');
aparece un mensaje de error.
note que el alumno con documento "30000333" se elimin y se reemplaz por el nuevo
registro.
Un comercio que vende por mayor artculos de librera y papelera tiene una tabla
llamada "articulos".
171- El comercio, que hasta ahora ha vendido sus artculos por mayor, comenzar la
venta por menor. Necesita alterar la tabla agregando un campo para almacenar el
precio por menor para cada artculo. Agrege un campo llamado "preciopormenor":
alter table articulos_cjm add preciopormenor decimal(4,2) unsigned;
incrementado en un 10%:
update articulos_cjm set preciopormenor=precio+(precio*0.10);
187- Modifique el campo "nombre" para poder almacenar una longitud de 40 caracteres
y que no permita
valores nulos:
alter table peliculas_cjm modify nombre varchar(40) not null;
Un comercio que vende por mayor artculos de librera y papelera tiene una tabla
llamada "articulos".
193- El comercio, que hasta ahora ha vendido sus artculos por mayor comenzar la
venta por menor. Necesita alterar la tabla modificando el nombre del campo "precio"
por "preciopormayor" adems desea redefinirlo como no nulo:
194- Tambin necesita alterar la tabla agregando un campo para almacenar el precio
por menor para cada artculo. Agrege un campo llamado "preciopormenor" que no
permita valores nulos:
alter table articulos_cjm add preciopormenor decimal(4,2) unsigned not null;
200- Cambie el nombre del campo "actor" por "protagonista" y modifquelo para que
permita valores nulos:
201- Cambie el campo "nombre" por "titulo" sin alterar los otros atributos:
alter table peliculas_cjm change nombre titulo varchar(40) not null;