Anda di halaman 1dari 6

www.oracle.

com/academy

Programación de Bases de Datos conSQL


15-3: Gestión deVistas
Actividades dePráctica

Objetivos
• Crear y ejecutar una consulta que elimina unavista
• Crear y ejecutar una consulta mediante una vista enlínea
• Crear y ejecutar una consulta para el análisis de Nprincipales

Terminología
Identifique el término para cada una de las siguientes definiciones.

ANÁLISIS DE N Pide los valores de N mayores o menores de una columna


PRINCIPALES
DROP VIEW Elimina una vista

VISTA EN LÍNEA Subconsulta con un alias que se puede utilizar en una sentencia
SQL

Inténtelo/Resuélvalo

1. Cree una vista de la tabla copy_d_songs denominada view_copy_d_songs que incluya


solo el título y el artista. Ejecute una sentencia SELECT * para verificar que la vistaexiste.
CREATE OR REPLACE VIEW view_copy_d_songs as SELECT title, artist
FROM copy_d_songs;

VERIFICACION.-
SELECT * FROM view_copy_d_songs;

2. Emita DROP view_copy_d_songs. Ejecute una sentencia SELECT * para verificar que la
vista se hasuprimido.
DROP VIEW view_copy_d_songs

View dropped.

3. Cree una consulta que seleccione el apellido y el salario de la base de datos Oracle.
Clasifique los salarios del más alto al más bajo para los tres empleados principales.
SELECT ROWNUM AS "Longest employed", last_name, salary
FROM (SELECT last_name, salary FROM employees ORDER BY salary desc)
WHERE ROWNUM <=3;
Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
4. Cree una vista en línea de la base de datos Oracle que muestre el apellido, el salario, el
ID de departamento y el salario máximo de cadadepartamento.

Indicación: Una consulta tendrá que calcular el salario máximo por ID de departamento.
SELECT e.last_name, e.salary, e.department_id, d.maxsal
FROM employees e,
( SELECT department_id, max(salary) maxsal
FROM employees
GROUP BY department_id ) d
WHERE e.department_id = d.department_id
AND e.salary = d.maxsal;

5. Cree una consulta que devuelva los miembros del personal de Global Fast Foods
clasificados por salario del más bajo al másalto.
SELECT ROWNUM AS "Longest employed", last_name, salary
FROM (SELECT last_name, salary FROM f_staffs ORDER BY salary)
WHERE ROWNUM <=3;

Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
Ejercicios de Ampliación

1. Cree una nueva tabla denominada my_departments y agregue todas las columnas y
todas las filas a la misma mediante una subconsulta desde la tabla departments de
Oracle. Ejecute SELECT * desde my_departments para confirmar que tiene todas las
columnas yfilas.
CREATE TABLE my_departments as SELECT * FROM departments;

2. Para ver las restricciones que pueden afectar a la tabla my_departments, utilice
DESCRIBE my_departments para comprobar si se han transferido restricciones desde la
tabla departments. Si hay restricciones en my_departments, utilice un comando ALTER
TABLE para desactivar todas las restricciones de my_departments con DISABLE.
Desc my departments

ALTER TABLE my_departments


DISABLE CONSTRAINT constraint_name;

3. Cree una vista denominada view_my_departments que incluya: department_id y


department_name.
CREATE OR REPLACE VIEW view_my_departments as SELECT department_id,
department_name FROM my_departments;

View created.
4. Agregue los datos siguientes a la tabla my_departments utilizando view_my_departments.

department_id department_name
105 Advertising
120 Custodial
130 Planning
INSERT INTO view_my_departments(department_id,
department_name)VALUES(105,'Advertising');

INSERT INTO view_my_departments(department_id,


department_name)VALUES(120,'Custodial');

INSERT INTO view_my_departments(department_id,


department_name)VALUES(130,'Planning');

5. Cree o active la columna department_id como claveprimaria.


ALTER TABLE my_departments ADD CONSTRAINT mydepartment_id_pk PRIMARY KEY
(department_id);
Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
Table altered.
6. Introduzca un nuevo departamento denominado Human Resources en la tabla
my_departments utilizando view_my_departments. No agregue un nuevo ID de
departamento.
INSERT INTO view_my_departments (department_name) values ('Human
Resources')

ORA-01400: cannot insert NULL into


("MX_A104_SQL_S56"."DEPARTMENTS"."DEPARTMENT_ID")

7. Agregue el departamento Human Resources, ID de departamento 220, a my_departments


mediante view_my_departments.
INSERT INTO view_my_departments (department_id,department_name)
values (220,'Human Resources');

1 row(s) inserted.

8. Verifique que las nuevas adiciones a my_departments se han agregado mediante


view_my_departments.
Consulte la siguiente tabla
select *
from my_departments;

9. Modifique view_my_departments para incluir el ID de ubicación. Ejecute un comando


SELECT * para mostrar qué columnas están presentes, y un comando DESCRIBE para
ver las columnas y las restriccionesasociadas.
CREATE OR REPLACE VIEW view_my_departments as SELECT department_id,
department_name, location_id FROM my_departments;
View created.
SELECT * FROM view_my_departments;
DESC view_my_departments;

Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
10. Convierta location_id en una columna NOT NULL en la tablamy_departments.
ALTER TABLE my_departments ADD CONSTRAINT my_departments_locationid_nn CHECK
(location_id IS NOT NULL);

ORA-02293: cannot validate (MX_A104_SQL_S56.LOC_ID_MY_DEPT_NN) - check


constraint violated
11. Utilizando la base de datos Oracle, cree una vista compleja entre ubicaciones y
departamentos solo con las siguientes columnas: department_name street_address, city y
state. Incluya solo ciudades de EE. UU. Verifique que la vista se ha creado mediante una
sentencia SELECT*.
CREATE OR REPLACE VIEW view_departments_locations as
SELECT d.department_name, l.street_address, l.city, l.state_province
FROM departments d,
(SELECT country_id, location_id,street_address,city, state_province
FROM locations) l
WHERE d.location_id = l.location_id
and l.COUNTRY_id= 'US';

Consulte la siguiente tabla

DEPARTMENT_ID DEPARTMENT MANAGER_ID LOCATION_ID


_NAME
10 Administration 200 1700
20 Marketing 201 1800
50 Shipping 124 1500
60 IT 103 1400
80 Sales 149 2500
90 Executive 100 1700
110 Accounting 205 1700
190 Contracting (null) 1700
105 Advertising (null) (null)
120 Custodial (null) null
220 Human (null) (null)
Resources
130 Planning (null) (null)

Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
Los resultados de instrucción de selección de la vista

Copyright © 2017, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.

Anda mungkin juga menyukai