A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531-7555.

Apresentações semelhantes


Apresentação em tema: "SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531-7555."— Transcrição da apresentação:

1

2 SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior E-mail: pedrogalvaojunior@gmail.com Fone: 9531-7555 pedrogalvaojunior@gmail.com Versão 1.10.04 – Abril/2010.

3 Comandos Transact SQL (T-SQL) SubConsultas

4 SUBCONSULTAS Mais conhecidas, como subquery, ou seja, query dentro de query. –Exemplo: Select * from Produtos Where Produto IN (SELECT CODIGO FROM PRODUTOS) Select Codigo, Descricao=(Select Descricao From Produto), Marca from Produtos Where Codigo = 1

5 Comandos Transact SQL (T-SQL) Views(Visões)

6 Views Mais conhecida, como uma consulta armazenada que encapsula a complexidade de uma consulta e apresenta os dados desejados para usuários ou aplicativos. Ao criar uma visão, o SQL Server 2005 só armazena a definição da visão, os dados não são armazenadas a que esta view seja indexada. Uma visão é basicamente uma instrução armazenada SELECT em um banco de dados para posterior utilização. Uma vez criada, você pode obter resultados da instrução SELECT consultando a visão em vez de executar a instrução SELECT complexa em tabelas de existentes no banco de dados.

7 Views e suas informações Consultando a relação de views existentes em um banco de dados: –Select * from Sys.Views Visualizando o código de uma view existente: –Use Estoques Go; Select Name, Definition From Sys.SQL_Modules Inner Join Sys.Views On Sys.SQL_Modules.object_id = sys.views.object_id

8 Trabalhando com Views Criando uma nova view: –CREATE VIEW V_NovaView AS Select * from Tabela Alterando a view: –Alter View V_NovaView AS Select * from Tabela1 Excluíndo a view: –Drop View V_NovaView

9 Criando uma Views Complexa Criando a View: Create View V_VisualizarDados As Select Convert(VarChar(3),P.Codigo)+' - '+P.Descricao As 'Produto', Convert(VarChar(3),A.Codigo)+' - '+A.Descricao As 'Armazem', Case E.Movimentacao When 'E' Then 'Entrada' When 'S' Then 'Saida' End Movimentacao, E.Quantidade, E.DataControle As 'Data Movimentação' From Produtos P Inner Join Estocagem E On P.Codigo = E.CodProduto Inner Join Armazem A On A.Codigo = E.CodArmazem Consultando os dados através da View: Select * from V_VisualizarDados

10 PRÁTICA - I

11 Comandos Transact SQL (T-SQL) Stored Procedure(Procedimentos Armazenados)

12 Stored Procedure Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a qualquer momento tanto pelo SGBD (sistema Gerenciador de Banco de Dados) quanto por um sistema que faz interface com o mesmo.Dadossistema A utilização de Stored Procedures é uma técnica eficiente de executarmos operações reetitivas. Ao invés de digitar os comandos cada vez que determinada operação necessite ser executada, criamos um Stored Procedure e o chamamos. Em um Stored Procedure também podemos ter estruturas de controle e decisão, típicas das linguagens de programação. Em termos de desenvolvimento de aplicações, também temos vantagnes com a utilização de Stored Procedures.eficiente A diferença entre a Stored Procedure e a Function, esta relacionada a obrigatoriedade que a function tem em retornar valores.

13 Conhecendo os Tipos de Stored Procedure 1. System: Localizada no Banco Master, criada pelo próprio SQL Server; 2. Local: Criada pelo próprio usuário, localizada dentro do banco de dados definido pelo usuário; 3. Temporária Local: Criada temporáriamente pelo usuário, seu tempo de vida e utilização esta relacionado com a sessão que o usuário esta trabalhando; 4. Temporário Global: Criada temporáriamente pelo usuário, seu tempo de vida e utilização esta relacionado com a conexão que o usuário esta trabalhando; 5. Remota: Executada em outra máquina; 6. Extendida: Localizada fora do banco de dados, possuim uma código fonte(linguagem), capaz de executar comando para retornar informações de outras fontes de dados;

14 Stored Procedure Nomenclatura e definição: Banco de Dados Caracter Inicial Tipo MasterSPSistema Definido pelo Usuário SP ou PLocal Definido pelo Usuário #Temporária Local Definido pelo Usuário ##Temporário Global Definido pelo Usuário SP ou PRemota MasterXPExtendida(Extended)

