--- title: 'Banco de Dados II' disqus: juniorvitor --- Banco de Dados === Antes de tudo, existe esse site: http://www.sqlfiddle.com/#!18/a7540/1 Da pra testar comandos sql server sem ter ele instalado :100: Eu sei, denada! ## Sumário [TOC] ## Permissões, login e roles ?? ## Bancos de Dados de Sistemas ??? ## Snapshot O Snapshot do banco de dados é uma cópia do mesmo em um determinado momento. {%youtube -_Z86T-0qqk %} ## DQL Avançada (parte da pesquisa que voces fizeram sobre novos comando sql) ... ## Backup ?? ## View As views são tipo um select a qual você o nomeia para facilitar a chamada. Por exemplo se você tem uma query de vendas a qual não precisa passar nenhum parametro nem nada, apenas executar. Você pode criar uma view com essa query chamada `view_vendas`, e quando quiser executar essa query você chamaria apenas a `view_vendas` e não precisaria digitar todo o select gigante novamente. {%youtube XB2JCCCtJiM%} ### Sintaxe de Criação de View ```sql CREATE VIEW vwProdutos AS SELECT IdProduto AS Código, Nome AS Produto, Fabricante, Quantidade, VlUnitario AS [ValorUnitario], Tipo FROM Produtos ``` ### Sintaxe de Alteração de View ```sql ALTER VIEW vwProdutos AS SELECT IdProduto AS Código, Nome AS Produto, Fabricante, Quantidade, VlUnitario AS [ValorUnitario], Tipo FROM Produtos WHERE VlUnitario > 499.00 ``` ## Stored Procedure & Funçoes A Store Procedure é um bixo doido, da pra fazer tudo dentro dela e ainda mais. Rodar query, executar comando, ter uma parte lógica, fazer loop, validação. Ela é quase igual uma `function`, da para fazer basicamente tudo que as funções fazem. A diferença das store procedores para as funções é que as funções tem um retorno, já a store procedures não. Por exemplo as funções, se você tem uma função que chama validaNumero(), e como o nome diz, ela valida se o valor é um número, retornando 0 ou 1 por exemplo. Você poderia usar no próprio select, por exemplo: ```sql SELECT p.id as id_produto, p.nome as nome_produto, validaNumero(p.valor) as [É NÚMERO] FROM produtos p ``` :::info Só pra comentar, o nome da coluna que renomeio como **[É NÚMERO]**, COLOQUEI O COLCHETES pois no SQL SERVER se quiser escrever um nome de coluna com espaço entre as palavras precisa usar os colchetes :D ::: JÁ NAS PROCEDURES, VOCÊ EXECUTA DIVERSAS COISAS DENTRO DELA, mas "não tem um retorno em si", e para executala seria: ```sql EXECUTE nomeDaProcedure 'Parametro1', 'Paramentro2' OU EXEC nomeDaProcedure 'Parametro1', 'Paramentro2' ``` ### Sintaxe para Criar uma Procedure ```sql CREATE PROCEDURE Busca --- Declarando o nome da procedure @CampoBusca VARCHAR (20) --- Declarando variável (note que utilizamos o @ antes do nome da variável) AS SELECT Codigo, Descrição --- Consulta FROM NomeTabela WHERE Descricao = @CampoBusca --- Utilizando variável como filtro para a consulta ``` ### Sintaxe para Alterar uma Procedure ```sql ALTER PROCEDURE Busca --- Declarando o nome da procedure @CampoBusca VARCHAR (20) --- Declarando variável (note que utilizamos o @ antes do nome da variável) AS SELECT Codigo, Descrição --- Consulta FROM NomeTabela WHERE Descricao = @CampoBusca --- Utilizando variável como filtro para a consulta ``` ## Concorrencia e transações ###### tags: `Templates` `Documentation`