Las vistas son consultas ya realizadas, pueden ser de una sola tabla o de varias. Muy útiles si por ejemplo queremos que un usuario solo tenga acceso a unas determinadas columnas de una tabla pero no a otras, para eso crearemos una vista con las columnas que puede ver. Las vistas tienen la propiedad que si cambiamos el nombre de las tablas o columnas a las que hace referencia, automáticamente se cambian en esta.
- Create View
Crea una vista
Sintaxis:
Sintaxis:
CREATE VIEW NOMBREVISTA AS SENTENCIA SQL
Ejemplo:
Crea una vista llamada VistaEmpleados que contiene nº de empleado, apellido, fecha de alta, y nombre de departamento de las tablas Empleados y Departamento.
CREATE VIEW VISTAEMPLEADOS AS SELECT EMP_NO, APELLIDO, FECHA_ALT, DNOMBRE FROM EMP INNER JOIN DEPT ON EMP.DEPT_NO = DEPT.DEPT_NO
Vemos que la vista aparece en el nodo Vistas de la base de datos en el explorador de objetos del SQL Server Management Studio.
Mostramos los datos de la vista como si fuera una tabla.
SELECT * FROM VISTAEMPLEADOS
Si después de esto, modificamos los datos de las tablas aceptadas por la vista...
UPDATE DEPT SET DNOMBRE = 'CUENTAS' WHERE DNOMBRE = 'CONTABILIDAD'
Volvemos a ver los datos de la vista y vemos que también han cambiado, ya que la Vista no es una copia de los datos si no una consulta realizada sobre los datos originales...
También se pueden realizar consultas usando campos de tablas mezclados con campos de vistas.
Ejemplo:
SELECT EMP_NO, APELLIDO, DNOMBRE FROM VISTAEMPLEADOS UNION SELECT EMPLEADO_NO, APELLIDO, CAST(HOSPITAL_COD AS VARCHAR(6)) FROM PLANTILLA
También se puede realizar una vista con datos de una consulta de una tabla y una vista.
CREATE VIEW VISTAEMPUNIONHOSPITAL AS SELECT EMP_NO, APELLIDO, DNOMBRE FROM VISTAEMPLEADOS UNION SELECT EMPLEADO_NO, APELLIDO, CAST(HOSPITAL_COD AS VARCHAR(6)) FROM PLANTILLA
Mostramos los datos de la vista
SELECT * FROM VISTAEMPUNIONHOSPITAL
- SP_HelpText
Muestra la consulta que realiza la vista.
Sintaxis:
SP_HelpText Vista
Ejemplo:
SP_HelpText VistaEmpleados
- SP_Depends
Muestra las tablas, campos e incluso vistas de las que depende una vista.
Sintaxis:
SP_Depends Vista
Ejemplo:
SP_Depends VistaEmpUnionHospital
- Drop View
Borra una Vista.
Sintaxis:
Drop View NombreVista
Ejemplo:
Drop View VistaEmpUnionHospital
- Create View With Encryption
Crea una Vista encriptada, de forma que si hacemos una consulta con Sp_HelpText o SP_Depends solo nos devulve un mensaje indicando que la vista está encriptada.
Sintaxis:
Create View NombreVista With Encryption As Sentencias Sql
Ejemplo:
CREATE VIEW APELLIDOS WITH ENCRYPTION AS SELECT APELLIDO FROM EMP UNION SELECT APELLIDO FROM PLANTILLA UNION SELECT APELLIDO FROM DOCTOR
sp_helptext APELLIDOS
- Create View with Check Option
Crea una vista cuyos datos a los que hace referencia, no se pueden modificar o borrar, para que los resultados de la vista no se vean afectados. Esto es muy práctico en caso de que por ejemplo hagamos una vista con una consulta que usa where.
Sintaxis:
CREATE VIEW NOMBREVISTA AS SENTENCIA SQL WITH CHECK OPTION
Ejemplo:
CREATE VIEW VENDEDORES AS SELECT * FROM EMP WHERE OFICIO='VENDEDOR' WITH CHECK OPTION
Con esta opción no podremos actualizar los campos que tenemos en el Where de la Vista, pero la tabla si que podemos modificarla, con lo cual ofrecemos permisos sobre la vista al usuario y no le damos permisos de ningún tipo sobre la tabla, que el usuario trabaje sobre las vistas.
Con la siguiente actualización no podría realizar modificaciones sobre la vista, porque le he puesto With Check Option. De esta forma le doy permisos sobre la vista, pero no sobre la tabla, y no podrá modificar un cambio en el campo que yo he puesto.
UPDATE VENDEDORES SET OFICIO = 'NINO' WHERE OFICIO = 'VENDEDOR'
Con la siguiente actualización si me permitiría realizar modificaciones aunque tuviese with Check Option en la vista, ya que estoy trabajando sobre la Tabla.
UPDATE EMP SET OFICIO = 'NINO' WHERE OFICIO = 'VENDEDOR'
Espero haber ayudado en algo. Hasta la próxima oportunidad!
Twittear
Gracias por la enseñanza, ha sido muy útil, muchos éxitos.
ResponderEliminarHola Purringo, gracias por la visita y el aporte de tu comentario!
EliminarLos mejores deseos! Hasta cualquier momento!