15 Trabalhando com Stored Procedure CREATE PROCEDURE nome_do_stored_procedure [ {@parametro tipo_de_dados_parametro}[=valor_default] [output] ] [,...n] AS comando1, comando2, comando3,..., comando2 GO

16 Trabalhando com Stored Procedure ALTER PROCEDURE nome_do_stored_procedure [ {@parametro tipo_de_dados_parametro}[=valor_default] [output] ] [,...n] AS comando1, comando2, comando3,..., comando2 GO

17 Trabalhando com Stored Procedure Excluíndo a Stored Procedure: – Drop Procedure NomedaSuaProcedure; Executando a Stored Procedure: – Execute NomedaSuaProcedure; – Exec NomedaSuaProcedure; – SP_ExecuteSQL NNomedaSuaProcedure. Recompilar as alterações na Stored Procedure: – SP_RECOMPILE NomedaSuaProcedure;

18 PRÁTICA - II

19 Comandos Transact SQL (T-SQL) Trigger(Gatilho)

20 Trigger O comando CREATE TRIGGER cria um gatilho. O gatilho fica associado à tabela especificada e executa a função especificada nome_da_função quando ocorrem determinados eventos. O gatilho pode ser especificado para disparar antes de tentar realizar a operação na linha (antes das restrições serem verificadas e o comando INSERT, UPDATE ou DELETE ser tentado), ou após a operação estar completa (após as restrições serem verificadas e o comando INSERT, UPDATE ou DELETE ter completado). Se o gatilho for disparado antes do evento, o gatilho pode fazer com que a operação não seja realizada para a linha corrente, ou pode modificar a linha sendo inserida (para as operações de INSERT e UPDATE somente). Se o gatilho for disparado após o evento, todas as mudanças, incluindo a última inserção, atualização ou exclusão, estarão "visíveis" para o gatilho. Um gatilho que está marcado FOR EACH ROW é chamado uma vez para cada linha que a operação modifica. Por exemplo, um comando DELETE afetando 10 linhas faz com que todos os gatilhos ON DELETE da relação de destino sejam chamados 10 vezes, uma vez para cada linha excluída.

21 Trigger Diferentemente, um gatilho que está marcado FOR EACH STATEMENT somente executa uma vez para uma determinada operação, não importando quantas linhas sejam modificadas; em particular, uma operação que não modifica nenhuma linha ainda assim resulta na execução de todos os gatilhos FOR EACH STATEMENT aplicáveis. Se existirem vários gatilhos do mesmo tipo definidos para o mesmo evento, estes serão disparados na ordem alfabética de seus nomes. Considerações Importantes: –O Trigger não pode ser chamado diretamente; –O Trigger faz parte de um bloco transacional; –Obrigatório associar um trigger a uma table; –Quando a tabela é excluída o trigger também é excluído; –O Trigger depende exclusivamente dele e da tabela que esta associado.

22 Triggers e suas informações Consultando a relação de triggers existentes em um banco de dados: –Select * from Sys.Triggers Visualizando o código de um trigger existente: –Use Estoques Go; Select Name, Definition From Sys.SQL_Modules Inner Join Sys.Triggers On Sys.SQL_Modules.object_id = sys.triggers.object_id

23 Trabalhando com Triggers Criando um novo trigger: USE AdventureWorks GO; IF OBJECT_ID ('Sales.reminder1', 'TR') IS NOT NULL DROP TRIGGER Sales.reminder1 GO; CREATE TRIGGER reminder1 ON Sales.Customer AFTER INSERT, UPDATE AS RAISERROR ('Notify Customer Relations', 16, 10) GO

24 Trabalhando com Triggers Alterando um trigger existente: USE AdventureWorks GO; ALTER TRIGGER reminder1 ON Sales.Customer AFTER INSERT, UPDATE AS RAISERROR ('Notify Customer Relations!!!!', 16, 10) GO

25 Trabalhando com Triggers Excluíndo a Table e removendo o trigger existente: –Drop Table Sales.Customer; Excluíndo somente o trigger existente: –Drop Trigger reminder1;

26 PRÁTICA - III

27 Comandos Transact SQL (T-SQL) Functions(Funções)

