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
Publicar un comentario