Anda di halaman 1dari 41

Banco de Dados80h.

Marcos Brasileiro
#MarcosInformaticaDoBrasil - www.mibtec.com.br
Lgica de programao O que veremos?
O que um banco de dados;
Modelos de Banco de dados;
SGBD;
Structured Query Language - SQL;
Divies da linguagem SQL;
Tipos de dados;
Tipos de objetos de banco de dados;
Recursos de Programao Transact-SQL
Funes e Stored Procedure
Trigger
Banco de dados O que isso?
a coleo organizada de dados que se relacionam de forma a criar algum
sentido(Informao) e dar mais eficincia na hora de resgatar, alterar ou excluir
essas informaes.
Os bancos de dados so formados por uma coleo de objetos que viso
estruturar o banco de dados (tabelas, gatilhos, chaves, ndices...).
Banco de dados Modelos de Bancos de Dados
Quando os banco de dados passaram a ser informatizados, surgiram os seguintes
modelos:
Modelo Plano (Ex.: Planilha do excel);
Modelo em Rede (Algumas colunas contm apontadores para outras tabelas ao
invs de dados);
Modelo Hierrquico ( uma variao particular do modelo em rede);
Modelo Relacional(Modelo adotado nos dias de hoje e base de nosso curso);
Banco de dados Sistema Gerenciador de Bancos de Dados
SGBD
o software responsvel pelo gerenciamento dos objetos que compem o banco
de dados assim como guardar, organizar , proteger e disponibilizar os dados por
ele mantidos.
Este software possui uma coleo de regras que garantem a integridade, e
atomicidade dos dados por ele mantido.
Ex.: PostgreSQL MSSQL Firebird MySQL - Interbase
Banco de dados SGBD Propriedades Obrigatrias ACID
Atomicidade
Todas as aes que compema unidade de trabalho da transao devemser concludas comsucesso, para que seja efetivada. Se durante a transao
qualquer ao que constitui unidade de trabalho falhar, a transao inteira deve ser desfeita (rollback). Quando todas as aes so efetuadas com
sucesso, a transao pode ser efetivada e persistida embanco (commit).
Consistncia
Todas as regras e restries definidas no banco de dados devemser obedecidas. Relacionamentos por chaves estrangeiras, checagemde valores para
campos restritos ou nicos devemser obedecidos para que uma transao possa ser completada comsucesso.
Isolamento
Cada transao funciona completamente parte de outras estaes. Todas as operaes so parte de uma transao nica. O principio que
nenhuma outra transao, operando no mesmo sistema, possa interferir no funcionamento da transao corrente( um mecanismo de controle).
Outras transaes no podem visualizar os resultados parciais das operaes de uma transao em andamento (ainda em respeito propriedade da
atomicidade).
Durabilidade
Significa que os resultados de uma transao so permanentes e podem ser desfeitos somente por uma transao subseqente.Por exemplo: todos
os dados e status relativos a uma transao devem ser armazenados num repositrio permanente, no sendo passveis de falha por uma falha de
hardware.
Banco de Dados Objetos do Banco de Dados
Um banco de dados compostos de diversos objetos que podem ser mantidos pelo
SGBD ou pelo administrador do banco de dados. Abaixo temos uma lista de alguns
desses objetos:
Tabelas Recipiente onde ficamos dados.
Usurios Objeto que guarda as credenciais de umusurio.
Funes Conjunto de instrues armazenadas que podemser executadas.
Rules Conjunto de regas que regulamo acesso e o tipo de acesso aos objetos.
Trigger Conjunto de instrues que so disparadas mediante uma ao no banco.
Obs.: Existem outros objetos que veremos na prtica.
Banco de Dados - Structured Query Language
SQL a linguagem originalmente criada pela IBM, com o nome de SEQUEL
(linguagem estruturada de pesquisa em ingls). Podemos dividir a SQL em
segmento de acordo como objetivo de cada comando conforme vemos abaixo:
DML - Linguagem de Manipulao de Dados
DDL - Linguagem de Definio de Dados
DCL - Linguagem de Controle de Dados
DTL - Linguagem de Transao de Dados
DQL - Linguagem de Consulta de Dados
Banco de Dados SQL (Divises da linguagem)
DML - Linguagem de Manipulao de
Dados
INSERT, UPDATE, DELETE, SELECT
DDL - Linguagem de Definio de Dados
CREATE, ALTER, DROP
DCL - Linguagem de Controle de Dados
GRANT, REVOKE
DTL - Linguagem de Transao de Dados
BEGIN TRANSACTION, COMMIT
TRANSACTION, ROLLBACK TRANSACTION
DQL - Linguagem de Consulta de Dados
SELECT
Banco de Dados SQL Clusulas
As clusulas so condies utilizadas para definir os dados que deseja selecionar ou modificar
em uma consulta.
FROM- Utilizada para especificar a tabela que se vai selecionar os registros.
WHERE Utilizada para especificar as condies que devem reunir os registros que sero
selecionados.
GROUP BY Utilizada para agrupar os registros selecionados.
HAVING Utilizada para expressar a condio que deve satisfazer cada grupo.
ORDER BY Utilizada para ordenar os registros selecionados com uma ordem especifica.
DISTINCT Utilizada para selecionar dados sem repetio.
Banco de Dados SQL Operadores Lgicos
Os operadores lgicos servempara realizar teste lgicos e avaliar determinadas condies.
AND E lgico. Avalia as condies e devolve um valor verdadeiro caso ambos sejam
corretos.
OR OU lgico. Avalia as condies e devolve umvalor verdadeiro se algumfor correto.
NOT Negao lgica. Devolve o valor contrrio da expresso.
Banco de Dados SQL Operadores Relacionais
Os operadores relacionais so utilizados para realizar comparaes entre dados.
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
= Igual
<> Diferente
!= Diferente
Banco de Dados SQL Operadores Relacionais (continuao)
Between - Utilizado para determinar um intervalo de valores. Deve ser utilizado juntamente
com o AND
Ex.: select * fromfuncionrios where idade between 18 and 30.
Like - Utilizado para comparar dados utilizando um modelo passado como padro. Deve ser
utilizado com os smbolos % como coringa.
Ex.: select * fromfuncionrio where nome like Mar%
select * fromfuncionrio where nome like %ntos
select * fromfuncionrio where nome like %Andre%
In Utilizado quando queremos comparar dados dentro de um conjunto.
Ex.: select * fromfuncionarioi where cargos in(professor, secretrio)
Banco de Dados SQL Funes Agregadas
So comandos que servem para realizar totalizaes nas consultas.
AVG Utilizada para calcular a mdia dos valores de um campo determinado.
COUNT Utilizada para devolver o nmero de registros da seleo.
SUM Utilizada para devolver a soma de todos os valores de um campo determinado.
MAX Utilizada para devolver o valor mais alto de um campo especificado.
MIN Utilizada para devolver o valor mais baixo de um campo especificado.
Ex.: select count(*) fromfuncionario where funcao =professor
Obs.: Quando alguma coluna estiver junto com uma coluna afetada por uma funo agregada, deve
ser adicionada a clusula group by e a lista de colunas sem funo agregada.
Ex.: select sum(salario), cargo fromfuncioanario group by cargo
Banco de Dados Objeto Tabela (table) e Chaves (key)
As tabelas so os repositrios para os dados. Nelas colocamos os atributos dos dados que
queremos guardar com seus respectivos tipos assim como nunabilidade, ndices e
chaves(primrias, nica ou estrangeiras).
Um campo chamado de chave quando o mesmo passivo de atender o critrio de indexao,
no repetio e no nulo, dentro da mesma tabela. Ex.: o campo CPF da tabela funcionrio no
pode ser repetido logo, o mesmo candidato chave primaria(primary key).
As chaves podemser classificadas como:
Primria a chave principal da tabela.(primary key).
Estrangeira uma chave que vemde outra tabela para criar umrelacionamento entre a tabela
de origemda chave e a tabela que esta recebendo a chave(foreign key).
nica uma chave que utilizado para no permitir a duplicao de dado numa tabela(unique).
Banco de Dados Cardinalidade
Cardinalidade o termo utilizado para definir o tipo de relao que existe entre duas
entidades(tabelas). Esta pode ser:
1:N Umelemento de uma tabela est ou pode estar ligado muitos elementos de outras.
N:N Vrios elementos de uma tabela podemest ligados a muitos elementos da outras.
1:1 - Umelemento de uma tabela s pode se relacionar comumelemento de outras.
Banco de Dados Cardinalidade
HOMEM
EMPREGADOS
ALUNOS CURSO
DEPARTAMENTO
MULHER CASA-SE
MATRICULA-SE
TRABALHA
1,1 1,1
1,1
N,N
N,N
1,N
Banco de Dados Cardinalidade
Cardinalidade o termo utilizado para definir o tipo de relao que existe entre duas
entidades(tabelas). Esta pode ser:
1:N Umelemento de uma tabela est ou pode estar ligado muitos elementos de outras.
N:N Vrios elementos de uma tabela podemest ligados a muitos elementos da outras.
1:1 - Umelemento de uma tabela s pode se relacionar comumelemento de outras.
Banco de Dados Objetos do Banco de dados
Objeto Significado
Database a estrutura lgica dentro da qual sero criados outros objetos.
Table umobjeto bidimensional, composto por colunas e linhas onde sero guardados os dados.
Constraint
So regras que so colocadas em certas colunas para garantir a integridade e a consistncia dos dados. Funciona
como restries.
Default
Objeto que associado a uma coluna, faz com que o sistema insira um valor definido como padro, caso a coluna
seja deixada em branco.
Index Objeto utilizado para deixar algumas pesquisas mais rpidas.
View Objeto que permite a visualizao indireta de uma tabela.
Procedure
Objeto que contem blocos de comandos que realizam uma tarefa. Essas tarefas podem ou no, retornar dados.
Podem ser utilizadas para alterar dados no sistema.
Function
Objeto que contem blocos de comandos que realizam uma tarefa. Essas tarefas podem ou no, retornar dados.
No podem ser utilizadas para alterar dados no sistema.
Trigger
Objeto que dever conter um bloco de comando. Estes funcionam como gatilho e so ligados a uma tabela para
serem disparados automaticamente antes ou depois dos comandos (INSER, DELETE, UPDATE).
Criando e Excluindo Banco de dados
create database NomeDoBanco (comando que cria um banco de dados.
possvel modificar o local fsico do banco durante a sua criao.)
drop database NomeDoBanco (comando que exclui um banco de dados)
Criando tabelas
Para criarmos uma tabela utilizamos o comando create database seguido do nome da tabela e a lista de colunas
que ela ter com os seus respectivos tipos de dados, nunabilidade e outras caractersticas.
create table MinhaTabela(
campo1 int not null,
campo2 varchar(39),
campo3 numeric(18,2)
constraint PK_ChaveMinhaTabela
primary key(campo1)
)
Recursos de Programao = TransactSQL
Uma varivel uma rea da memria do computador destinada para guardar,
temporariamente um valor. Para criar uma varivel no SQL utilizamos a palavra
DECLARE. Uma varivel deve ter um nome e um tipo definido para determinar o
tipo de dados que ela pode suportar. Os nomes das variveis dever vir precedido
de um @.
Ex.: DECLARE @Num numeric(1,2)
DECLARE @nome varchar(30) ou
DECLARE @cargo varchar(50),
@salario money;
Atribuindo valor ao uma Varivel
SET @cargo =ANALISTA DE SISTEMAS
SET @salario = 12095.93
Select @nome = nome_funcionario from funcionario
Exibindo o valor de uma varivel
PRINT @salario
ou
Select @salario
Desvio condicional se (IF)
IF @salario < 20000.00
print Salrio defasado!
else
print @salario
Desvio condicional case
select nome,
case sexo
when F then Feminino
when M then Macho
else No definido
end
fromaluno
Lao de repetio while
while condio = verdadeiro
begin
comando_1
comando_2
end
Gatilhos (Trigger)
So recursos utilizados para tornar uma ao de manipulao de dados
automatizada. Um trigger deve ser criado sobre uma tabela e pode ser disparado
antes ou depois de uma das aes: INSERT, DELETE ou UPDATE. Os triggers podem
ser FOR ou AFTER que disparamdurante ou depois respectivamente.
Ex.:
create trigger Atualizar Estoque on tbSaida
for insert
as
........ sequncia de comandos necessrios
Tabelas INSERTED e DELETED
Os triggers no possuem parmetros de entrada. Para contornar isso, o sistema
cria duas tabelas temporrias (inserted e deleted), com a mesma estrutura da
tabela que mantemo trigger, comos valores conforme a seguir:
Quando a ao que dispara o trigger for um INSERT, criada a tabela INSERTED
contendo os valores que esto sendo inseridos.
Quando a ao que dispara o trigger for um DELETE, criada a tabela DELETED
contendo os valores que esto sendo apagados.
Quando a ao que dispara o trigger for um UPDATE, so criadas as duas tabelas
ao mesmo tempo. INSERTED com os novos valores e DELETED com os valores
antigo.
Apagando um trigger(drop trigger)
Para apagar um trigger utilizamos o mesmo comando utilizado para apagar
qualquer objeto do banco de dados. O comando DROP seguido do nome do
objeto.
Ex.:
DROP TRIGGER AtulizarEstoque
Desabilitando e Habilitando um trigger
As vezes precisamos desarmar um trigger temporariamente. Para isso alteramos a
tabela que mantem o gatilho, alterando o estado da trigger com o comando de
alterao de objetos de banco de dados o ALTER.
Ex.:
alter table Venda disable trigger AtualizarEstoque (desarmando o trigger)
alter table Venda enable trigger AtualizarEstoque (Armando o trigger)
Descobrindo qual coluna esta sendo atualizada IF UPDATE()
As vezes precisamos descobrir qual coluna da tabela est sendo alterada. Para isso
fazemos o seguinte teste lgico dentro do trigger.
create trigger AtualizarSalario on tbSalaraio
for update
as
if update(salario)
.....Sequencia de comandos
Triggers Instead Of
A trigger so disparadas antes ou aps um INSERT, DELETE ou UPDATE. O fato que
uma dessas trs ao so executadas para que o trigger seja disparados. As vezes
precisamos bloquear uma dessas aes ou seja precisamos que o gatilho se
antecipe s aes para isso utilizamos os triggers instead of.
ex.:
create trigger ImpedirDelete on Venda
instead of delete
as
raiserror(No permitido deletar. , 16 ,1)
Comando que no funcionam dentro de um trigger
ALTER DATABASE
CREATE DATABASE
DISK INIT
DISK RESIZE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG
Funes (function) definidas pelo usurio
Uma funo um tipo de programa, criado dentro de um banco de dados
especfico, cujo objetivo de retornar um valor ou um conjunto de valores para um
usurio , para outra funo ou uma Stored Procedure.
As funes so classificadas em:
Funes Escalares
Funes In-Line
Funes Table
Regras para Funes definidas por usurios
Uma funo pode receber parmetros de entrada.
Os parmetros no podemser dos tipos: timestamp, cursor ou table.
No aceita parmetro de sada (output).
Uma funo retorna umvalor escalar ou dados de uma tabela.
Uma funo no podem conter comandos: INSERT, UPDATE ou DELETE para
afetar dados emtabelas no disco.
Uma funo pode conter os comandos: INSERT, UPDATE ou DELETE para
manipular dados de variveis do tipo table.
Regras para Funes definidas por usurios - Continuao
Uma funo executada atravs do comando SELECT.
Para utilizar uma funo o usurio deve ter permisso de SELECT sobre ela.
Para executar uma funo o comando SELECT deve conter o nome totalmente
qualifico da funo ou seja nome do proprietrio (ponto) nome dafuno. Ex.:
select dbo.umaFuncao.
Uma funo no-determinstica so aquelas que retornam um valor diferente do
outro cada vez que so executadas nas mesmas condies ou seja, com os
mesmos valores de entrada. Uma funo determinstica internas do SQL (Built-In)
no podemser executadas dentro de uma funo criadas por umusurio.
Funes determinstica do SQL
Funo Significado
@@ERROR Varivel global que guarda o nmero de erros na execuo de comandos.
@@IDENTITY Varivel global que guarda o ltimo valor incrementado pelo identity.
@@ROWCOUNT Varivel global que guarda o nmero de linhas afetadas por um comando.
@@CONNECTIONS Varivel global que guarda o nmero de conexes ou tentativas.(zerada ao reiniciar)
@@TRANCOUNT Retorna o nmero de transaes na conexo atual.
@@IDLE Retornar o tempo em que o sistema ficou ocioso. (em milsimos de segundos).
@@IO_BUSY Retorna o tempo gasto para executar comandos de I/O.
@@MAX_CONNECTIONS Retorna o nmero de conexes simultneas de um usurio.
@@PACK_RECEIVED Retorna o nmero de pacotes recebidos pela rede.
@@PACK_SENT Retorna o nmero de pacotes enviados pela rede.
@@PACK_ERRORS Retorna o nmero de pacotes com erros.
@@TOTAL_ERROS Retorna o nmero total de erros desde a ltima inicializao.
Funes determinstica do SQL (continuao)
Funo Significado
APP_NAME() Retorna o nome da aplicao da sesso corrente.
CURRENT_TIMESTAMP() Retorna a date e hora atual.
CURRENT_USER() Retorna o nome do usurio atual.
GETDATE() Retorna a data e hora atual.
HOST_NAME() Retorna o nome do computador que est conectando atualmente.
@@IDENTITY Retornar o ltimo incremento em um identity em uma sesso.
USER_NAME Retorna o nome do usurio.
Obs.: Existemoutras funes e variveis do sistemas. As variveis do sistemas (iniciadas com @@) aqui listadas
so tambm consideradas funes.
Procedimentos armazenados(Stored Procedure)
Um Stored Procedure um programa criado no SQL Server, em determinado banco
de dados, com a finalidade de executar operaes com os dados.
Regras de criao de Stored Procedure
Pode receber parmetros de entrada;
Os parmetros de entrada no podem ser do tipo TABLE;
Pode retornar valores com os comandos RETURN (valores escalares), SELECT
selecionando contedo de uma tabela e OUTPUT (retorando vrios valores
escalares);
Dentro de um Procedure podem ser utilizados qualquer comando da linguagem
SQL exceto a criao de Strored Procedure;
A execuo de um procedure feito atravs dos comandos EXEC ou
SP_ExecuteSQL seguido do nome do procedimentos e valores de entrada
separados por vrgulas.

Anda mungkin juga menyukai