Cerrar

Enviar mensaje

twitter FaceBook You Tube Git Hub Docs.com Enviar email

Manual de SQL (Oracle SQL)

[12]
Creación de vistas

Publicidad

[12.1] introducción al uso de vistas

Una vista no es más que una consulta almacenada a fin de utilizarla tantas veces como se desee. Una vista no contiene datos sino la instrucción SELECT necesaria para crear la vista, eso asegura que los datos sean coherentes al utilizar los datos almacenados en las tablas. Por todo ello, las vistas gastan muy poco espacio de disco.

Las vistas se emplean para:

Hay dos tipos de vistas:

[12.2] creación de vistas

Sintaxis:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW vista 
                [(alias[, alias2...])]
AS consultaSELECT
[WITH CHECK OPTION [CONSTRAINT restricción]]
[WITH READ ONLY [CONSTRAINT restricción]]

Los distintos elementos de la sintaxis de la instrucción son:

Lo bueno de las vistas es que tras su creación se utilizan como si fueran una tabla.

Ejemplo:

CREATE VIEW resumen 
-- alias 
(id_localidad, localidad, poblacion, n_provincia, provincia,superficie, capital_provincia, id_comunidad, comunidad, capital_comunidad)
AS 
(  SELECT l.id_localidad, l.nombre, l.poblacion, 
          n_provincia, p.nombre, p.superficie, l2.nombre, 
          id_comunidad, c.nombre, l3.nombre
  FROM localidades l
  JOIN provincias p USING (n_provincia)
  JOIN comunidades c USING (id_comunidad)
  JOIN localidades l2 ON (p.id_capital=l2.id_localidad)
  JOIN localidades l3 ON (c.id_capital=l3.id_localidad)
);
SELECT DISTINCT (comunidad, capital_comunidad) 
FROM resumen; 
/* La vista pasa a utilizarse como si fuera una tabla normal*/

La creación de la vista del ejemplo es compleja ya que hay relaciones complicadas, pero una vez creada la vista, se le pueden hacer consultas como si se tratara de una tabla normal. Incluso se puede utilizar el comando DESCRIBE sobre la vista para mostrar la estructura de los campos que forman la vista o utilizarse como subconsulta en los comandos UPDATE o DELETE.

[12.3] detalles sobre el uso de vistas

[12.3.1]DML en las vistas

Las instrucciones DML (INSERT, UPDATE o DELETE) se pueden ejecutar sobre las vistas simples.

En el caso de las vistas complejas, se pueden borrar filas si la vista:

Además no se pueden modificar los datos si hay columnas que utilizan expresiones o funciones (por muy simples que fueran estas).

Para añadir datos (instrucción INSERT) además hay que cumplir que todos los campos con restricciones de tipo NOT NUL de las tablas están incluidos.

En todo caso, la cláusula WITH READ ONLY comentada anteriormente prohíbe cualquier instrucción DML sobre la vista.

[12.3.2]mostrar la lista de vistas del usuario

La vista del diccionario de datos de Oracle USER_VIEWS permite mostrar una lista de todas las vistas que posee el usuario actual. Es decir, para saber qué vistas hay disponibles se usa:

SELECT * FROM USER_VIEWS;

La columna TEXT de esa vista contiene la sentencia SQL que se utilizó para crear la vista (sentencia que es ejecutada cada vez que se invoca a la vista).

[12.3.3]borrar vistas

Para ello se utiliza el comando DROP VIEW:

DROP VIEW nombreDeVista;