Sei sulla pagina 1di 7

Bof

===========================================[ Capitulo 7 - VIEW(exibicao) ]


========================================================
-- Apaga a View
drop view HumanResources.vEmployee

-- Consulta a View
select * from HumanResources.vEmployee
----------------------------------------------------------------------------------
------------------------------------------------
-- Pagina 7-11

Create View HumanResources.vEmployee


As
Select
Employee.EmployeeID,
Contact.Title,
Contact.FirstName,
Contact.MiddleName,
Contact.LastName,
Contact.Suffix,
Employee.Title as [JobTitle],
Contact.Phone,
Contact.EmailAddress,
Contact.EmailPromotion,
Address.AddressLine1,
Address.AddressLine2,
Address.City,
StateProvince.[Name] as [StateProvinceName],
Address.PostalCode,
CountryRegion.[Name] as CountryRegionName,
Contact.AdditionalContactInfo
From
HumanResources.Employee Employee
Inner Join Person.Contact Contact
on Contact.ContactID = Employee.ContactID
Inner Join HumanResources.EmployeeAddress EmployeeAddress
on EmployeeAddress.EmployeeID = Employee.EmployeeID
Inner Join Person.Address Address
on Address.AddressID = EmployeeAddress.AddressID
Inner Join Person.StateProvince StateProvince
on StateProvince.StateProvinceID = Address.StateProvinceID
Inner Join Person.CountryRegion CountryRegion
on CountryRegion.CountryRegionCode = StateProvince.CountryRegionCode

----------------------------------------------------------------------------------
------------------------------------------------
-- Tabelas usadas na view acima.

Select * from HumanResources.Employee


Select * from Person.Contact
Select * from HumanResources.EmployeeAddress
Select * from Person.Address
Select * from Person.StateProvince
Select * from Person.CountryRegion

----------------------------------------------------------------------------------
------------------------------------------------
-- Pagina 7-15. Alteracao na View acima removendo as informacoes de endereco
postal.

Alter View HumanResources.vEmployee


As
Select
Employee.EmployeeID,
Contact.Title,
Contact.FirstName,
Contact.MiddleName,
Contact.LastName,
Contact.Suffix,
Employee.Title as [JobTitle],
Contact.Phone,
Contact.EmailAddress
From
HumanResources.Employee Employee
Inner Join Person.Contact Contact
on Contact.ContactID = Employee.ContactID

==================================================================================
================================================
-- Lista todas as Views (Exibicoes) disponiveis no banco de dados AdventureWorks.

Use AdventureWorks
Go
Select * from sys.views
----------------------------------------------------------------------------------
------------------------------------------------
-- Lista os nomes das Views com seus respectivos nomes de esquema. (criacao
propria)

Select [view].[name],[view].[schema_id],[schema].[name]
from sys.views as [view]
inner join sys.schemas as [schema]
on [view].schema_id = [schema].schema_id
==================================================================================
================================================
-- sp_helptext : Procedimento armazenado que exibe a definicao de uma View
(Exibicao) nao criptografada.

Use AdventureWorks
Go
Exec sp_helptext 'HumanResources.vEmployee'
----------------------------------------------------------------------------------
------------------------------------------------
-- Mostra o texto contendo a logica da View e outros tipos de objetos. Melhor de
observar com a saida para texto em vez de grid.

select
text
from
sys.syscomments
where
id = object_id(N'AdventureWorks.HumanResources.vEmployee')
==================================================================================
================================================
-- Mostra todas as relacoes de dependencias entre objetos.
select * from sys.sql_dependencies
----------------------------------------------------------------------------------
------------------------------------------------
-- Pageina 7-19. Mostra os objetos do BD que sao depentes da tabela
HumanResources.Employee.

select distinct
object_name (object_id) as Dependentes
from
sys.sql_dependencies
where
referenced_major_id = object_id(N'AdventureWorks.HumanResources.Employee')
order by Dependentes asc
----------------------------------------------------------------------------------
------------------------------------------------
-- Mostra mais informacoes dos objetos dependentes do objeto
"HumanResources.Employee". (criacao propria)

select
object_name (object_id) as Dependentes,
object_id,
referenced_major_id
from
sys.sql_dependencies as dependencias
where
dependencias.referenced_major_id =
object_id(N'AdventureWorks.HumanResources.Employee')
order by Dependentes asc
----------------------------------------------------------------------------------
------------------------------------------------
-- Adicionadas informacoes vindas do sys.all_objects, tais como "tipo do objeto" e
"data da criacao". (criacao propria)

Use AdventureWorks
Go

select
dependencias.[object_id] as [Id Depen],
object_name (dependencias.[object_id]) as [Nome do Dependente],
objetos.type_desc [Tipo do Dependente],
objetos.create_date as [Dt.Criacao Depen],
object_name (dependencias.referenced_major_id)[Objeto Base],
dependencias.referenced_major_id as [Id Objeto Base]
from
sys.sql_dependencies as dependencias
inner join sys.all_objects as objetos
on objetos.[object_id] = dependencias.[object_id]
where
dependencias.referenced_major_id =
object_id(N'AdventureWorks.HumanResources.Employee')
order by [Nome do Dependente] asc

----------------------------------------------------------------------------------
------------------------------------------------
-- Adicionado o nome do esquema dos objetos dependentes.

