Las vistas en SQL son una especie de tablas virtuales. Una vista también tiene filas y columnas, ya que están en una tabla real en la base de datos. Podemos crear una vista seleccionando campos de una o más tablas presentes en la base de datos. Una vista puede tener todas las filas de una tabla o filas específicas basadas en ciertas condiciones.

En este artículo aprenderemos a crear, eliminar y actualizar vistas.

Tablas de muestra:

DetallesEstudiantes
ID_ESTNOMBREDIRECCIÓN
1FRANKCALLAO
2ABELVICTORIA
3JOSEJUNIN
4RUBENPINOS
5ALINALIBERTAD
NotasEstudiantes
ID_ESTNOMBRENOTAEDAD
1FRANK9019
2JUAN5020
3JOSE8019
4RUBEN9521
5ALINA8518

1. Crear Vistas

Podemos crear vistas usando la sentencia CREATE VIEW. Una vista se puede crear desde una sola tabla o varias tablas.

Sintaxis:

CREATE VIEW vista_nombre AS
SELECT  columna1,columna2.....
FROM nombre_tabla
WHERE condicion;

Ejemplos:

Creando vista desde una sola tabla

  • En este ejemplo, crearemos una Vista llamada DetallesVista desde la tabla DetallesEstudiantes.
    Consulta:
CREATE VIEW DetallesVista AS
SELECT NOMBRE, DIRECCIÓN
FROM DetallesEstudiantes
WHERE ID_EST < 5;

Para ver los datos en la Vista, podemos consultar la vista de la misma manera que consultamos una tabla:

SELECT * FROM DetallesVista;

Salida:

 
NOMBREDIRECCIÓN
FRANKCALLAO
JUANVICTORIA
JOSEJUNIN
RUBENPINOS
  • En este otro ejemplo, crearemos una vista llamada NombresEstudiantes de la tabla DetallesEstudiantes.

Consulta:

CREATE VIEW NombresEstudiantes AS
SELECT ID_EST, NOMBRE
FROM DetallesEstudiantes
ORDER BY NOMBRE;

Si ahora consultamos la vista como:

SELECT * FROM NombresEstudiantes;

Salida:

NotasEstudiantes
ID_ESTNOMBRE
5ALINA
1FRANK
3JOSE
2JUAN
4RUBEN

Creación de vistas desde varias tablas

  • En este ejemplo, crearemos una vista llamada VistaNotas a partir de dos tablas, DetallesEstudiantes y NotasEstudiantes. Para crear una Vista desde varias tablas, simplemente podemos incluir varias tablas en la sentencia SELECT.

Consulta:

CREATE VIEW VistaNotas AS
SELECT DetallesEstudiantes.NOMBRE, DetallesEstudiantes.DIRECCIÓN, NotasEstudiantes.NOTAS
FROM DetallesEstudiantes, NotasEstudiantes
WHERE DetallesEstudiantes.NOMBRE= NotasEstudiantes.NOMBRE;

Para mostrar los datos de la vista VistaNotas:

SELECT * FROM VistaNotas;

Salida:

 
NOMBREDIRECCIÓNNOTAS
FRANKCALLAO90
JOSEJUNIN80
RUBENPINOS95
ALINALIBERTAD85

2. Borra Vistas

Hemos aprendido sobre la creación de una vista, pero ¿qué pasa si una vista creada ya no es necesaria? Obviamente vamos a querer borrarlo. SQL nos permite eliminar una vista existente. Podemos eliminar  una vista utilizando la sentencia DROP.

Sintaxis:

DROP VIEW nombre_vista;

Por ejemplo, si queremos eliminar la Vista existente VistaNotas, podemos hacer esto de la siguiente manera:

DROP VIEW VistaNotas;

3. Actualización de Vistas

Hay ciertas condiciones que deben cumplirse para actualizar una vista. Si alguna de estas condiciones no se cumple, no se nos permitirá actualizar la vista.

  1. La sentencia SELECT que se utiliza para crear la vista no debe incluir la cláusula GROUP BY ni la cláusula ORDER BY.
  2. La sentencia SELECT no debe tener la palabra clave DISTINCT.
  3. La vista debe tener todos los valores NOT NULL.
  4. La vista no debe crearse mediante consultas anidadas o complejas.
  5. La vista debe ser creada desde una sola tabla. Si la vista se crea utilizando varias tablas, no se nos permitirá actualizar la vista.

Podemos usar la sentencia CREATE OR REPLACE VIEW para agregar o eliminar campos de una vista.

Sintaxis:

CREATE OR REPLACE VIEW vista_nombre AS
SELECT columna1,coulmna2,..
FROM nombre_tabla
WHERE condicion;

Por ejemplo, si queremos actualizar la vista VistaNotas y agregar el campo EDAD a esta Vista desde la tabla de NotasEstudiantes, podemos hacer esto:

CREATE OR REPLACE VIEW VistaNotas AS
SELECT DetallesEstudiantes.NOMBRE, DetallesEstudiantes.DIRECCION, NotasEstudiantes.NOTAS, NotasEstudiantes.EDAD
FROM DetallesEstudiantes, NotasEstudiantes
WHERE DetallesEstudiantes.NOMBRE = NotasEstudiantes.NOMBRE;

