Está en la página 1de 7

Administración de sistemas informáticos y redes – Adm.

SGBD

Utiliza la descripción de las tablas en el documento y las especificaciones que se dan, para
construir las sentencias correctas. Guarda las sentencias en este documento, y adjúntalo en
pdf con el siguiente formato:
• ASIR-UD0001-Apellidos-Nombre.pdf
• ASIR-UD0001-Garcia Garcia-Jose.pdf

Tabla de EMPLEADOS
EMPLEADOS
COLUMNA TIPO DE DATO DESCRIPCIÓN
NUMEMPLEADO NUMBER(4) Número del empleado
VARCHAR2(10
NOMBRE ) Nombre del empleado
VARCHAR2(10
APELLIDO ) Apellido del empleado
VARCHAR2(10
OFICIO ) Oficio del empleado
DIR NUMBER(4) Dirección del empleado
FECALTA DATE Fecha de alta del empleado
SALARIO NUMBER(7) Salario mensual del empleado
COMISION NUMBER(7) Comisión del empleado
NUMDEPARTAMENTO NUMBER(2) Número de departamento del empleado

*Tenemos en cuenta que NUMEMPLEADO identifica de manera única los registros.


**El campo salario no puede ser nulo.

Tabla DEPARTAMENTOS
DEPARTAMENTOS
COLUMNA TIPO DE DATO DESCRIPCIÓN
NUMDEPARTAMENTO NUMBER(2) Número del departamento
NOMDEPARTAMENTO VARCHAR(14) Nombre del departamento
LOC VARCHAR(14) Ciudad donde está el departamento

1. Crea las tablas en la base de datos que se derivan de las tablas EMPLEADOS y
DEPARTAMENTO.

CREATE TABLE empleados(


numempleado NUMBER(4)UNIQUE,
nombre VARCHAR2(10),
apellido VARCHAR2(10),
oficio VARCHAR2(10),
dir NUMBER(4),
fecalta DATE,
salario NUMBER(7) NOT NULL,
comision NUMBER(7),
numdepartamento NUMBER(2)

pág. 1
Administración de sistemas informáticos y redes – Adm. SGBD

);

CREATE TABLE departamentos (


numdepartamento NUMBER(2),
nomdepartamento VARCHAR2(14),
loc VARCHAR(14)
);

2. En la tabla EMPLEADOS realiza las siguientes modificaciones:


a. Cambia el nombre del campo DIR a DIRECCION

ALTER TABLE empleados RENAME COLUMN dir TO direccion;

b. Cambia el tamaño de APELLIDO(20).

ALTER TABLE empleados MODIFY apellido varchar2(20);

c. Cambia el tipo de dato al campo DIRECCION por el que consideres


oportuno(60).

ALTER TABLE empleados MODIFY direccion VARCHAR2(60);

d. Inserta un nuevo campo DNI (con todo lo que eso implica).

ALTER TABLE empleados ADD dni VARCHAR2(10) NOT NULL UNIQUE;

e. Añade un campo PAIS, teniendo en cuenta qué el programa solo se va a usar


en España

ALTER TABLE empleados ADD pais VARCHAR(20) DEFAULT 'España';

f. Añade un campo CIUDAD.

ALTER TABLE empleados ADD ciudad VARCHAR(20);

g. Modifica la fecha de alta para que tenga valor por defecto la fecha en la que se
inserta el registro.

ALTER TABLE empleados MODIFY fecalta Date DEFAULT CURRENT_TIMESTAMP;

h. Ten en cuenta que el campo NUMDEPARTAMENTO, solo puede coger los


valores que encuentre en la tabla DEPARTAMENTO.

ALTER TABLE Empleados


ENABLE CONSTRAINT fk_departamento
FOREIGN KEY (numdepartamento)
REFERENCES departamentos (numdepartamento)
ON DELETE CASCADE

pág. 2
Administración de sistemas informáticos y redes – Adm. SGBD

i. Modifica los campos SALARIO y COMISION, teniendo en cuenta que pueden


contener decimales.

ALTER TABLE empleados MODIFY salario FLOAT(2);


ALTER TABLE empleados MODIFY comision FLOAT(2);

3. En la tabla DEPARTAMENTO:
a. Cambia el nombre del campo LOC por CIUDAD.

ALTER TABLE departamentos RENAME COLUMN loc TO ciudad;

b. Añade un campo que contemple el código empleado del jefe de


departamento.

ALTER TABLE departamentos ADD numempleado_jefedpto NUMBER(4);

4. Crea dos insert para cada una de las tablas, teniendo en cuenta los cambios anteriores.

INSERT INTO departamentos (numdepartamento, nomdepartamento, ciudad,


jefe_departamento) VALUES (12, 'ANALISIS', 'MURCIA', 1);
INSERT INTO departamentos (numdepartamento, nomdepartamento, ciudad,
jefe_departamento) VALUES (15, 'DESARROLLO', 'BARCELONA', 0);

pág. 3
Administración de sistemas informáticos y redes – Adm. SGBD

5. Inserta los datos en las tablas correspondientes.

EMPLEADO
NUMDEPARTA
NUMEMPLEADO NOMBRE APELLIDO OFICIO DIRECCIÓN FECALTA SALARIO COMISION MENTO DNI PAÍS CIUDAD

