---
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`