Вы находитесь на странице: 1из 6

Vistas en SQL

Vistas en SQL
Qu son?
Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla
tiene un conjunto de definiciones, y almacena datos fsicamente mientras que una vista
tambin tiene un conjunto de definiciones pero no almacena datos fsicamente.

Una vista es una alternativa para mostrar datos de varias tablas que almacena una
consulta. Los datos accesibles a travs de la vista no estn almacenados en la base de
datos como un objeto.

Entonces, una vista almacena una consulta como un objeto para utilizarse
posteriormente. Las tablas consultadas en una vista se llaman tablas base. En general, se
puede dar un nombre a cualquier consulta y almacenarla como una vista.

Las vistas permiten:

Ocultar informacin: permitiendo el acceso a algunos datos y manteniendo oculto el


resto de la informacin 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 administracin de los permisos de usuario: se pueden dar al usuario


permisos para que solamente pueda acceder a los datos a travs 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 tipiar instrucciones repetidamente


almacenando en una vista el resultado de una consulta compleja que incluya informacin
de varias tablas.

Podemos crear vistas con: un subconjunto de registros y campos de una tabla; una
unin de varias tablas; una combinacin de varias tablas; un resumen estadstico de una
tabla; un subconjunto de otra vista, combinacin de vistas y tablas.

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.

Cmo se utilizan?
Una vista se define usando un "select".
Pgina 1
Vistas en SQL

La sintaxis para la creacin de una vista es la siguiente:

CREATE VIEW "NOMBRE_VISTA" AS "Instruccin SQL";

La Instruccin SQL puede ser cualquiera de las instrucciones SQL que hemos visto.

Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para
distinguir una tabla de una vista podemos fijar una convencin para darle nombres, por
ejemplo, colocar el sufijo vista y luego el nombre de las tablas consultadas en ellas.

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 clusulas "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

Por lo tanto, las vistas fueron inventadas hace un buen tiempo, aunque solo fueron
disponibles en MySQL a partir de la versin 5.0.1.

Como no usar vistas

Esto siendo dicho, hay formas en las que no tiene sentido usar una vista Por ejemplo:

CREATE VIEW view_books AS SELECT * FROM books;

Ejemplos de aplicacin
Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla:

Tabla Customer

Nombre de Columna Tipo de Datos

First_Name char (50)

Pgina 2
Vistas en SQL

Last_Name char (50)

Address char (50)

City char (50)

Country char (25)

Birth_Date datetime

Y deseamos crear una vista denominada V_Customer que contiene slo las columnas
First_Name, Last_Name y Pas de esta tabla, ingresaramos

CREATE VIEW V_Customer

AS SELECT First_Name, Last_Name, Country

FROM Customer;

Ahora tenemos una vista llamada V_Customer con la siguiente estructura:

View V_Customer

Nombre de Columna Tip de Datos

First_Name char(50)

Last_Name char(50)

Country char(25)

Si deseamos saber el contenido de esta vista, ingresamos,

SELECT * FROM V_Customer;

Podemos utilizar tambin una vista para aplicar uniones a dos tablas. En este caso, los
usuarios slo ven una vista en vez de dos tablas, y la instruccin SQL que los usuarios
necesitan emitir se vuelve mucho ms simple. Digamos que tenemos las siguientes dos
tablas:

Tabla Store_Information

Store_Name Sales Txn_Date

Los Angeles 1500 05-Jan-1999

San Diego 250 07-Jan-1999

Pgina 3
Vistas en SQL

Los Angeles 300 08-Jan-1999

Boston 700 08-Jan-1999

Tabla Geography

Region_Name Store_Name

East Boston

East New York

West Los Angeles

West San Diego

Y deseamos construir una vista que tenga ventas organizadas segn la regin.

Colocaramos la siguiente instruccin SQL:

CREATE VIEW V_REGION_SALES

AS SELECT A1.Region_Name REGION, SUM (A2.Sales) SALES

FROM Geography A1, Store_Information A2

WHERE A1.Store_Name = A2.Store_Name

GROUP BY A1.Region_Name;

Esto nos brinda una vista, V_REGION_SALES, que se ha definido para las ventas de los
negocios segn los registros de la regin. Si deseamos saber el contenido de esta vista,
ingresamos,

SELECT * FROM V_REGION_SALES;

Resultado:

REGION SALES

East 700

West 2050v

En el siguiente ejemplo creamos la vista "vista_empleados", que es resultado de una


combinacin en la cual se muestran 4 campos:

Pgina 4
Vistas en SQL

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 informacin contenida en la vista creada anteriormente:

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 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. Note que en el ejemplo, al concatenar los campos "apellido" y "nombre"

Colocamos un alias; si no lo hubisemos hecho aparecera un mensaje de error porque


dicha expresin 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 haba
un encabezado (el alias de la concatenacin) llamado "nombre" y no pueden repetirse, si
sucediera, aparecera 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 ao:

Create view vista_empleados_ingreso (fecha,cantidad) as


Pgina 5
Vistas en SQL

Select datepart(year,fechaingreso),count(*)

From empleados

Group by datepart(year,fechaingreso)

La diferencia es que se colocan entre parntesis los encabezados de las columnas que
aparecern 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 habra que agregar)
colocados en el "select" que define la vista. Los nombres que se colocan entre parntesis
deben ser tantos como los campos o expresiones que se definen en la vista.

Pgina 6

Вам также может понравиться