Escolar Documentos
Profissional Documentos
Cultura Documentos
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Introdução
do
Treinamento
Objetivo
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Material
http://education.oracle.com/pls/web_prod-plq-
Link oficial: dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-051
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
1Z0-051 x Aprendendo SQL
Reporting Aggregated Data Using the Group Functions 4. Utilizando agrupamentos e funções de grupo
Displaying Data from Multiple Tables 5. Recuperando dados de múltiplas tabelas e subqueries
Using DDL Statements to Create and Manage Tables 8. Utilizando instruções DDL
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Exame 1Z0-061
http://education.oracle.com/pls/web_prod-plq-
Link oficial: dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-061
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
1Z0-061 x Aprendendo SQL
Retrieving Data Using the SQL SELECT Statement 2. Recuperando dados com a instrução SELECT
Reporting Aggregated Data Using the Group Functions 4. Utilizando agrupamentos e funções de grupo
Displaying Data from Multiple Tables Using Joins 5. Recuperando dados de múltiplas tabelas e subqueries
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 1
Introdução
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Banco de Dados Relacional
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Banco de Dados Relacional
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Modelo Entidade-Relacionamento
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
Banco de Dados Objeto Relacional
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
O que é SQL?
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
O que é SQL?
— SQL-99:
Versão que teve a implementação de mais recursos novos significativos,
entre eles: expressões regulares, queries recursivas, triggers, LOB;
— SQL-2003:
Inclusão de suporte básico ao padrão XML, instrução MERGE, colunas
com valores auto-incrementais etc.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
Padrão ANSI x dialetos
• Todo SGBDR possui comandos SQL específicos que não
pertencem ao padrão ANSI. Estes comandos são extensões
conhecidas como dialetos;
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
Padrão ANSI x dialetos
www.fabioprado.net
janeiro de 15 Aprendendo SQL 12
© 2014 Fábio Prado. Todos os direitos reservados.
Grupos de instruções SQL
— Transaction Control:
COMMIT, ROLLBACK e SAVEPOINT.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.
Grupos de instruções SQL
www.fabioprado.net
janeiro de 15 Aprendendo SQL 14
© 2014 Fábio Prado. Todos os direitos reservados.
Capítulo 1
Parte Final
Novos recursos do Oracle 12c
• Melhorias em instruções SQL, tais como:
— Queries do tipo Top N;
— Funções PL/SQL na cláusula WITH;
— Execução concorrente de UNION e UNION ALL;
— Parallel DML em colunas LOB SecureFiles;
— DDL online ao apagar, por exemplo um índice ou constraint;
— Estatísticas dinâmicas, otimização de query adaptável, novos tipos de
histogramas;
— Truncate Table Cascade.
• Arquitetura Multitenant;
www.fabioprado.net
janeiro de 15 Aprendendo SQL 17
© 2014 Fábio Prado. Todos os direitos reservados.
Schema HR
www.fabioprado.net
janeiro de 15 Aprendendo SQL 18
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 2
Recuperando dados
com a instrução SELECT
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Projeção X Seleção
— Seleção:
Linhas de uma ou mais tabelas a serem recuperadas;
SELEÇÃO = Filtro de linhas.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Sintaxe básica
Observações:
- Após a cláusula SELECT, deve ser especificada a lista de colunas a ser recuperada;
- Após a cláusula FROM, deve(m) ser especificada(s) a(s) tabela(s).
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Características gerais
Operador Descrição
+ Adição
- Subtração
* Multiplicação
/ Divisão
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Valores nulos
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
Operadores e literais
• Use cuidadosamente os operadores de precedência ()
para retornar o resultado esperado;
• Utilize os caracteres || para concatenar valores ou
colunas (somente string), retornando-os como se fosse
uma única coluna;
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
Recursos diversos
www.fabioprado.net
janeiro de 15 Aprendendo SQL 14
© 2014 Fábio Prado. Todos os direitos reservados.
Operadores de comparação
Operador Descrição
= Igualdade
> Maior
>= Maior ou igual
< Menor
<= Menor ou igual
<> ou != Diferente
BETWEEN ...
Entre (inclusive) 2 valores
AND ...
IN Lista de valores
LIKE Combinação de valores incluindo coringas (% ou _)
IS NULL Valor nulo
www.fabioprado.net
janeiro de 15 Aprendendo SQL 15
© 2014 Fábio Prado. Todos os direitos reservados.
Operadores lógicos
Operador Descrição
AND Retorna TRUE se ambas as condições são verdadeiras
OR Retorna TRUE se qualquer condição for verdadeira
NOT Retorma TRUE se a condição for falsa
www.fabioprado.net
janeiro de 15 Aprendendo SQL 16
© 2014 Fábio Prado. Todos os direitos reservados.
Regras de precedência
Prioridade Operador
1 Operadores aritméticos
2 Operador de concatenação
3 Condições de comparação
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Desigualdade
7 Condição lógica NOT
8 Condição lógica AND
9 Condição lógica OR
www.fabioprado.net
janeiro de 15 Aprendendo SQL 17
© 2014 Fábio Prado. Todos os direitos reservados.
Ordenando dados
Ordenando dados
• É possível ordenar os dados retornados utilizando
a cláusula ORDER BY, no final da instrução
SELECT;
• A ordenação pode ser realizada em modo
crescente (padrão) ou decrescente, através dos
complementos ASC ou DESC;
• A ordenação pode ser realizada através dos
seguintes itens:
— Nome da(s) coluna(s);
— Apelido da(s) coluna(s);
— Ordem da(s) coluna(s);
www.fabioprado.net
janeiro de 15 Aprendendo SQL 19
© 2014 Fábio Prado. Todos os direitos reservados.
Ordenando dados
www.fabioprado.net
janeiro de 15 Aprendendo SQL 20
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 3
Utilizando funções
em instruções SQL
Introdução
www.fabioprado.net
janeiro de 17 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
• Características gerais:
— Podem receber 0 ou N argumentos (valor de uma coluna ou
expressão);
— Retornam obrigatóriamente um valor;
— Podem transformar tipos de dados;
— Podem ser aninhadas.
www.fabioprado.net
janeiro de 17 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
www.fabioprado.net
janeiro de 17 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Tipos de funções
— Multiple-row functions:
Funções que retornam um valor para N linhas;
São utilizadas com agrupamentos.
www.fabioprado.net
janeiro de 17 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Tipos de funções
www.fabioprado.net
janeiro de 17 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
Single-row functions
— Números:
ROUND, TRUNC e MOD;
— Datas:
SYSDATE, MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND
e TRUNC;
www.fabioprado.net
janeiro de 17 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Single-row functions
— Conversões:
TO_CHAR, TO_NUMBER e TO_DATE;
— Gerais:
NVL, NVL2, NULLIF, COALESCE e DECODE.
www.fabioprado.net
janeiro de 17 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
Funções aninhadas,
trabalhando com datas,
conversões e
expressões condicionais
Funções aninhadas
www.fabioprado.net
janeiro de 17 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
Trabalhando com datas
www.fabioprado.net
janeiro de 17 Aprendendo SQL 12
© 2014 Fábio Prado. Todos os direitos reservados.
Trabalhando com datas
www.fabioprado.net
janeiro de 17 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.
Conversões explícitas X implícitas
www.fabioprado.net
janeiro de 17 Aprendendo SQL 14
© 2014 Fábio Prado. Todos os direitos reservados.
Conversões explícitas X implícitas
www.fabioprado.net
janeiro de 17 Aprendendo SQL 16
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 4
Utilizando agrupamentos
e
funções de grupo
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral de Agrupamentos
SELECT [coluna, …]
funcao_grupo(coluna), …
FROM tabela
[WHERE condicao]
[GROUP BY coluna, …]
[ORDER BY coluna, …]
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Funções de grupo
• As funções de grupo mais utilizadas são:
— COUNT: retorna o total de linhas;
— SUM: retorna a soma de valores;
— AVG: retorna a média de valores;
— MAX: retorna o valor máximo;
Obs.: Para compreender melhor desvio padrão e variância é necessário ter conhecimentos prévios de
estatística (ver link http://educacao.uol.com.br/matematica/media-desvio-padrao-e-variancia-nocoes-de-estatistica.jhtm)
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Considerações e
Funções Analíticas
Considerações gerais
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Funções analíticas
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 5
Recuperando dados
de múltiplas tabelas e
subqueries
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
— Self-joins
— Outer joins
— Produtos cartesianos
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Sintaxe
SELECT tabela1.coluna,
tabela2.coluna FROM
tabela1
[NATURAL JOIN tabela2] |
[JOIN tabela2 USING (coluna)] |
[JOIN tabela2
ON (tabela1.coluna = tabela2.coluna)] |
[LEFT | RIGHT | FULL OUTER JOIN tabela2]
ON (tabela1.coluna = tabela2.coluna)] |
[CROSS JOIN tabela2]
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Considerações gerais
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Equi-join
• Recupera somente as linhas que possuem valores
iguais na(s) coluna(s) de ligação;
— USING:
Ligação automática através de colunas com somente mesmo nome;
— ON:
Ligação efetuada através de colunas especificadas (não precisa ter mesmo
nome e nem mesmo tipo de dado).
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
Self-join
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Theta join, outer join e
produto cartesiano
Theta join
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
Outer join
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
Outer join
www.fabioprado.net
janeiro de 15 Aprendendo SQL 12
© 2014 Fábio Prado. Todos os direitos reservados.
Produto cartesiano
— Ligação inválida.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.
Considerações finais
— Semi-joins:
Retorna somente linhas da 1º tabela que combinam com linhas de
uma 2ª tabela ou conjunto;
Pode ser implementado através das cláusulas IN ou EXISTS.
— Anti-joins:
Retorna somente linhas da 1º tabela NÃO que combinam com linhas
de uma 2ª tabela ou conjunto;
Pode ser implementado através das cláusulas NOT IN ou NOT
EXISTS.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 14
© 2014 Fábio Prado. Todos os direitos reservados.
Utilizando subqueries
Visão geral
www.fabioprado.net
janeiro de 15 Aprendendo SQL 16
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
www.fabioprado.net
janeiro de 15 Aprendendo SQL 17
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
• Operadores single-row:
— Igualdade: =
— Maior que: >
— Maior ou igual que: >=
— Menor que: <
— Menor ou igual que: <=
— Diferente (não igual que): <> ou !=
• Operadores multiple-row:
— Igual a um membro da lista: IN
— Compara um valor a cada valor da lista: ANY
— Compara um valor a todos os valores da lista: ALL
www.fabioprado.net
janeiro de 15 Aprendendo SQL 18
© 2014 Fábio Prado. Todos os direitos reservados.
Subqueries escalares
www.fabioprado.net
janeiro de 15 Aprendendo SQL 19
© 2014 Fábio Prado. Todos os direitos reservados.
Subqueries correlacionadas
www.fabioprado.net
janeiro de 15 Aprendendo SQL 20
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 6
Utilizando operadores
de conjunto
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
UNION ALL
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
UNION
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
MINUS
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Ordenação
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 7
Atualizando dados
Introdução
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
INSERT
• Sintaxe:
INSERT INTO tabela [(coluna [,coluna …] ) ] -- lista de colunas
VALUES (valor [,valor …] );
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
INSERT Multitable
• Principais características:
— Não funciona através de dblinks;
— Sequências não podem ser usadas;
— Não pode exceder 999 colunas na(s) cláusula(s) INTO.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
UPDATE
• Sintaxe:
UPDATE tabela
SET coluna = valor [, coluna = valor, …]
[WHERE condição];
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
UPDATE
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
MERGE
• Utilize a instrução MERGE para realizar
processamento UPSERTs: INSERT ou UPDATE;
• Sintaxe:
MERGE INTO tabela_destino apelido_origem
USING (tabela_origem | visão | subquery) apelido_destino
ON (condição_de_ligação)
WHEN MATCHED THEN
UPDATE SET
apelido_destino.col1 = apelido_origem.col1 …
WHEN NOT MATCHED THEN
INSERT (lista_colunas_tabela_destino)
VALUES (lista_colunas_tabela_origem)
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
MERGE
• Substitui múltiplas instruções SQL (SELECT e INSERT +
SELECT e UPDATE) por uma única instrução SQL, que
é mais enxuta e mais rápida;
• Características do MERGE:
— Pode combinar múltiplas operações: INSERT, UPDATE e DELETE;
— É uma instrução determinística, ou seja, não permite atualizar a
mesma linha de uma tabela múltiplas vezes na mesma instrução;
— Na maior parte dos casos é mais flexível e eficiente que as soluções
tradicionais de “UPSERT”.
— Cuidado ao utilizar sequences! Mesmo se uma condição (Ex.: NOT
MATCHED) não for alcançada, o número sequencial dela será perdido!
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
DELETE, TRUNCATE e
SELECT FOR UPDATE
DELETE
• Sintaxe:
DELETE [FROM] tabela
[WHERE condição];
www.fabioprado.net
janeiro de 15 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.
DELETE
• Podemos apagar 1 ou N linhas por vez;
www.fabioprado.net
janeiro de 15 Aprendendo SQL 14
© 2014 Fábio Prado. Todos os direitos reservados.
TRUNCATE
www.fabioprado.net
janeiro de 15 Aprendendo SQL 15
© 2014 Fábio Prado. Todos os direitos reservados.
SELECT FOR UPDATE
www.fabioprado.net
janeiro de 15 Aprendendo SQL 16
© 2014 Fábio Prado. Todos os direitos reservados.
Controle transacional
Controle transacional
www.fabioprado.net
janeiro de 15 Aprendendo SQL 18
© 2014 Fábio Prado. Todos os direitos reservados.
Controle transacional
• Uma transação é finalizada após uma das seguintes situações:
— Ao executar um comando COMMIT ou ROLLBACK
COMMIT efetiva a transação;
ROLLBACK desfaz a transação
www.fabioprado.net
janeiro de 15 Aprendendo SQL 19
© 2014 Fábio Prado. Todos os direitos reservados.
Controle transacional
www.fabioprado.net
janeiro de 15 Aprendendo SQL 20
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 8
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
• Ao executar instruções DDL as transações existentes são
commitadas automaticamente. TRUNCATE é uma instrução
DDL;
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Tabelas
Criando Tabelas
• Sintaxe:
CREATE TABLE [schema].tabela
(coluna tipo_dado [DEFAULT expressão] [, …]);
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
Principais tipos de dados
Tipo de dado Descrição
VARCHAR2 Caracteres de tamanho variável com tamanho até 4000 (até 11G) ou 32767 (somente
(tamanho) 12c).
CHAR (tamanho) Caracteres de tamanho fixo com tamanho até 2000. Tamanho não utilizado é
preenchido com espaços em branco.
NUMBER (p, s) Números de tamanho variável com até 38 dígitos de precisão, onde p representa a
precisão (tamanho total) e s a escala (qtde. de decimais). P e S são opcionais.
LONG Caracteres de tamanho variável até 2 GB. Não utilizar mais, pois foi substituído
pelo CLOB. Oracle permite somente 1 coluna deste tipo por tabela.
Referência: (http://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm)
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Constraints
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
Constraints
• Considerações gerais:
— Podem ser nomeadas explicitamente ou Oracle gera
implicitamente um nome contendo SYS_ + string aleatória;
— Podem ser criadas junto com a tabela ou depois de sua criação;
— Podem ser criadas no nível de coluna ou da tabela.
• Sintaxe:
CREATE TABLE [schema].tabela
(coluna tipo_dado [DEFAULT expressão]
[coluna_constraint],
…
[tabela_constraint] [,…]);
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
Constraints
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
Alterando tabelas
— Adicionar/modificar/remover/renomear colunas;
— Adicionar/remover constraints;
— Adicionar colunas invisíveis (somente 12c);
— Renomear a tabela.
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 12
© 2014 Fábio Prado. Todos os direitos reservados.
Apagando tabelas
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.
Visões
Visões
— Complexa:
Acessa 1 ou mais tabelas;
Pode conter funções e agrupamentos de dados;
Nem sempre permite atualizações. Uma técnica muito pouco utilizada (não
recomendada), é utilizar triggers INSTEAD OF para permitir atualizações em
visões complexas.
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 15
© 2014 Fábio Prado. Todos os direitos reservados.
Visões
• Vantagens:
— Encapsulamento de dados;
— Restringe acesso a dados não autorizados;
— Facilita o gerenciamento de acesso aos dados;
— Permite simplificar a escrita de queries complexas.
• Sintaxe:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW nome
[(alias [, alias] …)]
AS
subquery
[ WITH CHECK OPTION [CONSTRAINT constraint] ]
[ WITH READ ONLY [CONSTRAINT constraint] ];
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 16
© 2014 Fábio Prado. Todos os direitos reservados.
Visões
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 17
© 2014 Fábio Prado. Todos os direitos reservados.
Sequências
Sequências
• Uma sequência é um objeto que permite gerar
números únicos que normalmente são utilizados como
valores de PKs;
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 19
© 2014 Fábio Prado. Todos os direitos reservados.
Sequências
• Sintaxe:
CREATE SEQUENCE nome_sequencia
[INCREMENT BY n]
[START WITH n]
[ {MAXVALUE n | NOMAXVALUE} ]
[ {MINVALUE n | NOMINVALUE} ]
[ {CYCLE | NOCYCLE} ]
[ {CACHE n | NOCACHE} ];
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 20
© 2014 Fábio Prado. Todos os direitos reservados.
Sequências
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 21
© 2014 Fábio Prado. Todos os direitos reservados.
Sequências
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 22
© 2014 Fábio Prado. Todos os direitos reservados.
Sequências
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 23
© 2014 Fábio Prado. Todos os direitos reservados.
ÍNDICES
Índices
O índice de um livro
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 25
© 2014 Fábio Prado. Todos os direitos reservados.
Índices
— Bitmap:
Utilizado para otimizar baixa cardinalidade.
— Function Based:
Utilizado para otimizar consultas que utilizam funções.
— Domain Indexes:
Índices mais complexos para atender situações especiais, tais
como: grandes pesquisas textuais ou pesquisas de dados
geográficos.
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 26
© 2014 Fábio Prado. Todos os direitos reservados.
Índices
• Índices são objetos que servem para otimizar o acesso
aos dados de uma tabela;
• A indexação é feita no nível de coluna(s) e sua
manutenção é realizada automaticamente pelo
Oracle Database;
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 27
© 2014 Fábio Prado. Todos os direitos reservados.
Índices
www.fabioprado.net
fevereiro de 15 Aprendendo SQL 28
© 2014 Fábio Prado. Todos os direitos reservados.
SINÔNIMOS
Sinônimos
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 9
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Visão geral
—Privilégios de sistema;
—Privilégios de objetos;
—Roles.
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Privilégios de sistema
• Permitem realizar determinadas ações dentro do
Banco de Dados, tais como: criar, alterar e apagar
usuários e objetos;
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Privilégios de objeto
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Roles e consultas de
privilégios
Roles
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Roles
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
Roles
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
Consultando privilégios
Visão do DD Descrição
ROLE_SYS_PRIVS Privilégios de sistema concedidos às roles
ROLE_TAB_PRIVS Privilégios de tabelas concedidos às roles
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Capítulo 10
Consultando visões do
Dicionário de Dados
Visão geral
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
O que é o Dicionário de Dados?
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Visões do DD
Prefixo Descrição
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Consultando as visões do DD
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Adicionando comentários
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
FIM
Aprendendo SQL
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Final
Dicas finais
• Aqueles que desejam aprender mais sobre SQL,
recomendo a leitura dos seguintes itens:
— Guia Oracle ® Database SQL Language Reference 11g Release 2 (11.2) E41084-02
— Guia Oracle® Database SQL Language Reference 12c Release 1 (12.1) E17209-14
— Artigos sobre SQL e SQL/Tuning do Blog FABIOPRADO.NET
www.fabioprado.net
janeiro de 15 Aprendendo SQL 3
© 2014 Fábio Prado. Todos os direitos reservados.
Livros indicados
www.fabioprado.net
janeiro de 15 Aprendendo SQL 4
© 2014 Fábio Prado. Todos os direitos reservados.
Dump X Simulado
www.fabioprado.net
janeiro de 15 Aprendendo SQL 5
© 2014 Fábio Prado. Todos os direitos reservados.
Dump X Simulado
www.fabioprado.net
janeiro de 15 Aprendendo SQL 6
© 2014 Fábio Prado. Todos os direitos reservados.
Dump X Simulado
www.fabioprado.net
janeiro de 15 Aprendendo SQL 7
© 2014 Fábio Prado. Todos os direitos reservados.
Blog
Acompanhe os artigos do blog FABIOPRADO.NET em:
— http://www.fabioprado.net
www.fabioprado.net
janeiro de 15 Aprendendo SQL 8
© 2014 Fábio Prado. Todos os direitos reservados.
Facebook
— Oportunidades de emprego.
http://www.facebook.com/DBAFabioPrado
www.fabioprado.net
janeiro de 15 Aprendendo SQL 9
© 2014 Fábio Prado. Todos os direitos reservados.
Twitter
— Oportunidades de emprego.
http://twitter.com/dbafabioprado
www.fabioprado.net
janeiro de 15 Aprendendo SQL 10
© 2014 Fábio Prado. Todos os direitos reservados.
YouTube
Inscreva-se no canal do YouTube do DBA/Instrutor Fábio
Prado para ver dicas gerais sobre Bancos de Dados, TI e
carreira:
https://www.youtube.com/user/fbifabio10
www.fabioprado.net
janeiro de 15 Aprendendo SQL 11
© 2014 Fábio Prado. Todos os direitos reservados.
LinkedIn
Se você gostou do treinamento, POR FAVOR, deixe uma recomendação no perfil
do Fábio Prado no LinkedIn:
www.fabioprado.net
janeiro de 15 Aprendendo SQL 12
© 2014 Fábio Prado. Todos os direitos reservados.
Referências
- Blog do DBA/Instrutor FABIOPRADO
- Oracle Certification
www.fabioprado.net
janeiro de 15 Aprendendo SQL 13
© 2014 Fábio Prado. Todos os direitos reservados.