Escolar Documentos
Profissional Documentos
Cultura Documentos
br
SQL Completo
Introdução a Bancos de Dados
• Objetivos do curso
– Aprender a linguagem SQL
– Aprender a modelar, normalizar, criar e interagir com bancos de dados
• Público alvo
– Programadores e desenvolvedores de software
– Administradores de bancos de dados
– Professores e estudantes de bancos de dados
• Requisitos
– Conhecimentos básicos de programação
1
softblue.com.br
• Quem é a Softblue
– Empresa on-line especializada em cursos de programação
– Atua desde 2003 com treinamentos
• Bancos de dados
Ferramentas que permitem o armazenamento e Banco de dados
manipulação de dados organizados em forma de
tabelas
Tabela PRODUTOS
• Tabelas PRODUTO
TV
PREÇO
1000
• Linhas
Guilherme 30 SP
Mateus 35 RJ
Registros ou tuplas
2
softblue.com.br
• Visões
Consultas SQL a dados das tabelas do banco sem armazená-los.
• Índices
Estruturas que gerenciam a ordenação de valores dos campos informados
para melhorar a performance de processamento destes campos.
SGBDs
• SGBD
– Sistema Gerenciador de Banco de Dados
– DBMS: Database Management System
– SGBD não é um banco de dados, mas sim um complemento
– SGBD é um grupo de programas para interação com os dados
Sistema
Banco de
Dados SGBD Sistema
Usuário
Introdução ao SQL
SQL
3
softblue.com.br
SQL
SQL
SQL
4
softblue.com.br
SQL
SQL
5
softblue.com.br
SQL Completo
Normalização de Dados
Relacionamentos e chaves
• Relacionamentos
Ligações entre tabelas
• Chave Composta
Composição de duas ou mais colunas para gerar uma combinação única
1
softblue.com.br
2
softblue.com.br
Tabela 1 Tabela 2
Campo 1 Campo 1
Campo 2 Campo 2
Campo 3 Campo 3
Campo 4 Campo 4
• Anomalia de exclusão
– Impede a exclusão de registros devido ao relacionamento com outra tabela
• Anomalia de alteração
– Impede a alteração de registros devido ao relacionamento com outra
tabela
Tabela SOCIOS
SOCIOS Tabela SOCIOS_E_PLANOS Tabela PLANOS
PLANOS
ID NOME PLANO_DE_TV
PLANO_DE_TV_ID
ID NOME PLANO_DE_TVID
PLANO_DE_TV
VALOR
PLANO_DE_TV
VALOR VALOR
1 Fernando Esporte
1 1 Total
Fernando Esporte Total 1
Esporte119
Total
Esporte Total
119 119
2 Guilherme Cinema
2 2 Total
Guilherme Cinema Total 2
Cinema149
Total
Cinema Total
149 149
3 Mateus Cinema
2 3 Total
Mateus Cinema Total 149
Normalização de dados
• Evitar anomalias
• Facilitar a manutenção
• Maximizar a performance
• Manter a integridade dos dados
• Normalização de dados
– Criada em 1970
– 5 Formas Normais (FNs)
– Na prática a normalização é feita por intuição
– Resulta em um número maior de tabelas no banco
– Mais tabelas podem aumentar a manutenção e diminuir a performance
– Deve ser utilizado com bom senso
3
softblue.com.br
1FN
Tabela LOCACOES
CLIENTE TELEFONE LOCACOES CATEGORIA CODIGO PAGAMENTO SALDO
Fernando 1111-1111 Alien Ficção L1 Cartão Débito 10,00
Fernando 1111-1111 A Caverna Suspense L1 Cartão Débito 10,00
Guilherme 1212-1212 O Predador Ficção L2 Cartão Crédito 5,00
Guilherme 1212-1212 Alien Ficção L2 Cartão Crédito 5,00
Fernando 1313-1313 Dick Tracy Policial L3 Dinheiro 0,00
2FN
Tabela DETALHES
CODIGO LOCACOES CATEGORIA
Tabela LOCACOES
L1 Alien Ficção
CODIGO PAGAMENTO SALDO CLIENTE TELEFONE
L1 A Caverna Suspense
L1 Cartão Débito 10,00 Fernando 1111-1111
L2 O Predador Ficção
L2 Cartão Crédito 5,00 Guilherme 1212-1212
L2 Alien Ficção
L3 Dinheiro 0,00 Fernando 1313-1313
L3 Dick Tracy Policial
3FN
Tabela DETALHES
Tabela CLIENTES Tabela LOCACOES CODIGO LOCACOES CATEGORIA
CLIENTE TELEFONE SALDO CODIGO PAGAMENTO CLIENTE TELEFONE L1 Alien Ficção
Fernando 1111-1111 10,00 L1 Cartão Débito Fernando 1111-1111 L1 A Caverna Suspense
Guilherme 1212-1212 5,00 L2 Cartão Crédito Guilherme 1212-1212 L2 O Predador Ficção
Fernando 1313-1313 0,00 L3 Dinheiro Fernando 1313-1313 L2 Alien Ficção
L3 Dick Tracy Policial
4
softblue.com.br
4FN e 5FN
4FN e 5FN
Tabela CLIENTES Tabela LOCACOES Tabela FILMES Tabela DETALHES
CODIGO CLIENTE TELEFONE SALDO CODIGO CODIGO_ PAGAMENTO CODIGO FILME CATEGORIA CODIGO CODIGO_FILME
CLIENTE F1 Alien Ficção L1 F1
C1 Fernando 1111-1111 10,00
L1 C1 Cartão Débito F2 A Caverna Suspense L1 F2
C2 Guilherme 1212-1212 5,00
L2 C2 Cartão Crédito F3 O Predador Ficção L2 F3
C3 Fernando 1313-1313 0,00
L3 C3 Dinheiro F4 Dick Tracy Policial L2 F1
L3 F4
5
softblue.com.br
SQL Completo
Criando um Banco de Dados
• Necessidade de padronização
American National Standards Institute (ANSI) em 1986
International Organization for Standardization (ISO) em 1987
Revisto pela primeira vez em 1992 originando o padrão SQL-92
Outras revisões:
• SQL:1999 incorporou características de expressões regulares, queries
recursivas e triggers
• SQL:2003 incorporou características de XML, sequências
• SQL:2008, SQL:2011
Bancos de dados criam e evoluem suas próprias derivações do SQL
Curso aborda SQL padrão, com menções a outras derivações
Tipos de dados
• Boleano e Numéricos
Name MySQL Postgre SQL Server Oracle Firebird Intervalo (MySQL) Bytes
BOOLEAN TINYINT SIM TINYINT ENUM SMALLINT 0 ou 1 (FALSE ou TRUE) 1 bit
-128 à 127
TINYINT SIM SMALLINT SIM NUMBER SMALLINT 1
0 à 255 se UNSIGNED
-32,768 à 32,767
SMALLINT SIM SIM SIM NUMBER SIM 2
0 à 65,535 se UNSIGNED
-2,147,483,648 à 2,147,483,647
INT SIM SIM SIM NUMBER SIM 4
0 à 4,294,967,295 se UNSIGNED
-9,223,372,036,854,775,808 à +9,223,372,036,854,775,807
BIGINT SIM SIM SIM NUMBER INT64 8
0 à 18,446,744,073,709,551,615 se UNSIGNED
-3.402823466E+38 à -1.17544351E-38
FLOAT SIM REAL SIM FLOAT SIM 4
1.175494351E-38 à 3.402823466E+38 se UNSIGNED
DOUBLE DOUBLE -1.7976931348623157E+308 à -2.2250738585072014E-308,
DOUBLE SIM FLOAT SIM 8
PRECISION PRECISION 2.2250738585072014E-308 à 1.7976931348623157E+308 se UNSIGNED
NUMERIC SIM SIM DECIMAL NUMBER SIM Mesmo intervalo de DOUBLE X+2
1
softblue.com.br
Tipos de dados
• String
Name MySQL Postgre SQL Server Oracle Firebird Bytes
CHAR SIM SIM SIM SIM SIM X
VARCHAR SIM SIM SIM SIM SIM X+1
• Date e hora
Name MySQL Postgre SQL Server Oracle Firebird Intervalo (MySQL) Bytes
DATE SIM SIM SIM SIM TIMESTAMP "1000-01-01" – "9999-12-31" (ano, mês, dia) 3
TIME SIM SIM SIM TIMESTAMP TIMESTAMP "-838:59:59" – "838:59:59" (horas, minutos, segundos) 3
DATETIME SIM TIMESTAMP SIM TIMESTAMP TIMESTAMP "1000-01-01 00:00:00" - "9999-12-31 23:59:59" 8
TIMESTAMP SIM SIM SIM SIM SIM 19700101000000 – 2037+ 4
• Listas customizadas
Name MySQL Postgre SQL Server Oracle Firebird
ENUM SIM SIM NÃO TEM SIM NÃO TEM
• BLOB
Permite o armazenamento de informações binárias, arquivos e imagens
• TEXT
Permite o armazenamento de grandes informações de strings
• Redes
Permite o armazenamento de endereços IP, MAC-ADDRESS e outros
• Monetários
Permite o armazenamento de valores monetários com formatação
• Geométricos
Permite o armazenamento de informações de formas geométricas
Atributos
• Unsigned / Signed
Permite ou não números negativos
• Auto-increment
Sequências, contadores
• Zerofill
Preenche o valor numérico completando com zeros a esquerda
2
softblue.com.br
• Espaço em disco
Quanto menor o tipo de dado, menos espaço ele ocupará
• Processamento e busca
Quanto menor o tipo de dado, mais rápido é o processamento
• Como funciona
Servidor Servidor
Bancos RH Estoque
3
softblue.com.br
• Como funciona
Not Null
CPF
Primary
Pessoas Key
4
softblue.com.br
Criando um índice
Criando um índice
5
softblue.com.br
6
softblue.com.br
SQL Completo
Manipulando Dados
DML e DQL
Gerenciando dados
1
softblue.com.br
Filtros de seleção
• Operadores lógicos
– AND
– OR
– NOT
Atributos especiais
• Apelido de tabela
SELECT Campos FROM Tabela Apelido ...
SELECT TABELA_UM.NOME FROM PESSOAS TABELA_UM
2
softblue.com.br
3
softblue.com.br
SQL Completo
Relacionamentos e Visões
Relacionamentos no SQL
Inner join
• Join padrão
• Produto cartesiano entre as tabelas
• Combina todas as linhas da primeira tabela
com todas as linhas da segunda, que
satisfaçam as condições das chaves
1
softblue.com.br
Inner join
Tabela RESULTADO
NOME CPF ESTADO CPF VEICULO PLACA
Fernando 111.111.111-11 PR 111.111.111-11 Carro SB-0001
Equi join
Tabela RESULTADO
NOME CPF ESTADO VEICULO PLACA
Fernando 111.111.111-11 PR Carro SB-0001
Tabela RESULTADO
NOME SALARIO FAIXA
Fernando 1500 Analista Júnior
Guilherme 2500 Analista Pleno
2
softblue.com.br
Tabela RESULTADO
NOME CPF ESTADO CPF VEICULO PLACA
Fernando 111.111.111-11 PR 111.111.111-11 Carro SB-0001
Guilherme 222.222.222-22 SP NULL NULL NULL
Tabela RESULTADO
NOME CPF ESTADO CPF VEICULO PLACA
Fernando 111.111.111-11 PR 111.111.111-11 Carro SB-0001
NULL NULL NULL NULL Carro SB-0002
3
softblue.com.br
Tabela RESULTADO
NOME CPF ESTADO CPF VEICULO PLACA
Fernando 111.111.111-11 PR 111.111.111-11 Carro SB-0001
Guilherme 222.222.222-22 SP NULL NULL NULL
NULL NULL NULL NULL Carro SB-0002
Self join
Tabela RESULTADO
NOME INDICADO_POR
Guilherme Fernando
Visões
4
softblue.com.br
5
softblue.com.br
SQL Completo
Funções Especiais e Subqueries
Funções de agregação
• Funções de agregação
– COUNT: Contagem de registros de uma consulta
– SUM: Soma de valores
– AVG: Média de valores
– MAX: Valor máximo retornado pela consulta
– MIN: Valor mínimo retornado pela consulta
COUNT
Tabela FUNCIONARIOS
NOME SALARIO DEPARTAMENTO
Fernando 1250 Recursos Humanos
Guilherme 1550 Jurídico
Mário 1400 Recursos Humanos
Paulo 1230 TI
Haroldo 1330 Marketing
Ricardo 1850 TI
1
softblue.com.br
SUM
• Soma de valores
SELECT SUM(SALARIO) FROM FUNCIONARIOS
8610
Tabela FUNCIONARIOS
NOME SALARIO DEPARTAMENTO
Fernando 1250 Recursos Humanos
Guilherme 1550 Jurídico
Mário 1400 Recursos Humanos
Paulo 1230 TI
Haroldo 1330 Marketing
Ricardo 1850 TI
AVG
• Média de valores
SELECT AVG(SALARIO) FROM FUNCIONARIOS
1435
Tabela FUNCIONARIOS
NOME SALARIO DEPARTAMENTO
Fernando 1250 Recursos Humanos
Guilherme 1550 Jurídico
Mário 1400 Recursos Humanos
Paulo 1230 TI
Haroldo 1330 Marketing
Ricardo 1850 TI
MAX
Tabela FUNCIONARIOS
NOME SALARIO DEPARTAMENTO
Fernando 1250 Recursos Humanos
Guilherme 1550 Jurídico
Mário 1400 Recursos Humanos
Paulo 1230 TI
Haroldo 1330 Marketing
Ricardo 1850 TI
2
softblue.com.br
MIN
Tabela FUNCIONARIOS
NOME SALARIO DEPARTAMENTO
Fernando 1250 Recursos Humanos
Guilherme 1550 Jurídico
Mário 1400 Recursos Humanos
Paulo 1230 TI
Haroldo 1330 Marketing
Ricardo 1850 TI
Funções de paginação
• Funções de paginação
– DISTINCT: Seleciona os valores únicos, sem repetição
– ORDER BY: Ordena o resultado baseado nas colunas informadas
– LIMIT: Limita o número de resultados retornados
– OFFSET: Indica quantos registros devem ser avançados
3
softblue.com.br
DISTINCT
ORDER BY
LIMIT
4
softblue.com.br
OFFSET
Funções de agrupamento
• Funções de agrupamento
– GROUP BY: Agrupamento de registros por categoria
– HAVING: Seleção de agrupamento
GROUP BY
5
softblue.com.br
HAVING
Subqueries
Subqueries
6
softblue.com.br
7
softblue.com.br
SQL Completo
Controle de Acesso
• Níveis de ações
– Gerenciar estruturas
– Gerenciar dados
– Ler dados
Como funciona
Possui
acesso ao
servidor? Possui
acesso ao
banco? Possui
acesso a
tabela?
Possui
acesso a
coluna? Possui
acesso ao
registro? Possui
acesso a
operação?
1
softblue.com.br
Gerenciando acessos
• Habilitando acesso
GRANT Ação ON Estrutura TO Usuário
• Revogando acesso
REVOKE Ação ON Estrutura FROM Usuário
• Ações
ALL, SELECT, INSERT, UPDATE, DELETE
• Estruturas
TABLE, VIEW, SEQUENCE
2
softblue.com.br
SQL Completo
Transações (ACID)
Transações
• Conjunto de operações
• ACID
– Atomicidade
– Consistência
– Isolamento
– Durabilidade
Exemplo
R$ 500
R$ 100,00
600,00 R$ 620,00
120,00
1
softblue.com.br
Exemplo
R$ 500 R$ 100
Conta Cliente
R$
R$100,00
600,00
500
2
softblue.com.br
SQL Completo
Stored Procedures e Triggers
Stored Procedures
Stored Procedures
Loja 2
SQL
Sistema Desktop
SQL
1
softblue.com.br
CALL Nome
EXECUTE Nome
Triggers (Gatilhos)
• Tipos
– BEFORE INSERT
– BEFORE UPDATE
– BEFORE DELETE
– AFTER INSERT
– AFTER UPDATE
– AFTER DELETE
– TEMPORAIS
Exemplo de Triggers
2
softblue.com.br
Gerenciando Triggers
• Criando um Trigger:
Agradecimentos