EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y

Anuncio
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
ALIAS
Problema :
Una empresa tiene registrados sus clientes en una tabla llamada "clientes".
1- Elimine la tabla "clientes", si existe.
2- Créela con la siguiente estructura:
create table clientes (
codigo int unsigned auto_increment,
nombre varchar(30) not null,
domicilio varchar(30),
ciudad varchar(20),
provincia varchar (20),
telefono varchar(11),
primary key(codigo)
);
3- Ingrese algunos registros:
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Marcos', 'Colon 111', 'Córdoba','Cordoba','null');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Ana', 'San Martin 222', 'Cruz del Eje','Cordoba','4578585');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Garcia Juan', 'Rivadavia 333', 'Villa Maria','Cordoba','4578445');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Luis', 'Sarmiento 444', 'Rosario','Santa Fe',null);
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Pereyra Lucas', 'San Martin 555', 'Cruz del Eje','Cordoba','4253685');
1
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Gomez Ines', 'San Martin 666', 'Santa Fe','Santa Fe','0345252525');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Torres Fabiola', 'Alem 777', 'Villa del Rosario','Cordoba','4554455');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Carlos', 'Irigoyen 888', 'Cruz del Eje','Cordoba',null);
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Ramos Betina', 'San Martin 999', 'Cordoba','Cordoba','4223366');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Lucas', 'San Martin 1010', 'Posadas','Misiones','0457858745');
4- Obtenga el total de los registros que no tienen valor nulo en los teléfonos y coloque un alias
para dicha columna:
select count(telefono) as 'con telefono'
from clientes;
5- Muestre la cantidad de clientes que se apellidan "Perez" colocando un alias para dicha salida:
select count(*) as 'Perez'
from clientes
where nombre like '%Perez%' ;
6- Obtenga la cantidad de ciudades DISTINTAS por provincia en las cuales hay clientes, coloque un
alias:
select provincia, count(distinct ciudad) as 'ciudades'
from clientes
group by provincia
COLUMNAS CALCULADAS
Problema:
Una empresa almacena los datos de sus empleados en una tabla "empleados".
2
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
1- Elimine la tabla "empleados" si existe.
2- Cree una tabla llamada "empleados" con la estructura necesaria para almacenar la siguiente
información:
- nombre del empleado,
- documento,
- sexo,
- domicilio,
- sueldo básico (hasta 9999.99),
- hijos a cargo,
- clave primaria: documento.
3- Ingrese algunos registros:
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Juan Perez','22333444','m',300,1);
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Ana Acosta','21333444','f',400,2);
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Alberto Lopez','24333444','m',600,0);
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Carlos Sanchez','30333444','m',550,3);
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Mariana Torres','23444555','f',600,1);
insert into empleados (nombre,documento,sexo,sueldobasico,hijos)
values ('Marcos Garcia','23664555','m',1500,2);
4- La empresa está pensando en aumentar un 10% el sueldo a los empleados, y quiere saber a
cuánto
3
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
subiría cada sueldo básico, para ello usamos la siguiente sentencia en la cual incluimos una
columna que hará el cálculo de cada sueldo más el 10%:
select nombre, sueldobasico,sueldobasico+sueldobasico*1/10
from empleados;
5- La empresa paga un salario familiar por hijos a cargo, $200 por cada hijo. Necesitamos el
nombre del empleado, el sueldo básico, la cantidad de hijos a cargo, el total del salario familiar y el
suedo final (incluyendo el salario familiar):
select nombre, sueldobasico,hijos,(200*hijos),sueldobasico+(200*hijos)
from empleados;
EJERCICIOS CON COUNT
Problema:
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.
1- Elimine la tabla "visitantes", si existe.
2- Créela con la siguiente estructura:
create table visitantes(
nombre varchar(30),
edad tinyint unsigned,
sexo char(1),
domicilio varchar(30),
ciudad varchar(20),
telefono varchar(11),
montocompra decimal (6,2) unsigned
);
3- Ingrese algunos registros:
4
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Susana Molina', 28,'f','Colon 123','Cordoba',null,45.50);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Marcela Mercado',36,'f','Avellaneda 345','Cordoba','4545454',0);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Alberto Garcia',35,'m','Gral. Paz 123','Alta Gracia','03547123456',25);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Teresa Garcia',33,'f','Gral. Paz 123','Alta Gracia','03547123456',0);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Roberto Perez',45,'m','Urquiza 335','Cordoba','4123456',33.20);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Marina Torres',22,'f','Colon 222','Villa Dolores','03544112233',25);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Julieta Gomez',24,'f','San Martin 333','Alta Gracia','03547121212',53.50);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Roxana Lopez',20,'f','Triunvirato 345','Alta Gracia',null,0);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Liliana Garcia',50,'f','Paso 999','Cordoba','4588778',48);
insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra)
values ('Juan Torres',43,'m','Sarmiento 876','Cordoba','4988778',15.30);
4- Solicite la cantidad de visitantes al stand (10 registros):
select cont(*) from visitantes;
5- Solicite la cantidad de visitantes que tienen teléfono (valor no nulo) (8 registros):
select count(telefono)
from visitantes;
5
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
Recuerde que no es lo mismo contar todos los registros que contar los que tienen teléfono,
porque en el segundo caso no considera los registros con valor nulo en el campo "telefono".
6- Muestre la cantidad de visitantes de sexo masculino que acudieron al stand (3):
select count(*) from visitantes
where sexo='m';
7- Muestre la cantidad de mujeres mayores de 25 años que acudieron al stand (4):
select count(*) from visitantes
where sexo='f' and
edad>25;
8- Muestre la cantidad de visitantes que no son de "Cordoba" (5):
select count(*) from visitantes
where ciudad<>'Cordoba';
9- Muestre la cantidad de visitantes que realizaron alguna compra (7):
select count(*) from visitantes
where montocompra<>0;
10- Muestre la cantidad de visitantes que no realizaron compras (3):
select count(*) from visitantes
where montocompra=0;
Agrupar registros (group by)
Una empresa tiene registrados sus clientes en una tabla llamada "clientes".
1- Elimine la tabla "clientes", si existe.
2- Créela con la siguiente estructura:
create table clientes (
codigo int unsigned auto_increment,
nombre varchar(30) not null,
6
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
domicilio varchar(30),
ciudad varchar(20),
provincia varchar (20),
telefono varchar(11),
primary key(codigo)
);
3- Ingrese algunos registros:
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Marcos', 'Colon 111', 'Córdoba','Cordoba','null');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Ana', 'San Martin 222', 'Cruz del Eje','Cordoba','4578585');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Garcia Juan', 'Rivadavia 333', 'Villa Maria','Cordoba','4578445');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Perez Luis', 'Sarmiento 444', 'Rosario','Santa Fe',null);
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Pereyra Lucas', 'San Martin 555', 'Cruz del Eje','Cordoba','4253685');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Gomez Ines', 'San Martin 666', 'Santa Fe','Santa Fe','0345252525');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Torres Fabiola', 'Alem 777', 'Villa del Rosario','Cordoba','4554455');
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Carlos', 'Irigoyen 888', 'Cruz del Eje','Cordoba',null);
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Ramos Betina', 'San Martin 999', 'Cordoba','Cordoba','4223366');
7
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
insert into clientes (nombre,domicilio,ciudad,provincia,telefono)
values ('Lopez Lucas', 'San Martin 1010', 'Posadas','Misiones','0457858745');
4- Obtenga el total de los registros (10):
select count(*) from clientes;
5- Obtenga el total de los registros que no tienen valor nulo en los teléfonos (8):
select count(telefono) from clientes;
6- Obtenga la cantidad de clientes agrupados por ciudad y provincia, ordenados por provincia:
select ciudad,provincia, count(*) from clientes
group by ciudad, provincia
order by provincia;
Cláusula order by del select.
Trabaje con la tabla llamada "medicamentos" que almacena la información de los productos que
vende una farmacia.
1- Elimine la tabla, si existe.
2- Cree la tabla con la siguiente estructura:
create table medicamentos(
codigo int unsigned auto_increment,
nombre varchar(20),
laboratorio varchar(20),
precio decimal(5,2),
cantidad int unsigned,
primary key(codigo)
);
3- Visualice la estructura de la tabla "medicamentos".
4- Ingrese los siguientes registros (insert into):
insert into medicamentos (nombre, laboratorio,precio,cantidad)
8
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
values('Sertal','Roche',5.2,100);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Buscapina','Roche',4.10,200);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Amoxidal 500','Bayer',15.60,100);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Paracetamol 500','Bago',1.90,200);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Bayaspirina','Bayer',2.10,150);
insert into medicamentos (nombre, laboratorio,precio,cantidad)
values('Amoxidal jarabe','Bayer',5.10,250);
5- Ordene los registros por precio, de mayor a menor.
6- Ordene los medicamentos por número del campo "cantidad".
7- Ordene los registros por "laboratorio" (descendente) y cantidad (ascendente).
Varias tablas (join)
Problema:
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", también tiene una
tabla "provincias" donde registra los nombres de las provincias.
1- Elimine la tabla "clientes" y "provincias", si existen:
drop table if exists clientes, provincias;
2- Créelas con las siguientes estructuras:
create table clientes (
codigo int unsigned auto_increment,
nombre varchar(30) not null,
domicilio varchar(30),
9
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
ciudad varchar(20),
codigoprovincia tinyint unsigned,
telefono varchar(11),
primary key(codigo)
);
create table provincias(
codigo tinyint unsigned auto_increment,
nombre varchar(20),
primary key (codigo)
);
3- 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');
insert into provincias (nombre) values('Buenos Aires');
insert into provincias (nombre) values('Neuquen');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Lopez Marcos', 'Colon 111', 'Córdoba',1,'null');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Perez Ana', 'San Martin 222', 'Cruz del Eje',1,'4578585');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Garcia Juan', 'Rivadavia 333', 'Villa Maria',1,'4578445');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
10
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
values ('Perez Luis', 'Sarmiento 444', 'Rosario',2,null);
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Pereyra Lucas', 'San Martin 555', 'Cruz del Eje',1,'4253685');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Gomez Ines', 'San Martin 666', 'Santa Fe',2,'0345252525');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Torres Fabiola', 'Alem 777', 'Villa del Rosario',1,'4554455');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Lopez Carlos', 'Irigoyen 888', 'Cruz del Eje',1,null);
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Ramos Betina', 'San Martin 999', 'Cordoba',1,'4223366');
insert into clientes (nombre,domicilio,ciudad,codigoProvincia,telefono)
values ('Lopez Lucas', 'San Martin 1010', 'Posadas',4,'0457858745');
4- Obtenga los datos de ambas tablas, use alias:
select c.nombre,c.domicilio,c.ciudad,p.nombre,c.telefono
from clientes as c
join provincias as p
on c.codigoProvincia=p.codigo;
5- Obtenga la misma información anterior pero ordenada por nombre del cliente:
select c.nombre,c.domicilio,c.ciudad,p.nombre,c.telefono
from clientes as c
join provincias as p
on c.codigoProvincia=p.codigo
order by c.nombre;
6- Omita la referencia a las tablas en la condición "on" para verificar que la sentencia no se
11
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
ejecuta porque el nombre del campo "codigo" es ambiguo (ambas tablas lo tienen):
select c.nombre,c.domicilio,c.ciudad,p.nombre,c.telefono
from clientes as c
join provincias as p
on codigoProvincia=codigo
JOIN CON MÁS DE DOS TABLAS
Problema:
Un video club que alquila películas en video guarda información de sus películas en alquiler, sus
socios y los alquileres en 3 tablas llamadas "peliculas", "socios" y "alquileres" respectivamente.
1- Elimine las tablas si existen.
2- Créelas con las siguientes estructuras:
create table peliculas (
codigo smallint unsigned auto_increment,
titulo varchar(30) not null,
actores varchar(40),
duracion tinyint unsigned,
primary key (codigo)
);
create table socios(
codigo smallint unsigned auto_increment,
documento char(8),
nombre varchar(30),
domicilio varchar(30),
primary key (codigo)
);
12
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
create table alquileres(
codigopelicula smallint unsigned not null,
codigosocio smallint unsigned not null,
fechaprestamo date not null,
fechadevolucion date,
primary key (codigopelicula,fechaprestamo)
);
3- Ingrese los siguientes registros para las 3 tablas.
insert into peliculas (titulo,actores,duracion)
values('Elsa y Fred','China Zorrilla',90);
insert into peliculas (titulo,actores,duracion)
values('Mision imposible','Tom Cruise',120);
insert into peliculas (titulo,actores,duracion)
values('Mision imposible 2','Tom Cruise',180);
insert into peliculas (titulo,actores,duracion)
values('Harry Potter y la piedra filosofal','Daniel H.',120);
insert into peliculas (titulo,actores,duracion)
values('Harry Potter y la camara secreta','Daniel H.',150);
insert into socios (documento,nombre)
values('22333444','Juan Lopez');
insert into socios (documento,nombre)
values('23333444','Diana Perez');
insert into socios (documento,nombre)
values('24333444','Luis Fuentes');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
13
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
values(1,1,'2006-07-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(2,1,'2006-07-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(3,1,'2006-07-12');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(1,2,'2006-08-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(3,2,'2006-08-12');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(4,2,'2006-08-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(1,3,'2006-09-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(2,3,'2006-08-02');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(3,3,'2006-08-15');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(4,3,'2006-08-22');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(4,1,'2006-08-25');
insert into alquileres (codigopelicula,codigosocio,fechaprestamo)
values(1,3,'2006-08-25');
4- Muestre toda la información de los "alquileres" (nombre de la película, nombre del socio, fecha
de préstamo y de devolución):
14
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
select titulo,nombre,fechaprestamo,fechadevolucion from alquileres as a
join peliculas as p
on a.codigopelicula=p.codigo
join socios as s
on s.codigo=a.codigosocio;
5- Muestre la cantidad de veces que se alquiló cada película:
select p.titulo,count(*) from peliculas as p
join alquileres as a
on p.codigo=a.codigopelicula
group by p.titulo;
6- Muestre la cantidad de películas que alquiló cada socio:
select s.nombre,count(a.codigopelicula) from socios as s
join alquileres as a
on s.codigo=a.codigosocio
group by s.nombre;
7- Muestre la cantidad de películas DISTINTAS que alquiló cada socio:
select s.nombre,count(distinct a.codigopelicula) from socios as s
join alquileres as a
on s.codigo=a.codigosocio
group by s.nombre;
8- Muestre la cantidad de películas alquiladas por mes por cada socio ordenado por mes:
select s.nombre,
monthname(a.fechaprestamo) as mes,
count(a.codigopelicula)
from socios as s
15
EJERCICIOS PROPUESTOS: Lea detenidamente cada ítem y ejecute las sentencias en Mysql
join alquileres as a
on s.codigo=a.codigosocio
group by s.nombre, mes
order by mes;
16
Descargar