28 Funções User-Defined Functions, são funções definidas pelo próprio usuário, que não fazem parte do conjunto de funções do SQL Server, essas funções podem retornar valores comuns ou mesmo um valor no formato de uma tabela, com múltiplas ocorrências, existentes no mesmo banco de dados. Uma função pode ser definida com a utilização de múltiplos comandos em Transact-SQL, retornando valores de acordo com o princípio para o qual foi desenvolvida. Dependendo da maneira como as instruções são colocadas no corpo de uma função, a função poderá ser classificada como sendo ESCALAR, INLINE ou MULTI-STATEMENT. Se o retorno da função for uma tabela que não corresponde à lista de colunas especificada, a função é considerada INLINE. Uma função INLINE é uma função que retorna uma tabela, contendo em seu corpo de definição apenas uma instrução SELECT. As colunas, incluindo os tipos de dados, da tabela a ser retornada pela função, são derivadas da lista de campos da cláusula SELECT definida no corpo da função. Se existe uma definição sobre a estrutura da tabela, bem como os seus campos com os respectivos tipos de dados, a função será considerada como MULTI-STATEMENT. Dentro de uma function, não é possível utilizar uma stored procedure.

29 Funções As instruções a seguir, correspondem as operações que podemos realizar no corpo de definição de uma função MULTI-STATEMENT, o que não estiver nessa lista, não pode ser utilizado dentro de uma função definida pelo usuário: Operações de atribuição: - Instruções de controle de fluxo(WHILE,CASE,IF). - Instruções de DECLARE para variáveis e cursores locais no escopo da função. - Instruções de SELECT para fazer operações de atribuição em variáveis locais do escopo da função. - Operações para manipulação de cursores locais na função, como abrir, fechar e etc. - Apenas instruções FETCH que fazem atribuições em variáveis locais na função serão permitidas usando a cláusula INTO; FETCH que retorne dados diretamente para um cliente não é possível. INSERT, UPDATE, e DELETE que modifique uma variável local do tipo table. - Além disso, não é possível utilizar nondeterministec functions no corpo de uma função. Nondeterministec Functions são funções que sempre retornam valores diferentes cada vez que você faz uma chamada, independente dos valores de entrada.

30 Funções Veja alguns exêmplos na tabela a seguir: –@@CONNECTIONS; –@@TOTAL_ERRORS; –@@CPU_BUSY; –@@TOTAL_READ; –@@IDLE; –@@TOTAL_WRITE; –@@IO_BUSY GETDATE; –@@MAX_CONNECTIONS GETUTCDATE; –@@PACK_RECEIVED NEWID; –@@PACK_SENT RAND; –@@PACKET_ERRORS TEXTPTR; –@@TIMETICKS.

31 Trabalhando com Functions Toda função deve ser criada e utilizada com o objetivo de retornar informações para o SQL Server, aplicativo ou usuário. Existem algumas considerações que devemos tomar para definir, o deverá ser retornando e de que forma este valor será retornado e apresentado. Onde: RETURNS Esta claúsula indica qual o tipo de dados ou conjunto de dados será retornado. RETURN Finaliza a function e devolve o valor e o controle da transação para a claúsula RETURNS.

32 Trabalhando com Functions Criando Function - InLine - Table Value: Create Function F_Produtos (@Descricao VarChar(100)) Returns Table As Return( Select * from MRP.Produtos Where Descricao = @Descricao) Go Executando: Select * from F_Produtos ('Luvas') Go 1.Funções InLine não utilizando o comandos BEGIN/END; 2.Funções InLine não podem utilizar o comando ORDER BY; 3.Utilizar funções InLine como parâmetros para as views; 4.Utilizar Funções InLine em conjunto com view indexadas.

33 Trabalhando com Functions Criando Function – Scalar: Create Function F_SomarValores (@Numero Int), (@Numero2 Int) Returns Int As Begin Declare @Total Int Set @Total=@Numero+@Numero2 Return (@Total) End Go Executando: Select dbo.F_SomarValores (10) Go 1.A função Escalar(Scalar), não retorna valores para os tipos de dados: TEXT, NTEXT, IMAGE e TIMESTAMP; 2.Além disso, não trabalha com cursores; 3.Declarar o nome da função em duas partes.

34 Trabalhando com Functions Criando Function - Multi - Statament - Table – Value: Create Function F_ConsultarProdutos (@Codigo Int) Returns @Tabela1 Table (codigo int, descricao varchar(10)) As Begin Insert @Tabela1 Select Codigo, Descricao from Produtos Where Codigo = @Codigo Return End Go Executando: Select * from F_ConsultarProdutos (1) Go

35 PRÁTICA - IV

36 SubConsultas. SubConsultas. Views. Views. Stored Procedures. Stored Procedures. Triggers. Triggers. Functions. Functions. Revisão

37


Carregar ppt "SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531-7555."

Apresentações semelhantes


Anúncios Google