CREATE VIEW VIEW_SUPPLIER_PRODUCS AS SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME ,P.PRODUCTID,P.PRODUCTNAME, P.UNITPRICE FROM SUPPLIERS AS S INNER JOIN PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERID GO
--CREACION DE UNA VISTA CON INSTRUCCION GROUP
CREATE VIEW VIEW_SUBTOTALES(CODIGO_ORDEN,SUB_TOTAL) AS SELECT OD.ORDERID,SUM(CONVERT(MONEY,(OD.UNITPRICE* QUANTITY*(1-DISCOUNT)/100))*100) FROM [ORDER DETAILS] OD GROUP BY OD.ORDERID GO --LLAMAR A LA CONSULTA ANTERIOR
SELECT * FROM VIEW_SUBTOTALES
--VER VISTAS
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='VIEW'
/* SOLO LOS DEL ROL DEL SISTEMA SYSADMIN, O DE EL ROL DE BASE DE DATOS DB_OWNER, DB_DLADMIN HACEN CONSULTAS O BIEN AL TENER PERMINOS CREATE VIEW Y PERMISOS DE SELECT EN LAS TABLAS A UTILIZAR -NO SE PUEDE USAR COMPUTE COMPUTE BY -NO SE PUEDE USAR ORDER BY SO SI SE USA TOP -NO SE PUEDE HACER REFERENCIA A TABLAS TEMPORALES -NO SE PUEDE HACER REFERENCIA A MAS DE 1024 COLUMNAS -NO SE PUEDE COMBINAR CREATE VIEW EN OTRO LOTE */
--BORRAR UNA VISTA
DROP VIEW VIEW_SUBTOTALES --ALTERAR UNA VISTA ALTER VIEW VIEW_SUPPLIER_PRODUCS AS SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME ,P.PRODUCTID,P.PRODUCTNAME, P.UNITPR ICE FROM SUPPLIERS AS S INNER JOIN PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERID GO
--ESCONDER EL CODIGO DE LA VISTA NO ELIMINE LAS ENTRADAS DE syscomments ALTER VIEW VIEW_SUPPLIER_PRODUCS WITH ENCRYPTION AS SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME ,P.PRODUCTID,P.PRODUCTNAME, P.UNITPR ICE FROM SUPPLIERS AS S INNER JOIN PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERID GO
--CONSULTAR INFORMACION INFORMACION DE LA VISTA ATRAVEZ DE INFORMATION_SCHEMA --SI ESTA PUESTO WITH ENRCRYPTION ESTA INFORMACION NO ESTA VISIBLE
SELECT * FROM INFORMATION_SCHEMA.TABLES --o sysobjects --Nombres de vistas y tablas SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE --o select * from sysdepends --Nombres de las tablas o vistas base. SELECT * FROM INFORMATION_SCHEMA.VIEWS -- o select * from syscomments --Definicin de como se hicieron las vistas. SELECT * FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE -- o syscolumns --tablas y vistas base y Columnas definidas en una vista.
--PARA VER EL SCRIPT DE UNA CONSULTA O INFORMATION_SCHEMA.VIEWS O SP_HELPTEXT SP_HELPTEXT [ORDERS QRY] SP_DEPENDS [ORDERS QRY] --NOMBRES DE TABLA Y SUS DEPENDENCIAS
--PUEDE HACER INSERCIONES EN UNA CONSULTA PERO CONSIDERE QUE --WITH CHECK OPTION OBLIGA A QUE LAS INSTRUCCIONES DE MODIFICACION SE COMPRUEBEN CONTRA EL WHERE
--CREAR UNA VISTA CON WITH CHECK OPTION PARA COMPROBAR EL EJERCICIO CREATE VIEW CLIENTESARGENTINA AS SELECT * FROM CUSTOMERS WHERE COUNTRY='ARGENTINA' WITH CHECK OPTION
--ESTA INSERCION DEBE PRODUCIR SOBRE LA CONSULTA ANTERIOR DEBE PRODUCIR UN ERROR.
INSERT CLIENTESARGENTINA (CUSTOMERID,COMPANYNAME,CONTACTNAME,CONTACTTITLE,CITY,C OUNTRY) VALUES ('VHCVV','UNIVERSIDAD GALILEO','VICTOR HUGO CARDENAS','SALES AGENT','GUATEMALA','GUATEMALA')
--CREACION DE UNA TABLA PARA COMPROBAR LA INSERCCION A MULTIPLES TABLAS CREATE VIEW PROVEEDORES_PRODUCTOS AS SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME,S.COUNTRY,P.PR ODUCTID,P.PRODUCTNAME,P.UNITPRICE FROM SUPPLIERS AS S INNER JOIN PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERID
--ESTA INSERCION DEBE DE DAR ERROR PORQUE AFECTA A VARIAS TABLAS
INSERT PROVEEDORES_PRODUCTOS(COMPANYNAME,CONTACTNAME,COUNTRY,P RODUCTNAME,UNITPRICE) VALUES('CARDENAS','VICTOR HUGO','GUATEMALA','LECHE EN POLVO',788.00)
--ESTA INSERCION A LA MISMA CONSULTA, SOLO QUE AHORA AFECTA SOLO UNA TABLA, EL RESULTADO ES EXITOSO
--COLOCAR UN INDICE EN LA CONSULTA PUEDE OPTIMIZAR SU RENDIMIENTO, DEBE HACER REFERENCIA AL NOMBRE DE 2 PARTES DEL OBJETO --DEBE AGREGAR LA OPCION WITH SCHEMABINDIGN DROP view PROVEEDORES_PRODUCTOS
CREATE VIEW DBO.PROVEEDORES_PRODUCTOS WITH SCHEMABINDING AS SELECT S.SUPPLIERID,S.COMPANYNAME,S.CONTACTNAME,S.COUNTRY,P.PR ODUCTID,P.PRODUCTNAME,P.UNITPRICE FROM DBO.SUPPLIERS AS S INNER JOIN DBO.PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERID
--CREACION DEL INDICE, EL PRIMER INDICE DEBE SER UN INDICE UNICO AGRUPADO
CREATE UNIQUE CLUSTERED INDEX CL_SUPPLIERID ON DBO.PROVEEDORES_PRODUCTOS (SUPPLIERID,PRODUCTID)
--CREACION DE OTROS INDICES NO AGRUPADOS
CREATE NONCLUSTERED INDEX VIEW_PRODUCTNAME ON PROVEEDORES_PRODUCTOS(PRODUCTNAME)
--VISTAS DIVIDIDAS -- ALL Incorpora todas las filas en los resultados, incluidas las duplicadas. --Si no se especifica lo contrario, se quitan las filas duplicadas.
SELECT COMPANYNAME, CONTACTNAME, 'CLIENTE' AS ESTADO FROM CUSTOMERS UNION ALL SELECT COMPANYNAME, CONTACTNAME, 'PROVEEDOR' AS ESTADO FROM SUPPLIERS
/* WITH CHECK OPTION
Exige que todas las instrucciones de modificacin de datos ejecutadas contra la vista se adhieran a los criterios establecidos en select_statement. Cuando una fila se modifica mediante una vista, WITH CHECK OPTION garantiza que los datos permanecern visibles en toda la vista despus de confirmar la modificacin.
WITH ENCRYPTION
Indica que SQL Server cifra las columnas de la tabla del sistema que contienen el texto de la instruccin CREATE VIEW. Utilizar WITH ENCRYPTION evita que la vista se publique como parte de la duplicacin de SQL Server.
SCHEMABINDING
Enlaza la vista al esquema. Cuando se especifica SCHEMABINDING, select_statement debe incluir los nombres con dos partes (propietario.objeto) de las tablas, vistas o funciones definidas por el usuario a las que se hace referencia.
Las vistas o las tablas que participan en una vista creada con la clusula de enlace de esquema no se pueden quitar ni alterar, de forma que deja de tener un enlace de esquema. De lo contrario, SQL Server genera un error. Adems, las instrucciones ALTER TABLE sobre tablas que participan en vistas que tienen enlaces de esquemas provocarn un error si estas instrucciones afectan a la definicin de la vista.
VIEW_METADATA
Especifica que SQL Server devolver a las API de DBLIB, ODBC y OLE DB la informacin de metadatos sobre la vista, en vez de las tablas o tabla base, cuando se soliciten los metadatos del modo de exploracin para una consulta que hace referencia a la vista. Los metadatos del modo de exploracin son metadatos adicionales devueltos por SQL Server a las API DB-LIB, ODBC y OLE DB del cliente, que permiten a las API del cliente implementar cursores actualizables en el cliente. Los metadatos del modo de exploracin incluyen informacin sobre la tabla base a la que pertenecen las columnas del conjunto de resultados.
Para las vistas creadas con la opcin VIEW_METADATA, los metadatos del modo de exploracin devuelven el nombre de vista en vez de los nombres de la tabla base cuando se describen las columnas de la vista en el conjunto de resultados.
Cuando se crea una vista WITH VIEW_METADATA, todas sus columnas (excepto timestamp) son actualizables si la vista tiene los desencadenadores INSERT o UPDATE INSTEAD OF. Consulte Vistas actualizables, ms adelante en este captulo. */ Publicado por Victor Cardenas en 10:23 Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest Etiquetas: Create View, Vistas SQL No hay comentarios: Publicar un comentario en la entrada