7369 ISABEL SANCHEZ EMPLEADO Av. Libertad 03/01/2009 1040 null 20 48525150E ESPAÑA MURCIA
SANTIAGO DE
7499 MARÍA J ARROYO VENDEDOR Calle laguna 02/11/2010 1500 390 30 52474853P ESPAÑA C.
7500 LUIS SALA VENDEDOR Calle nº5 05/05/2015 1625 650 8 87747525L ESPAÑA BARCELONA
7501 REGINO JIMENEZ DIRECTOR Calle n5 08/08/2008 1520 null 20 96654112F ESPAÑA MADRID
7502 MANUEL MARTIN VENDEDOR Calle A 01/09/2015 1600 1020 10 01478523R ESPAÑA BADAJOZ
7505 PEDRO NEGRO DIRECTOR Calle B 24/06/2000 3005 250 30 00257485G ESPAÑA GRANADA
7051 MARTÍN CEREZO DIRECTOR Calle C 15/03/2009 1790 320 20 01020304H ESPAÑA MALAGA
Av.Rocamor
7088 ANA GIL ANALISTA a 10/03/2010 3000 650 20 55224411W ESPAÑA ALMERIA

Av.Fernand
7839 RICARDO REY PRESIDENTE o Alonso 06/08/1999 4000 1200 10 66885544E ESPAÑA GERONA
Calle
288 SABEL TOVAR VENDEDOR Fortuna 08/09/2013 1350 0 30 66558874R ESPAÑA ZARAGOZA
FERNAND
7876 O ALONSO EMPLEADO Calle Ceutí 01/12/2018 1430 875 20 98456321K FRANCIA PARIS
Calle PORTUG
7900 CARLOS JIMENO EMPLEADO Almoradí 15/09/2014 1335 970 30 45658525Q AL LISBOA

pág. 4
Administración de sistemas informáticos y redes – Adm. SGBD

Calle Molina
1985 FELIPE FERNANDEZ ANALISTA de Segura 11/09/2016 3000 null 20 36323539S ESPAÑA BILBAO
Av. Alto
7934 SOFIA MUÑOZ EMPLEADO Atalayas 23/01/2012 1690 null 10 47512369D ESPAÑA LEÓN

DEPARTAMENTO
NUMDEPARTAMENT NOMDEPARTAMENT NUMEMPLEADO JEFE
O O CIUDAD DPTO
10 CONTABILIDAD SEVILLA 7505
MURCI
20 INFORMATICA A 7088
MADRI
30 ADMINISTRACION D 7051
40 PRODUCCIÓN BILBAO 1985
MURCI
50 ALMACEN A 7501

pág. 5
Administración de sistemas informáticos y redes – Adm. SGBD

6. Muestra el apellido y el oficio de todos los empleados

SELECT apellido, oficio FROM empleados;

7. Muestra los oficios de los empleados sin repetición, ordenados alfabéticamente.

SELECT DISTINCT oficio FROM empleados ORDER BY oficio ASC;

8. Muestra todos los datos de los empleados que fueron contratados antes del uno de
enero de 2011.

SELECT * FROM empleados WHERE fecalta <= '2011-01-01';

9. Muestra el apellido, salario y oficio de todos los empleados que sean vendedores y
cuyo salario sea igual o superior a 1500 e igual o inferior a 1600.

SELECT apellido, salario, oficio FROM empleados WHERE oficio = 'VENDEDOR' AND salario
BETWEEN 1500 AND 1600;

10. Muestra el apellido, el número de departamento y el número de empleado de los


empleados que son vendedores o analistas, y que no pertenecen al departamento 30.

SELECT apellido, numdepartamento, numempleado FROM empleados WHERE oficio =


'VENDEDOR' OR oficio = 'ANALISTA' AND numdepartamento != 30;

11. Muestra el apellido, el número de departamento y el número de empleado de los


empleados que son vendedores o analistas, que no pertenecen al departamento 30 y
cuyo apellido no contiene una N

SELECT apellido, numdepartamento, numempleado FROM empleados WHERE oficio =


'VENDEDOR' OR oficio = 'ANALISTA' AND numdepartamento != 30 AND apellido NOT LIKE
'%N%';

12. Muestra los apellidos, fecha de contratación y salario de los empleados que fueron
contratados en diciembre (de cualquier año) o en septiembre (de cualquier año), y
cuya comisión sea nula, ordenados por fecha y por apellido ascendentemente, y por
salario descendentemente

SELECT apellido, fecalta, salario FROM empleados WHERE fecalta (MONTH) = 9 OR fecalta
(MONTH) = 12 AND comision IS NULL ORDER BY fecalta ASC, apellido ASC, salario DESC;

13. Muestra el apellido, salario, comisión y el salario más la comisión (llama a esta
columna TOTAL) para los empleados cuya comisión no sea nula, ordenados
descendentemente por TOTAL.

SELECT apellido, salario, comision + salario AS Total FROM empleados WHERE comision IS
NOT NULL ORDER BY Total DESC;

pág. 6
Administración de sistemas informáticos y redes – Adm. SGBD

14. Muestra todos los datos de los empleados que no sean ni analistas, ni vendedores, ni
directores

SELECT * FROM empleados WHERE oficio != 'ANALISTA' AND oficio != 'VENDEDOR' AND
oficio != 'DIRECTOR';

15. Muestra los datos del empleado de mayor antigüedad en la empresa.

SELECT MIN (fecalta) AS MayorAntiguedad FROM empleados;

16. Muestra la fecha de alta más alta.

SELECT MAX (fecalta) AS ÚltimoContratado FROM empleados;

17. Muestra la fecha de alta más antigua.

SELECT MIN (fecalta) AS AltaMasAntigüa FROM empleados;

18. Muestra la media de salario por departamento.

SELECT AVG (salario) AS media_salario FROM empleados ORDER BY numdepartamento ASC;

19. Muestra el número de empleados que tiene la empresa

SELECT COUNT (*) FROM empleados;

pág. 7

También podría gustarte