Si recuperamos todos los datos de VistaNotas ahora como:

SELECT * FROM VistaNotas;

Salida:

 
NOMBREDIRECCIÓNNOTASEDAD
FRANKCALLAO9019
JOSEJUNIN8019
RUBENPINOS9521
ALINALIBERTAD8518

Insertar una fila en una vista

Podemos insertar una fila en una Vista de la misma manera que lo hacemos en una tabla. Podemos usar la sentencia INSERT INTO de SQL para insertar una fila en una vista.

Sintaxis:

INSERT nombre_vista(columna1, columna2 , columna3,..) 
VALUES(valor1, valor2, valor3..);

Ejemplo:

En el siguiente ejemplo, insertaremos una nueva fila en la Vista de DetallesVista que hemos creado anteriormente en el ejemplo de “creación de vistas desde una sola tabla”.

INSERT INTO DetallesVista(NOMBRE, DIRECCION)
VALUES("JUAN","PERLA");

Si recuperamos todos los datos de DetallesVista ahora como:

SELECT * FROM DetallesVista;

Salida:

 
NOMBREDIRECCIÓN
FRANKCALLAO
JOSEJUNIN
RUBENPINOS
ALINALIBERTAD
JUANPERLA

Eliminar una fila de una vista

Eliminar filas de una vista también es tan simple como eliminar filas de una tabla. Podemos usar la sentencia DELETE de SQL para eliminar filas de una vista. Al eliminar también una fila de una vista, primero elimine la fila de la tabla real y el cambio se reflejará en la vista.

Sintaxis:

DELETE FROM nombre_vista
WHERE condicion;

Ejemplo:

  • En este ejemplo, eliminaremos la última fila de la vista DetallesVista que acabamos de agregar en el ejemplo anterior de inserción de filas.

Salida:

DELETE FROM DetallesVista 
WHERE NOMBRE="JUAN";
 
NOMBREDIRECCIÓN
FRANKCALLAO
JOSEJUNIN
RUBENPINOS
ALINALIBERTAD

4. La clausula WITH CHECK OPTION

La palabra clave WITH CHECK OPTION en SQL es una cláusula muy útil para las vistas. Es aplicable a una vista actualizable. Si la vista no es actualizable, entonces no tiene sentido incluir esta cláusula en la sentencia CREATE VIEW.

La cláusula WITH CHECK OPTION se usa para evitar la inserción de filas en la vista donde no se cumple la condición en la cláusula WHERE en la declaración CREATE VIEW. Si hemos utilizado la cláusula WITH CHECK OPTION en la sentencia CREATE VIEW, y si la cláusula UPDATE o INSERT no cumple las condiciones, devolverán un error.

Ejemplo:

  • En el siguiente ejemplo, estamos creando una Vista que muestra la tabla DetallesEstudiantes con la cláusula WITH CHECK OPTION.
CREATE VIEW VistaMuestra AS
SELECT ID_EST, NOMBRE
FROM  DetallesEstudiantes
WHERE NOMBRE IS NOT NULL
WITH CHECK OPTION;

En esta Vista, si ahora intentamos insertar una nueva fila con valor nulo en la columna NOMBRE, se generará un error porque la vista se creará con la condición de la columna NOMBRE como NO NULA.

Por ejemplo, aunque la Vista es actualizable pero también la consulta a continuación para esta Vista no es válida:

INSERT INTO VistaMuestra(ID_EST)
VALUES(6);

NOTA: El valor predeterminado de la columna NOMBRE es null.

Vistas en SQL
5 (100%) 10 votos




Alex Walton

Alex Walton

Aprender desde Cero es tu web para conocer todo sobre informática. Mi nombre es Alex y me gustaría que dejes tu comentario ante cualquier duda o aporte.
"Si no lo consigues a la primera, llámalo versión 1.0"

Comparte este artículo:

Facebook
Google+
Twitter
LinkedIn
WhatsApp
Email
Deja tu comentario
Contenido Relacionado
Comentarios en SQL con ejemplos

Comentarios en SQL

Como cualquier lenguaje de programación, los comentarios también importan mucho en SQL. En este conjunto aprenderemos sobre cómo escribir comentarios ...
Leer Más
Transacciones SQL con ejemplos

Transacciones SQL

Conoce qué son, para qué sirven, y cómo implementar transacciones en SQL, con muchos ejemplos. 1. ¿Qué son las transacciones? ...
Leer Más
DDL, DML, TCL y DCL en SQL

DDL, DML, TCL y DCL en SQL

En este artículo, discutiremos el lenguaje de definición de datos, el lenguaje de manipulación de datos, el lenguaje de control ...
Leer Más
SOBRE NOSOTROS

Somos una web que busca el libre conocimiento en temas relacionados a la informática.

Todos los cursos son gratis. La publicidad nos mantiene activos así que por favor visita a nuestros anunciantes.

RECIBE MUCHOS REGALOS