Story Transcript
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 montocompra0; 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