Ejercicios de Bases

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

-- inner join, left join y right join

create database ej;

use ej;

create table departamento(cod_depto int(2), nom_depto varchar(30));

create table empleados(id int(2), nombre varchar(100),fecha_nac date,salario int(7), genero


varchar (1), depto int(2), primary key (id), foreign key (depto) references departamento
(cod_depto));

insert into departamento(cod_depto, nom_depto) values (10, "personal"), (20, "contabilidad"),(30,


"ventas"),(40, "produccion"), (50, "sistemas"),(60 ,"desarrollo");

insert into empleados(id,nombre,fecha_nac ,salario,genero, depto) values (1, "maria",'1980-05-


20',1000000,"f", 10), (2, "pedro",'1985-07-14',1500000,"m", 20), (12, "fernando",'1993-07-
14',1250000,"m", 30), (22, "claudia",'1993-08-14',1750000,"f", 10),

(3, "rosa",'1975-12-24',2500000,"f", 10), (4, "juan",'1995-7-1',1850000,"m", 30),(5, "paty",'1989-


05-9',2670000,"f",20), (6, "carlos",'1988-04-19',5500000,"m",40),(13, "jose",'1993-02-
25',1950000,"m", 20),(23, "andrea",'1990-07-14',2500000,"f", 40) ;

create table pedidos (factura int(2) auto_increment, id int (2), fecha date, primary key (factura),
foreign key (id) references empleados (id) on delete cascade on update cascade );

insert into pedidos (id, fecha) values (3,'2020-02-15'), (5,'2020-02-16'), (33,'2020-02-17'), (3,'2020-
02-18'),(22,'2020-02-19'), (23,'2020-02-20'), (5,'2020-02-21'),(3,'2020-02-22'), (99,'2020-02-23');

-- select * from empleados;

-- select 'INNER JOIN (clientes que han hecho pedidos)'; select * from empleados inner join
pedidos on empleados.id=pedidos.id;

-- select 'INNER JOIN mas DEPTO'; select * from empleados inner join pedidos on
empleados.id=pedidos.id where depto =20 or depto =40;

-- select 'LEFT JOIN (todos los clientes aunque no hagan pedidos) mas DEPTO'; select * from
empleados left join pedidos on empleados.id=pedidos.id where depto =20 or depto =40;

-- select 'RIGHT JOIN (todas las ventas, asi no existe el cliente) mas DEPTO'; select * from
empleados right join pedidos on empleados.id=pedidos.id ;

-- select 'INNER JOIN mas DEPTO solo algunos campos'; select empleados.id,
nombre,pedidos.factura, pedidos.fecha from empleados inner join pedidos on
empleados.id=pedidos.id where depto =10 or depto =40;
2do

-- subconsultas -- subconsultas ALL y ANY (todos y cualquiera) create database ej; use ej;
create table producto(codPro int(2) auto_increment , seccion varchar (15), nomPro
varchar(20), precioPro int(5), importado boolean, primary key (codPro)); create table cliente(id
int(25), nombre varchar(100),fecha_nac date, direccion varchar (30), telefono int(12), localidad
varchar (20), primary key (id)); create table pedido(numPedido int(4), id int(25), efectivo
boolean, fecha date, primary key (numPedido), foreign key (id) references cliente(id)); create
table productosPedido (numPedido int(4), codPro int(2), cantidad int(29), foreign key (codPro)
references producto(codPro), foreign key (numPedido) references pedido(numPedido)); insert
into producto(seccion, nomPro, precioPro, importado) values ('ferreteria', 'destornillador',
10000, false), ('deportes', 'raqueta', 20000, true), ('jugeteria', 'tren', 12000, true), ('ferreteria',
'pinzas', 8000, true), ('deportes', 'pelota de tenis', 500, false), ('jugeteria', 'muñeca', 1200,
false), ('ferreteria', 'martillo', 11000, false), ('deportes', 'pesas', 25000, true), ('jugeteria', 'carro',
1250, true); insert into cliente(id,nombre,fecha_nac ,direccion,telefono, localidad) values (1,
"maria",'1980-05-20',' calle 1000000', 11110,'kennedy'), (2, "pedro",'1985-07-14','carrera 150',
202020,'suba'), (3, "rosa",'1975-12-24','diagonal 25 tranversal 30', 235610,'suba'), (4,
"juan",'1995-7-1','calle 32 # 42-78',356830,'bosa'),(5, "paty",'1989-05-9','carrera 23 # 78-
33',555520,'teusaquillo'), (6, "carlos",'1988-04-19','calle 345 # 45-89',5554340,'kennedy');
insert into pedido(numPedido, id, efectivo) values (1, 3, true),(2, 2, true),(3, 4, false),(4, 5, true),
(5, 3, false),(6, 1, true),(7, 2, true); insert into productosPedido(numPedido, codPro, cantidad)
value (1, 2, 5),(1, 1, 2),(1, 4, 1),(2, 3, 2),(2, 2, 1),(3, 5, 2),(3, 4, 1),(3, 7, 2),(4, 4, 5),(4, 3, 2),(5,
2, 3),(6, 6, 1),(7, 8, 2),(7, 9, 1); -- select '-------------media aritmetica';select avg(precioPro) from
producto; -- select '-------------productos con valor mayor a la media aritmetica';select nomPro,
precioPro from producto where precioPro>(select avg(precioPro) from producto); -- select
'-------------nombre del procucto de menor precio';select nomPro, precioPro from producto
where precioPro=(select min(precioPro) from producto); -- select '-------------productos con
mayor precio al de una seccion-all';select * from producto where precioPro> all (select
precioPro from producto where seccion='ferreteria'); -- select '-------------productos con mayor
precio al de una seccion-any';select * from producto where precioPro> any (select precioPro
from producto where seccion='ferreteria'); -- subconsultas IN y NOT IN (pertenece y no
pertenece) -- select 'nombre y precio de los articulos de los que se ha pedido mas de 3
unidades';select nomPro, precioPro from producto where codPro in(select codPro from
productosPedido where cantidad>3); -- select 'nombre y precio

También podría gustarte