Está en la página 1de 5

Administración de Bases de Datos

Vistas en Oracle

VISTAS COMUNES
1. Qué es una vista? Para qué se usan? Que son las tablas base?

2. Crear la siguientes tablas referentes al Departamento de Nómina de


una empresa.

CREATE TABLE EMPLEADO


(CEDULA NUMBER PRIMARY KEY,
NOMBRE VARCHAR2(40) NOT NULL,
EDAD NUMBER,
SUELDO NUMBER,
CODCARGO NUMBER);

CREATE TABLE CARGO


(CODIGO NUMBER PRIMARY KEY,
NOMBRE VARCHAR2(40) NOT NULL,
CATEGORIA NUMBER);

ALTER TABLE EMPLEADO


ADD FOREIGN KEY(CODCARGO)
REFERENCES CARGO(CODIGO);

3. Insertemos los siguientes datos:

INSERT INTO CARGO VALUES (10,’Gerente General’,1);


INSERT INTO CARGO VALUES (20,’Gerente de Produccion’,2);
INSERT INTO CARGO VALUES (30,’Administrador de Planta’,3);
INSERT INTO CARGO VALUES (40,’Gerente Financiero’,2);
INSERT INTO CARGO VALUES (50,’Jefe de Sistemas’,3);
INSERT INTO CARGO VALUES (60,’DBA’ ,3);
INSERT INTO CARGO VALUES (70,’Analista de Sistemas’,4);
INSERT INTO EMPLEADO VALUES (100,’Luis
Franco’,33,1500000,20);
INSERT INTO EMPLEADO VALUES (200,’Ana
Velasco’,58,3600000,40);
INSERT INTO EMPLEADO VALUES (300,’Paula
Isaza’,24,910000,60);
INSERT INTO EMPLEADO VALUES (400,’Jose
Velez’,77,2900000,20);
INSERT INTO EMPLEADO VALUES (500,’Ximena
Torres’,21,810000,70);
INSERT INTO EMPLEADO VALUES (600,’Cristina
Galeano’,31,990000,10);
INSERT INTO EMPLEADO VALUES (700,’Noe
Rosales’,66,2600000,20);

4. Crear las siguientes vistas:

CREATE VIEW vista1 AS


SELECT nombre, edad, sueldo
FROM empleado
WHERE edad >= 30
WITH READ ONLY;

CREATE VIEW vista2 AS


SELECT cedula, nombre, edad
FROM empleado
WHERE sueldo > 2000000;

5. Consultar el campo “text” de la vista user_views para estas dos vistas.

COL text FORMAT a60


SELECT text
FROM user_views
WHERE view_name = ‘vista1‘;

Como se puede observar, lo que almacena una vista común es la


instrucción SELECT asociada a la vista, no almacena el resultado de
la consulta.

6. Consultar la vista “vista2”:


SELECT *
FROM vista2;

Aparece, en el resultado, el empleado Noé Rosales?

Al empleado llamado Noé Rosales le vamos a modificar su sueldo:


UPDATE empleado
SET sueldo = 580000
WHERE cedula = 700;

Consultar, de nuevo, la vista “vista2”. Aparece Noé Rosales? Al


actualizar la tabla base, automáticamente se actualiza el resultado de
la vista.

7. Hay vistas actualizables. Hagamos el siguiente ejercicio:

El empleado Ana Velasco está de cumpleaños, por lo tanto, hay que


actualizarle su edad. Pero lo vamos a hacer a través de la vista.

UPDATE vista2
SET edad = edad + 1
WHERE cedula = 200;

Ahora consultemos la edad de Ana Velasco en la tabla base:

SELECT *
FROM empleado
WHERE cedula = 200;

Esto significa que la vista “vista2” es actualizable.

8. Ahora tratemos de hacer lo mismo a través de la vista “vista1”. Luis


Franco esta de cumpleaños.

UPDATE vista1
SET edad = edad + 1
WHERE nombre = ‘Luis Franco’;
Que sucedió?. Dejó actualizarle la edad a Luis Franco? Ese es el
efecto de ponerle a una vista la cláusula WITH READ ONLY…… La
vista “vista1” es de solo lectura, no es una vista actualizable, es decir,
los datos de la tabla base no se pueden actualizar a través de la vista.

9. Creemos la siguiente vista:

CREATE VIEW vista3 AS


SELECT e.nombre, e.edad, c.nombre
FROM empleado e INNER JOIN cargo c
ON e.codcargo = c.codigo
WHERE e.edad < 50;

Sacó error? Está diciendo que el nombre de columna “nombre” está


duplicado. Hay que ponerles alias diferentes a las columnas
duplicadas.

CREATE VIEW vista3 AS


SELECT e.nombre, e.edad, c.nombre AS nombrecargo
FROM empleado e INNER JOIN cargo c
ON e.codcargo = c.codigo
WHERE e.edad < 50;

Actualicemos datos a través de la nueva vista.

UPDATE vista3
SET nombre = ‘Cristina Galeano Hernandez’
WHERE nombre = ‘Cristina Galeano’;
Funcionó?

UPDATE vista3
SET sueldo = 5900000
WHERE nombre = ‘Cristina Galeano Hernandez’;

Funcionó? Por que no?

UPDATE vista3
SET nombrecargo = ‘DBA’
WHERE nombre = ‘Cristina Galeano Hernandez’;
Qué sucede en este caso? Cual es el problema que se genera?

10. Opción WITH CHECK OPTION al crear una vista.

CREATE VIEW vista4 AS


SELECT cedula, nombre, edad, sueldo
FROM empleado
WHERE sueldo < 2000000
WITH CHECK OPTION;

Luego insertemos el siguiente empleado, a través de la vista:

INSERT INTO vista4 VALUES


(900, ‘Ricardo Marin’, 56, 1900000);

Lo deja insertar sin problemas.

Ahora insertemos el siguiente empleado:

INSERT INTO vista4 VALUES


(1000, ‘Melissa Arboleda’, 31, 3400000);

Qué sucede? Cual es el efecto del WITH CHECK OPTION? No deja


grabar, a través de la vista, datos que violen la condición del WHERE.

11. Para que sirve la opción FORCE al crear una vista?

CREATE FORCE VIEW vista9 AS……..

También podría gustarte