VISTAS



  


         

I.    VISTAS:
1.     DEFINICIÓN:
Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual que una tabla, una vista consta de un conjunto de columnas y filas de datos con un nombre. Sin embargo, a menos que esté indizada, una vista no existe como conjunto de valores de datos almacenados en una base de datos. Las filas y las columnas de datos proceden de tablas a las que se hace referencia en la consulta que define la vista y se producen de forma dinámica cuando se hace referencia a la vista.
Una vista actúa como filtro de las tablas subyacentes a las que se hace referencia en ella. La consulta que define la vista puede provenir de una o de varias tablas, o bien de otras vistas de la base de datos actual u otras bases de datos. Asimismo, es posible utilizar las consultas distribuidas para definir vistas que utilicen datos de orígenes heterogéneos. Esto puede resultar de utilidad, por ejemplo, si desea combinar datos de estructura similar que proceden de distintos servidores, cada uno de los cuales almacena los datos para una región distinta de la organización.
Las vistas suelen usarse para centrar, simplificar y personalizar la percepción de la base de datos para cada usuario. Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el permiso de obtener acceso directo a las tablas base subyacentes de la vista. Las vistas pueden utilizarse para proporcionar una interfaz compatible con versiones anteriores con el fin de emular una tabla que existía, pero cuyo esquema ha cambiado. También pueden usarse para copiar datos entre SQL Server a fin de mejorar el rendimiento y crear particiones de los datos.
TIPOS DE VISTAS:
Además del rol estándar de las vistas básicas definidas por el usuario, SQL Server proporciona los siguientes tipos de vistas que permiten llevar a cabo objetivos especiales en una base de datos.
Vistas indizadas:
Una vista indizada es una vista que se ha materializado. Esto significa que se ha calculado la definición de la vista y que los datos resultantes se han almacenado como una tabla. Se puede indizar una vista creando un índice clúster único en ella. Las vistas indizadas pueden mejorar de forma considerable el rendimiento de algunos tipos de consultas. Las vistas indizadas funcionan mejor para consultas que agregan muchas filas. No son adecuadas para conjuntos de datos subyacentes que se actualizan frecuentemente.
Vistas con particiones:
Una vista con particiones combina datos horizontales con particiones de un conjunto de tablas miembro en uno o más servidores. Esto hace que los datos aparezcan como si fueran de una tabla. Una vista que combina tablas miembro en la misma instancia de SQL Server es una vista con particiones local.
Vistas del sistema:
Las vistas de sistema exponen metadatos de catálogo. Puede usar las vistas del sistema para devolver información acerca de la instancia de SQL Server u objetos definidos en la instancia. Por ejemplo, puede consultar la vista de catálogo sys.databases para devolver información sobre las bases de datos definidas por el usuario disponibles en la instancia.
2.     SINTAXIS:
Una vista permite guardar una instrucción SQL que se podrá ejecutar las veces que quieras sin tener que repetir la instrucción SQL. Esta es la sintaxis para una vista:
CREATE VIEW
nombre_vista AS
instrucción SQL
Para ejecutar la vista, basta con lanzar la SELECT:
SELECT * FROM nombre_vista
Por ejemplo, tengo una tabla donde guardo las incidencias reportadas por tiendas, quiero tener un TOP 10 de tiendas que generan esas incidencias, para ello el contenido de mi vista sería:
CREATE VIEW
vista_top10_averias AS
SELECT t.deleg AS Delegacion, t.nombre, COUNT(a.deleg) AS numero FROM averias AS a INNER JOIN tiendas AS t ON a.deleg=t.deleg GROUP by t.deleg ORDER BY numero DESC LIMIT 10;
Para ver el resultado sólo tendría que teclear:
SELECT * FROM vista_top10_averias;
Y el resultado sería este:



3.     ADMINISTRACIÓN DE VISTAS (Creación, Modificación y Eliminación):
Una vista es como una ventana a través de la cual se puede consultar o cambiar información de la tabla a la que está asociada.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igual que los de una tabla. De hecho, si no se sabe que se está trabajando con una vista, nada hace suponer que es así. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.

