Solución á practica DML sobre a base de datos traballadores

De MediaWiki
Revisión del 18:25 3 nov 2021 de Joselv (discusión | contribuciones) (→‎Tarefa 1.3)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

Solucións

Tarefa 1.1

1  insert into centro
2       values( 40,'FRANQUICIA LUGO', 'C/PROGRESO, 8 - LUGO' ) ;

Tarefa 1.2

1 insert into empregado (empNumero, empDepartamento, empExtension, empDataNacemento,
2 	empDataIngreso, empSalario, empComision, empFillos, empNome)
3 values (750,110,25,'1990-02-12',curdate(),825,50,1,'BARCIA, ANGELES'),
4 	(751,110,25,'1985-10-22',subdate(curdate(),15),900,null,0,'MENDEZ, RICARDO'),
5 	(752,120,45,'1992-05-09',null,1200,150,2,'BERNARDEZ, LUCIA'),
6 	(753,100,200,'1980-11-05',curdate(),1000,300,1,'VALIN, EVA');

Tarefa 1.3

1 update empregado
2 set empSalario = round(empSalario*1.05,2), 
3 	empComision = round(empComision*1.065,2);
4 
5 -- Si da error
6 -- Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
7 -- se puede solucionar ejecutando previamente
8 -- SET SQL_SAFE_UPDATES = 0;

Tarefa 1.4

1 update empregado
2 set empDataIngreso = adddate(last_day(curdate()),1);
3 where empNumero = 752 ;

Tarefa 1.5

1 update empregado
2 set empSalario = round(empSalario*1.02,2)
3 where empDepartamento = 120 ;

Tarefa 1.6

1 update empregado
2 set empComision=ifnull(empComision,0)+50
3 where empDepartamento in (select depNumero
4 				 from departamento
5 				 where depCentro in (select cenNumero
6 							from centro
7 							where cenNome='SEDE CENTRAL'));

Tarefa 1.7

1 update departamento
2 set depPresuposto = depPresuposto-depPresuposto*0.10
3 order by depPresuposto desc
4 limit 1 ;
1 -- Unha alternativa en MySQL, empregando variables de usuario:
2 select @mayor:=max(depPresuposto) from departamento;	
3 update departamento
4 set depPresuposto=depPresuposto-depPresuposto*0.10
5 where depPresuposto = @mayor;

Tarefa 1.8

1 delete from empregado
2 where empNumero = 380  ;

Tarefa 1.9

1 delete from empregado
2 where timestampdiff(year, empDataNacemento, curdate())>=60;
3 -- Outra forma de facelo:
4 delete from  empregado
5 where  date_add(empDataNacemento, interval 60 year)<curdate();

Tarefa 1.10

1 delete em, de
2 from  departamento as de join empregado as em
3 where de.depNumero=em.empDepartamento
4 	and de.depNumero=121;

Tarefa 1.11

1 -- creación da táboa temporal 
2 create temporary table empregado_120 like empregado;
3 -- inserción de datos
4 insert into empregado_120
5 select * 
6 from empregado
7 where empDepartamento = 120;