select
dependencias.[object_id] as [Id Depen],
object_name (dependencias.[object_id]) as [Nome do Dependente],
objetos.type_desc [Tipo do Dependente],
objetos.create_date as [Dt.Criacao Depen],
sys.schemas.name as [Esquema Depen], --Alterado
object_name (dependencias.referenced_major_id)[Objeto Base],
dependencias.referenced_major_id as [Id Objeto Base]
from
sys.sql_dependencies as dependencias
inner join sys.all_objects as objetos
on objetos.[object_id] = dependencias.[object_id]
inner join sys.schemas --Alterado
on sys.schemas.schema_id = objetos.schema_id
where
dependencias.referenced_major_id =
object_id(N'AdventureWorks.HumanResources.Employee')
order by [Nome do Dependente] asc

==================================================================================
================================================
-- Pagina 7-21. Alteracao na View HumanResources. A logica da View fica
criptografada.

Alter View HumanResources.vEmployee


WITH ENCRYPTION
As
Select
Employee.EmployeeID,
Contact.Title,
Contact.FirstName,
Contact.MiddleName,
Contact.LastName,
Contact.Suffix,
Employee.Title as [JobTitle],
Contact.Phone,
Contact.EmailAddress
From
HumanResources.Employee Employee
Inner Join Person.Contact Contact
on Contact.ContactID = Employee.ContactID
----------------------------------------------------------------------------------
------------------------------------------------
-- Procedimento para mostrar logica.
Exec sp_helptext 'HumanResources.vEmployee'
-- Resultado : The text for object 'HumanResources.vEmployee' is encrypted.

==================================================================================
================================================
--Pratica : Criando uma exibicao (7-24)

USE AdventureWorks
GO

CREATE VIEW [HumanResources].[vEmployeeContact]


WITH ENCRYPTION AS SELECT
e.EmployeeID,
e.Title,
c.Title AS Salutation,
c.FirstName,
c.MiddleName,
c.LastName,
c.EmailAddress,
c.Phone
FROM Person.Contact c INNER JOIN HumanResources.Employee e
ON c.ContactID = e.ContactID

----------------------------------------------------------------------------------
------------------------------------------------
-- Pagina (7-25)

Use AdventureWorks
Go
Select *
From [HumanResources].[vEmployeeContact]

==================================================================================
================================================
-- Apagar indice na View.
drop index Person.vStateProvinceCountryRegion.IX_vStateProvinceCountryRegion

-- Criacao de indice na View.


Use AdventureWorks
Go
Create Unique Clustered Index [IX_vStateProvinceCountryRegion] on
Person.vStateProvinceCountryRegion
( StateProvinceID Asc, CountryRegionCode Asc )

==================================================================================
================================================
-- Pagina 7-34. Laboratorio. Exercicio 1
-- Tarefa 2

Use AdventureWorks
Go

Create View HumanResources.vEmployeeDetails


WITH SCHEMABINDING
As
Select
Employee.EmployeeID,
Contact.Title,
Contact.FirstName,
Contact.MiddleName,
Contact.LastName,
Contact.Suffix,
Employee.Title as [JobTitle],
Contact.Phone,
Contact.EmailAddress,
Contact.EmailPromotion,
Address.AddressLine1,
Address.AddressLine2,
Address.City,
StateProvince.[Name] as [StateProvinceName],
Address.PostalCode,
CountryRegion.[Name] as CountryRegionName,
Contact.AdditionalContactInfo
From
HumanResources.Employee Employee
Inner Join Person.Contact Contact
on Contact.ContactID = Employee.ContactID
Inner Join HumanResources.EmployeeAddress EmployeeAddress
on EmployeeAddress.EmployeeID = Employee.EmployeeID
Inner Join Person.Address Address
on Address.AddressID = EmployeeAddress.AddressID
Inner Join Person.StateProvince StateProvince
on StateProvince.StateProvinceID = Address.StateProvinceID
Inner Join Person.CountryRegion CountryRegion
on CountryRegion.CountryRegionCode = StateProvince.CountryRegionCode
----------------------------------------------------------------------------------
------------------------------------------------
-- Tarefa 3

Select * from HumanResources.vEmployeeDetails


----------------------------------------------------------------------------------
------------------------------------------------
-- Pagina 7-37. Laboratorio. Exercicio 2
-- Tarefa 2

Use AdventureWorks
Go
Create Unique Clustered Index IX_vEmployeeDetails
On HumanResources.vEmployeeDetails
(EmployeeID)

----------------------------------------------------------------------------------
------------------------------------------------
-- Exercicio 3. Tarefa 3. Criando a exibicao particionada distribuida
Person.vContact
-- Arquivo CreatePartitionedView.sql

USE AW_Contacts
GO
CREATE VIEW Person.vContact
AS
SELECT * FROM [MIAMI].AW_Contacts.Person.Contact
UNION ALL
SELECT * FROM [MIAMI\SQLINSTANCE2].AW_Contacts.Person.Contact
UNION ALL
SELECT * FROM [MIAMI\SQLINSTANCE3].AW_Contacts.Person.Contact

-- Visualizando as tabelas usadas para criar a view Person.vContact


SELECT * FROM [MIAMI].AW_Contacts.Person.Contact -- (5995
row(s) affected)
SELECT * FROM [MIAMI\SQLINSTANCE2].AW_Contacts.Person.Contact -- (6000
row(s) affected)
SELECT * FROM [MIAMI\SQLINSTANCE3].AW_Contacts.Person.Contact -- (7977
row(s) affected)
-- Total :
19.972

-- Visualizando a View
SELECT * FROM Person.vContact -- (19972 row(s) affected)
==================================================================================
================================================
Eof

Potrebbero piacerti anche