ü  Creación de una Vista:
CREATE VIEW vista [({columna ,}+] AS consulta ;
La vista se crea con las columnas que devuelve una consulta.
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula OR REPLACE. La sentencia SELECT que proporciona la definición de la vista. Puede estar dirigida a tablas de la base o a otras vistas.

ü  Modificación de una Vista:
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
Esta sentencia modifica la definición de una vista existente.

ü  Borrado de una Vista
DROP VIEW vista ;
DROP VIEW [IF EXISTS]
nombre_vista [, nombre_vista] ...
[RESTRICT | CASCADE]
DROP VIEW elimina una o más vistas de la base de datos. Se debe poseer el privilegio DROP en cada vista a eliminar.

4.     EJEMPLOS:
Una vista se define usando un "select".
La sintaxis básica parcial para crear una vista es la siguiente:
 create view NOMBREVISTA as
  SENTENCIASSELECT
   from TABLA;
El contenido de una vista se muestra con un "select":
select *from NOMBREVISTA;
En el siguiente ejemplo creamos la vista "vista_empleados", que es resultado de una combinación en la cual se muestran 4 campos:
 create view vista_empleados as
 select (apellido+' '+e.nombre) as nombre,sexo,
 s.nombre as seccion, cantidadhijos
 from empleados as e
 join secciones as s
 on codigo=seccion
Para ver la información contenida en la vista creada anteriormente, escribimos lo siguiente:
select *from vista_empleados;
Podemos realizar consultas a una vista como si se tratara de una tabla:
select seccion,count(*) as cantidad
from vista_empleados;
Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para distinguir una tabla de una vista podemos fijar una convención para darle nombres, por ejemplo, colocar el sufijo vista y luego el nombre de las tablas consultadas en ellas.
Los campos y expresiones de la consulta que define una vista deben tener un nombre. Se debe colocar nombre de campo cuando es un campo calculado o si hay 2 campos con el mismo nombre. Notamos que en el ejemplo, al concatenar los campos "apellido" y "nombre" colocamos un alias; si no lo hubiésemos hecho aparecería un mensaje de error porque dicha expresión debe tener un encabezado, SQL Server no lo coloca por defecto.
Los nombres de los campos y expresiones de la consulta que define una vista deben ser únicos (no puede haber dos campos o encabezados con igual nombre). Note que en la vista definida en el ejemplo, al campo "s.nombre" le colocamos un alias porque ya había un encabezado (el alias de la concatenación) llamado "nombre" y no pueden repetirse, si sucediera, aparecería un mensaje de error.
Otra sintaxis es la siguiente:
 create view NOMBREVISTA (NOMBRESDEENCABEZADOS)
 as
 SENTENCIASSELECT
  from TABLA;
Creamos otra vista de "empleados" denominada "vista_empleados_ingreso" que almacena la cantidad de empleados por año:
create view vista_empleados_ingreso (fecha,cantidad)
   as
  select datepart(year,fechaingreso),count(*)
   from empleados
   group by datepart(year,fechaingreso)
La diferencia es que se colocan entre paréntesis los encabezados de las columnas que aparecerán en la vista. Si no los colocamos y empleamos la sintaxis vista anteriormente, se emplean los nombres de los campos o alias (que en este caso habría que agregar) colocados en el "select" que define la vista. Los nombres que se colocan entre paréntesis deben ser tantos como los campos o expresiones que se definen en la vista.
Las vistas se crean en la base de datos activa.
Al crear una vista, SQL Server verifica que existan las tablas a las que se hacen referencia en ella.
Se aconseja probar la sentencia "select" con la cual definiremos la vista antes de crearla para asegurarnos que el resultado que retorna es el imaginado.
Existen algunas restricciones para el uso de "create view", a saber:
ü  no puede incluir las cláusulas "compute" ni "compute by" ni la palabra clave "into";
ü  no se pueden crear vistas temporales ni crear vistas sobre tablas temporales.
ü  no se pueden asociar reglas ni valores por defecto a las vistas.
ü  no puede combinarse con otras instrucciones en un mismo lote.
ü  Se pueden construir vistas sobre otras vistas.

RESUMEN:
Una vista es una consulta que se presenta como una tabla (virtual) a partir de un conjunto de tablas en una base de datos relacional.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igual que los de una tabla. Si no se sabe que se está trabajando con una vista, nada hace suponer que es así. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.
Una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la calcula y que puede realizarse sobre una o más tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un número cualquiera de vistas.
La mayoría de los SGBD soportan la creación y manipulación de vistas. Las vistas se crean cuando se necesitan hacer varias sentencias para devolver una tabla final.
Hay dos tipos de vistas de base de datos: vistas dinámicas y vistas estáticas. Las vistas dinámicas pueden contener datos de una o dos tablas e incluir automáticamente todas las columnas de la tabla o tablas especificadas. Las vistas dinámicas se pueden actualizar dinámicamente cuando se crean o modifican objetos relacionados u objetos ampliados. Las vistas estáticas pueden contener datos de varias tablas y las columnas necesarias de estas tablas se deben especificar en las cláusulas SELECT y WHERE de la vista estática. Las vistas dinámicas se pueden actualizar manualmente cuando se crean o modifican objetos relacionados u objetos ampliados.
Cuando se crea una vista dinámica con datos de dos tablas, debe asegurarse de que ambas tablas tengan las mismas columnas PRIMARYKEYCOLSEQ o que contengan índices exclusivos con el mismo nombre de columna en el mismo orden.

SUMMARY:
A view is a query that is presented as a (virtual) table from a set of tables in a relational database.
The views have the same structure as a table: rows and columns. The only difference is that only the definition is stored, not the data. The data that is retrieved by a query to a view will be presented in the same way as in a table. If you do not know that you are working with a view, there is nothing to suggest that this is the case. As with a table, you can insert, update, delete and select data in a view. Although it is always possible to select data from a view, in some conditions there are restrictions to perform the rest of the operations on views.
A view is specified through a query expression (a SELECT statement) that calculates it and that can be performed on one or more tables. On a set of relational tables you can work with any number of views.
Most DBMS support the creation and manipulation of views. The views are created when you need to make several statements to return a final table.
There are two types of database views: dynamic views and static views. Dynamic views can contain data from one or two tables and automatically include all columns of the specified table or tables. Dynamic views can be updated dynamically when related objects or extended objects are created or modified. Static views can contain data from several tables and the required columns of these tables must be specified in the SELECT and WHERE clauses of the static view. Dynamic views can be updated manually when you create or modify related objects or extended objects.
When you create a dynamic view with data from two tables, you must ensure that both tables have the same PRIMARYKEYCOLSEQ columns or that they contain unique indexes with the same column name in the same order.

RECOMENDACIONES:
ü  Si la vista no está indizada, sus datos no se almacenan en la base de datos como un objeto diferente. Lo que se almacena en la base de datos es una instrucción SELECT.
ü  El conjunto de resultados de la instrucción SELECT forma la tabla virtual que devuelve la vista. El usuario puede utilizar dicha tabla virtual haciendo referencia al nombre de la vista en instrucciones Transact-SQL, de la misma forma en que se hace referencia a las tablas.

CONCLUCIONES:
Una vista de base de datos es un subconjunto de una base de datos y se basa en una consulta que se ejecuta en una o más tablas de base de datos. Las vistas de base de datos se guardan en la base de datos como consultas con nombre y se pueden utilizar para guardar consultas completas que se utilizan con frecuencia.
Una vista es una tabla virtual que se genera a partir de una consulta de selección. Dicho de otro modo. Escribimos una consulta de selección (sobre una o más tablas) para leer los datos, y almacenamos el resultado en una vista.
Las vistas permiten:
ü  Ocultar información: permitiendo el acceso a algunos datos y manteniendo oculto el resto de la información que no se incluye en la vista. El usuario opera con los datos de una vista como si se tratara de una tabla, pudiendo modificar tales datos.
ü  Simplificar la administración de los permisos de usuario: se pueden dar al usuario permisos para que solamente pueda acceder a los datos a través de vistas, en lugar de concederle permisos para acceder a ciertos campos, así se protegen las tablas base de cambios en su estructura.
ü  Mejorar el rendimiento: se puede evitar tipear instrucciones repetidamente almacenando en una vista el resultado de una consulta compleja que incluya información de varias tablas.
Podemos crear vistas con: un subconjunto de registros y campos de una tabla; una unión de varias tablas; una combinación de varias tablas; un resumen estadístico de una tabla; un subconjunto de otra vista, combinación de vistas y tablas.

APRECIACIÓN DEL EQUIPO:
ü  Las vistas suelen usarse para realizar consultas, centrar, simplificar y personalizar la percepción de la base de datos para cada usuario.
ü  Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no se les conceden el permiso de obtener acceso directo a las tablas base subyacentes de la vista.
ü  Las vistas pueden utilizarse para copiar datos entre SQL Server a fin de mejorar el rendimiento y crear particiones de los datos.

GLOSARIO DE TÉRMINOS:
·       Cláusula OR REPLACE: Es una nueva opción de la sentencia CREATE para varios objetos, incluidos alias, funciones, módulos, apodos, procedimientos, secuencias, activadores, variables y vistas.
·       Indizar: Es el proceso de explicar o representar el contenido temático de un recurso de información.
·       Subyacentes: Es aquello que se encuentra escondido, es decir, es algo que no es apreciable de manera evidente.
·       Filtro: Se refiere a un programa diseñado para controlar qué contenido se permite mostrar, especialmente para restringir el acceso a ciertos materiales de la Web.
·       Emular: Es ejecutar programas en una plataforma diferente de aquella para la cual fueron escritos originalmente.
·       Índice clúster: Es una estructura de disco asociada con una tabla o una vista que acelera la recuperación de filas de la tabla o de la vista. Cuando una tabla tiene un índice clúster, la tabla se denomina tabla agrupada.


LINKOGRAFÍA:
ü  https://docs.microsoft.com/es-es/sql/relational-databases/views/views
ü  https://technet.microsoft.com/es-es/library/ms190706(v=sql.105).aspx
ü  https://www.ibm.com/support/knowledgecenter/es/SSLKT6_7.6.0/com.ibm.mt.doc/configur/c_views.html
ü  https://darvegac.wordpress.com/2017/07/26/vistas-procedimientos-y-triggers-en-mysql/
ü  https://www.infor.uva.es/~jvegas/cursos/bd/sqlplus/sqlplus.html
ü  http://download.nust.na/pub6/mysql/doc/refman/5.0/es/views.html
ü  https://es.slideshare.net/LisbethOcaaBueno/vistas-94647190




Comentarios

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS