---
# System prepended metadata

title: Banco de Dados II
tags: [Documentation, Templates]

---

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