Post on 16-Apr-2015
transcript
BANCO DE DADOS IIProfessor: Marcus SampaioMonitor: Eduardo Santiago Moura
Keyword, clause e statement Keyword: faz referência a um elemento
SQL individual. Ex: SELECT, FROM.
Clause: é uma parte de um statement SQL. Ex: SELECT employee_id, last_name, ...
Statement: é uma combinação de duas ou mais clauses. Ex: SELECT * FROM employees
2
SQL Statements
SELECT Recupera dados da base
INSERTUPDATEDELETEMERGE
Cria novas linhas, modifica linhas existentes e remove linhas de tabelas da base de dados, respectivamente. Conhecidas como data manipulation language (DML)
CREATEALTERDROPRENAMETRUNCATE
Cria, modifica e remove estruturas das tabelas. Conhecidas como data definition language (DDL)
COMMITROLLBACKSAVEPOINT
Manipula as modificações feitas pelas DML statements
GRANTREVOKE
Concede ou remove direito de acesso a base de dados. Conhecidas como data control language (DCL)
3
Select Clause
SELECT É uma lista de uma ou mais colunas
* Seleciona todas as colunas
DISTINCT Elimina duplicatas
column | expression Seleciona o nome da coluna ou expressão
alias Renomeia as colunas selecionadas
FROM table Tabela contendo as colunas selecionadas
4
Expressões Aritméticas
* / + - : podem ser usados em qualquer cláusula de um statement exceto na cláusula FROM, com a respectiva precedência.
5
Usando ALIAS
Renomeia uma coluna, muito útil para cálculos.
6
Where Clause
A cláusula WHERE pode comparar valores em colunas, valores literais, expressões aritméticas ou funç ões.
7
Comparison Conditions
= Igual
> Maior
>= Maior igual
< Menor
<= Menor igual
<> Diferente
BETWEEN ... AND ... Entre dois valores (inclusive)
IN (lista) Comparação com qualquer valor da lista
LIKE Comparação com um padrão de caracter
IS NULL Verifica se o valor é null
8
Comparison Conditions9
Comparison Conditions
% : denota zero ou mais caracteres
_ : denota um caracter
10
Expressões Lógicas
AND, OR e NOT
11
Order By Clause
Ordena as linhas de maneira: ASC: ascedentes (ordem default) DESC: ordem descendente Podem ser ordenados colunas que não estão no
SELECT
12
Single-row functions13
Single-row functions
Number functions:
DUAL: é uma tabela dummy que pode ser usada para ver resultados de funções ou cálculos.
14
Single-row functions
Date functions:
MONTHS_BETWEEN Número de meses entre duas datas
ADD_MONTHS Adiciona meses a data
NEXT_DAY Próximo dia da data especificada
LAST_DAY Último dia da data especificada
ROUND Arredonda a data
TRUNC Trunca a data
15
Single-row functions
Date functions:
SYSDATE: é uma função que retorna a data e hora corrente
16
Single-row functions
Conversion functions: a conversão de tipos de dados pode ser feita de duas formas:
Conversão Implícita (feita automaticamente pelo Oracle)
Conversão Explícita Implícita
De Para
VARCHAR2 ou CHAR NUMBER
VARCHAR2 ou CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
17
Single-row functions
Explícita
TO_CHAR com datas
18
Single-row functions
Date Format Model
Existem inúmeros outros formatos, favor consultar material
YYYY Ano completo em números
YEAR Nome do ano falado
MM Valor do mês com 2 dígitos
MONTH Nome do mês completo
MON Abreviação do mês com 3 letras
DY Abreviação do dia da semana com 3 letras
DAY Nome do dia da semana completo
DD Dia do mês numérico
19
Single-row functions
Explícita TO_CHAR com números
20
Single-row functions
Number Format ModelElemento
Descrição Exemplo Resultado
9 Qtd de 9s indica o tamanho do número exibido
999999 1234
0 Exibe 0s iniciais 099999 001234
$ Exibe o $ inicial $999999 $1234
L Exibe o símbolo monetário local L999999 FF1234
. Coloca ponto na posição desejada 999999.99
1234.00
, Coloca vírgula na posição desejada 999,999 1,234
MI Menos na direita 9999999MI
1234-
PR Coloca parentizador 999999PR <1234>
EEEE Notação científica 99.999EEEE
1.234E+03
V Multiplica por 10 n vezes (n = num 9s depois do V)
9999V99 123400
B Exibe valores zero em branco, não 0 B9999.99 1234.00
21
Single-row functions
Explícita TO_NUMBER
TO_DATE
22
Single-row functions
General functions:
NVL (expr1, expr2) Converte um valor null para um valor atual
NVL2 (expr1, expr2, expr3) If expr1 é null, NVL2 retorna expressão expr2. If expr1 é null, retorna expr3.
NULLIF (expr1, expr2) Compara as duas expressões e retorna null if forem iguais ou expr1 se diferentes
COALESCE (expr1, ..., exprn) Retorna a primeira expressão not-null da lista
23
Single-row functions
General functions:
24
Single-row functions
Conditional functions:
25
Single-row functions
Conditional functions:
26
Cartesian Products
É formado quando: A condição de join é omitida A condição de join é inválida Todas as linhas das tabelas “casam”
27
Join
Simple Join:
Usualmente, na condição de join são usadas as colunas de chave primária e chave estrangeira
A condição de join é especificada na cláusula Where
Regra geral: para fazer join de n tabelas são necessárias no mínimo n-1 condições de join
28
Join
Regra geral:
29
Equijoin
Equijoin: quando a primary key de uma tabela é exatamente igual a foreign key da outra. Também chamado de simple join e inner join
30
Equijoin
Equijoin:
31
Table Aliases
Vantagens: Simplifica as consultas Aumenta performace (muitas vezes os nomes
da tabelas são grandes e usando alias, o SQL fica menor usando menos memória)
32
Nonequijoin
Nonequijoin: Quando não há colunas comuns nas tabelas
envolvidas em um relacionamento Consiste em um relacionamente obtido com um
operador que não é o de igualdade (=), como, por exemplo, o BETWEEN
33
Nonequijoin
Nonequijoin:
34
Outerjoin
Outerjoin: Quando deseja-se retornar linhas que não válidas
na condição do join Declarado pelo operador (+), colocado no lado
do join deficiente de informação
Para retornar inclusive linhas faltantes da tabela1
Para retornar inclusive linhas faltantes da tabela2
35
Outerjoin
Outerjoin: Restrições:
O operador só pode aparecer em 1 lado da condição do join
Na condição envolvendo o outerjoin não podem ser usado os operadores IN ou OR.
36
Outerjoin37
Selfjoin
Selfjoin: O nome do gerente de cada empregado?
38
Selfjoin
Selfjoin: O nome do gerente de cada empregado?
39
Group Functions
_ = default
AVG ( [DISTINCT | ALL] n ) Média do valor de n, ignorando valores nulos
COUNT ( {* | [DISTINCT | ALL] expr} )
Número de linhas, onde expr avalia alguma coisa diferente de null ( contando todas as linhas usando *, incluindo duplicatas e linhas com valores nulos)
MAX ( [DISTINCT | ALL] expr ) Valor máximo da expr, ignorando valores nulos
MIN ( [DISTINCT | ALL] expr ) Valor mínimo da expr, ignorando valores nulos
STDDEV ( [DISTINCT | ALL] x ) Desvio padrão de x, ignorando valores nulos
SUM ( [DISTINCT | ALL] n ) Soma dos valores de n, ignorando valores nulos
VARIANCE ( [DISTINCT | ALL] n )
Variância de n, ignoranodo valores nulos
40
Group Functions
Avg e Sum para tipos numéricos
Max e Min para qualquer tipo de dados
41
Group Functions
Count (*) retorna o nº de linhas da tabela
Count (expr) retorna o nº de linhas com valores não-nulos da expr
42
Group Functions
Group Functions ignoram valores nulos nas colunas, para forçar sua inclusão pode-se utilizar NVL
43
Group by Clause
Objetivo: Dividir linhas da tabela em grupos menores
Sintaxe:
Todas as colunas do SELECT que não estiverem em Group Functions, deve ser declaradas no Group by
44
Group by Clause
Order by: por default as linhas tem ordenação ascendente, mas podem ser modificados através da cláusula Order by
45
Group by Clause
Illegal Queries: ao utilizar uma mistura de campos simples (colunas) e funções de agregação é obrigatório incluir os campos simples na cláusula do group by
46
Group by Clause
Gropu by de múltiplas colunas
47
Having by Clause
Objetivo: Restringir grupos Sintaxe:
Apenas os grupos que satisfazerem a condição são retornados
48
Subquery
A subquery (inner query) é executada primeiro que a query principal
O resultado da subquery pode ser usado na query principal (outer query)
Sintaxe:
49
Subquery
Problema: Consulta Principal: Quais empregados tem o
salário maior que o de Abel? Consulta Interna: Qual é o salário de Abel?
50
Types of Subqueries
Single-row: consulta interna que retorna uma única linha do SELECT interno
Multiple-row: consulta interna que retorna mais de uma linha do SELECT interno
51
Single-row Subqueries
Operadores de comparação:= Igual
> Maior
>= Maior igual
< Menor
<= Menor igual
<> Diferente
52
Single-row Subqueries53
Having Clause with Subqueries
O servidor Oracle executa as subqueries primeiro
O servidor Oracle retorna o resultado para a cláusula HAVING da consulta principal
54
Multiple-row Subqueries
Operadores de comparação:IN Igual a qualquer menbro da lista
ANY Compara o valor com cada valor retornado da subquery
ALL Compara o valor todos os valores retornados da subquery
55
Multiple-row Subqueries56
Data Manipulation Language (DML)
Um statement DML é executado quando: Adiciona-se uma linhas em uma tabela Modifica-se linhas existentes de uma tabela Remove-se linhas existentes de uma tabela
Uma transação consiste de um coleção de statements DML que formam uma “unidade lógica de trabalho”
57
Insert Statement
Sintaxe:
Com essa sintaxe um único valor pode ser inserido por vez
58
Insert Statement
Método implícito: omissão de colunas
Método explícito: ao omitir as colunas, deve-se inserir NULL para colunas indesejadas
Copiando valores:
59
Update Statement
Sintaxe:
Com essa sintaxe uma ou mais linhas podem ser inseridas por vez
60
Update Statement61
Delete Statement62
Sintaxe:
Exemplos:
Create Table Statement63
Sintaxe:
Exemplo:
Data Types64
Datetime Data Types65
TIMESTAMP: é uma extensão do tipo Date Armazena o ano, mês, dia, mais a hora,
minuto e segundo
Alter Table Statement66
Usado: Adicionar uma nova coluna Modificar uma coluna existente Definir o valor default de uma coluna Drop de uma coluna
Alter Table Statement67
Drop Statement68
Atenção: Todos os dados e estruturas da tabela são
deletados Qualquer transação pendente é
“commitdada” Todos os índices são deletados
Comentários (tabela ou colunas):
Constraints69
NOT NULL Especifica que a coluna não pode conter valores nulos
UNIQUE Especifica que a coluna ou um conjunto de colunas contenham valores únicos para todas as linhas da tabela
PRIMARY KEY Identifica únicamente cada linha da tabela
FOREIGN KEY Estabelece uma chave de relacionamento entre colunas da referente tabela e da tabela referenciada
CHECK Especifica que a condição deve ser verdadeira
Definindo constraints:
Not Null70
Garante que valores nulos não são permitidos para a especificada coluna
Unique71
Garante que cada valor em uma coluna ou conjunto de colunas seja único
Primary Key e Check72
Foreign Key73
Foreign Key74