Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T11-HR»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 61: Línia 61:
 
INSERT INTO dept
 
INSERT INTO dept
 
VALUES (dept_id_seq.nextval, 'Administration');
 
VALUES (dept_id_seq.nextval, 'Administration');
 +
 +
COMMIT;
 +
 +
SELECT *
 +
FROM dept;
 
</pre>
 
</pre>
  
Línia 68: Línia 73:
 
</pre>
 
</pre>
  
10) Cree un sinónimo para la tabla EMPLOYEES . Llámelo EMP .
+
10) Cree un sinónimo para la tabla EMPLOYEES. Llámelo EMP2.
 
<pre>
 
<pre>
CREATE SYNONYM emp FOR EMPLOYEES;
+
CREATE SYNONYM emp2 FOR EMPLOYEES;
 
</pre>
 
</pre>

Revisió de 18:51, 20 nov 2020

1) El personal del departamento de recursos humanos desea ocultar algunos de los datos de la tabla EMPLOYEES. Cree una vista denominada EMPLOYEES_VU basada en los números y los apellidos de los empleados y en los números de departamento de la tabla EMPLOYEES. La cabecera del nombre de empleado debe ser EMPLOYEE.

CREATE OR REPLACE VIEW employees_vu AS
SELECT employee_id, last_name employee, department_id
FROM employees;

2) Confirme que la vista funciona. Visualice el contenido de la vista EMPLOYEES_VU .

SELECT *
FROM employees_vu;

3) Con la vista EMPLOYEES_VU , escriba una consulta para el departamento de recursos humanos para visualizar todos los nombres de empleados y números de departamento.

SELECT employee, department_id
FROM employees_vu;

4) El departamento 50 necesita acceso a los datos de los empleados. Cree una vista con el nombre DEPT50 que contenga los números y apellidos de los empleados y los números de departamento de todos los empleados del departamento 50. Se le ha solicitado que etiquete las columnas de la vista como EMPNO , EMPLOYEE y DEPTNO. Por motivos de seguridad, no permita la reasignación de un empleado a otro departamento a través de la vista.

CREATE VIEW dept50 AS
SELECT employee_id empno, last_name employee, department_id deptno
FROM employees
WHERE department_id = 50
WITH CHECK OPTION CONSTRAINT emp_dept_50;

5) Visualice la estructura y el contenido de la vista DEPT50 .

DESCRIBE dept50

SELECT *
FROM dept50;

6) Pruebe la vista. Intente reasignar Matos al departamento 80.

UPDATE dept50
SET deptno = 80
WHERE employee = 'Matos';

El error se debe a que la vista DEPT50 se ha creado con la restricción WITH CHECK OPTION. De esta forma, se garantiza que la columna DEPTNO de la vista esté protegida contra cambios.

7) Necesita una secuencia que se pueda utilizar con la columna de clave primaria de la tabla DEPT. La secuencia debe empezar en 280 y tener un valor máximo de 1.000. Aplique incrementos de 10 a la secuencia. Asigne a la secuencia el nombre DEPT_ID_SEQ.

CREATE SEQUENCE dept_id_seq
START WITH 280
INCREMENT BY 10
MAXVALUE 1000;

8) Para probar la secuencia, escriba un script para insertar dos filas en la tabla DEPT.

Asigne al script el nombre lab_11_08.sql . Asegúrese de utilizar la secuencia que ha creado para la columna ID. Agregue dos departamentos: Education y Administration. Confirme las adiciones. Ejecute los comandos del script.

INSERT INTO dept
VALUES (dept_id_seq.nextval, 'Education');
INSERT INTO dept
VALUES (dept_id_seq.nextval, 'Administration');

COMMIT;

SELECT *
FROM dept;

9) Cree un índice no único en la columna NAME de la tabla DEPT .

CREATE INDEX dept_name_idx ON dept (name);

10) Cree un sinónimo para la tabla EMPLOYEES. Llámelo EMP2.

CREATE SYNONYM emp2 FOR EMPLOYEES;