Está en la página 1de 5

CREATE SCHEMA `practica_3` ;

CREATE TABLE `practica_3`.`empleados` (

`numero` INT(11) NOT NULL,

`nombre` VARCHAR(100) NOT NULL,

`puesto` VARCHAR(50) NOT NULL,

`jefe` INT(11) NOT NULL,

`fechaAlta` DATE NOT NULL,

`salario` INT(11) NOT NULL,

`comision` INT(11) NULL,

`dnumero` INT(11) NOT NULL,

PRIMARY KEY (`numero`));

CREATE TABLE `practica_3`.`departamentos` (

`numero` INT(11) NOT NULL,

`nombre` VARCHAR(50) NOT NULL,

`ciudad` VARCHAR(50) NOT NULL,

PRIMARY KEY (`numero`));

ALTER TABLE `practica_3`.`empleados`

ADD INDEX `jefe_idx` (`jefe` ASC) VISIBLE;

ALTER TABLE `practica_3`.`empleados`

ADD INDEX `jefe_idx` (`jefe` ASC) VISIBLE,

DROP INDEX `jefe_idx` ;

ALTER TABLE `practica_3`.`empleados`


DROP FOREIGN KEY `dnumero`;
ALTER TABLE `practica_3`.`empleados`
CHANGE COLUMN `dnumero` `dnumero` INT NULL ;
ALTER TABLE `practica_3`.`empleados`
ADD CONSTRAINT `dnumero`
FOREIGN KEY (`dnumero`)
REFERENCES `practica_3`.`departamentos` (`numero`);

ALTER TABLE `practica_3`.`empleados`

ADD INDEX `dnumero_idx` (`dnumero` ASC) VISIBLE;

ALTER TABLE `practica_3`.`empleados`

ADD CONSTRAINT `dnumero`

FOREIGN KEY (`dnumero`)

REFERENCES `practica_3`.`departamentos` (`numero`)

ON DELETE NO ACTION

ON UPDATE NO ACTION;

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('10',


'Contabilidad', 'Málaga');

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('20', 'Desarrollo',


'Madrid');

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('30', 'Ventas',


'Sevilla');
INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('40',
'Operaciones', 'Barcelona');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8039', 'Reyes', 'Presidente', '1979-11-01', '5000', '10');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8066', 'Jiménez', 'Director', '8039', '1981-12-14', '2975', '20');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8082', 'Gutiérrez', 'Director', '8039', '1981-12-01', '2450', '10');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8098', 'Corral', 'Director 8039', '8039', '1980-05-08', '2800', '30');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('7934', 'Muñoz', 'Administrativo', '8082', '1982-02-23', '1300', '10');
INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,
`dnumero`) VALUES ('8002', 'Forte', 'Analista', '8066', '1981-03-21', '3000', '20');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`comision`, `dnumero`) VALUES ('8021', 'Santos', 'Vendedor', '8098', '1984-01-15', '1250', '500', '30');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8054', 'Pérez', 'Vendedor', '8098', '2008-01-11', '1500', '30');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8069', 'Pérez', 'Administrativo', '8002', '1980-12-23', '800', '20');

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`comision`, `dnumero`) VALUES ('8099', 'Sancho', 'Vendedor', '8098', '1983-06-08', '1600', '300', '30');

Empleados1.Insertar un Directordel departamento 40 (Operaciones) indicando en la sentencia un


valor para todos los campos (null para comisión).

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`dnumero`) VALUES ('8100', 'Magno', 'Director', '8039', '1986-04-04', '1500', '40');

2.Insertar un nuevo empleado del departamento 40 indicando solo el valor de los campos
obligatorios (el jefe será el empleado anterior).

INSERT INTO `practica_3`.`empleados` (`numero`, `nombre`, `puesto`, `jefe`, `fechaAlta`, `salario`,


`comision`, `dnumero`) VALUES ('8045', 'Santiago', 'Vendedor', '8099', '1972-01-04', '958', '20', '40');

3.Intentar insertar un departamento con número igual a 30.

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('30',


'Aten.Cliente', 'Granada');

Operation failed: There was an error while applying the SQL script to the database.

Executing:

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('30',


'Aten.Cliente', 'Granada');

ERROR 1062: 1062: Duplicate entry '30' for key 'departamentos.PRIMARY'

SQL Statement:

INSERT INTO `practica_3`.`departamentos` (`numero`, `nombre`, `ciudad`) VALUES ('30',


'Aten.Cliente', 'Granada')
No se puede insertar un departamento con número 30 porque ya existe uno con el mismo número.

4. Insertar un nuevo departamento de Ventas en Salamanca con número 50, a partir del
departamento de Ventas que ya existe (departamento 30). Utilizar INSERT … SELECT.

Insert into departamentos

select 50,nombre,ciudad

from departamentos

where numero like 30;

5.Insertar un departamento de Ventas con número 50 en Valencia, cambiando la ciudad del


departamento si ya existía.

UPDATE `practica_3`.`departamentos` SET `ciudad` = 'Valencia' WHERE (`numero` = '50');

6. Insertar como Director del nuevo departamento de Ventas al Director del departamento de
ventas que ya existe (departamento 30). Utilizar INSERT … SELECT.

Insert into empleados

select 8100,nombre,puesto,jefe,fechaAlta,salario,comision,50

from empleados

where puesto 'Director' and dnumero =30;

7.Poner una comisión de 100 € a los empleados de Contabilidad.

UPDATE empleados SET comision=100 WHERE dnumero=10;

8.Eliminar al director del departamento 40.

DELETE FROM empleados WHERE numero=8100;

10:00:13 DELETE FROM empleados WHERE numero=8100 Error Code: 1451. Cannot
delete or update a parent row: a foreign key constraint fails (`practica_3`.`empleados`, CONSTRAINT
`jefe1` FOREIGN KEY (`jefe`) REFERENCES `empleados` (`numero`) ON UPDATE CASCADE) 0.000
sec

No permite borrar el dato ya que hay dependencia de otros campos de este registro.

9.Intentar eliminar el departamento 40.

DELETE FROM departamentos WHERE numero=40;

10:01:40 DELETE FROM departamentos WHERE numero=40 Error Code: 1451. Cannot
delete or update a parent row: a foreign key constraint fails (`practica_3`.`empleados`, CONSTRAINT
`dnumero` FOREIGN KEY (`dnumero`) REFERENCES `departamentos` (`numero`)) 0.000 sec

No permite borrar el dato, ya que de este dependen dos registros en otra tabla.

10.Eliminar los empleados del departamento 40.

DELETE FROM empleados WHERE numero=8101;

DELETE FROM empleados WHERE numero=8100;

11.Intentar eliminar el departamento 40

DELETE FROM departamentos WHERE numero=40;

No permite el borrado porque se han borrado previamente los campos de dependientes. Deben
borrarse primero empleado dependiente, empleado que depende de otro empleado y
departamento.

También podría gustarte