BANCO DE DADOS II
Professor: Marcus Sampaio
Monitor: Eduardo Santiago Moura
Keyword, clause e statement
2



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
SQL Statements
3
SELECT
Recupera dados da base
INSERT
UPDATE
DELETE
MERGE
Cria novas linhas, modifica linhas existentes e remove linhas de
tabelas da base de dados, respectivamente. Conhecidas como
data manipulation language (DML)
CREATE
ALTER
DROP
RENAME
TRUNCATE
Cria, modifica e remove estruturas das tabelas. Conhecidas como
data definition language (DDL)
COMMIT
ROLLBACK
SAVEPOINT
Manipula as modificações feitas pelas DML statements
GRANT
REVOKE
Concede ou remove direito de acesso a base de dados.
Conhecidas como data control language (DCL)
Select Clause
4
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
Expressões Aritméticas
5

* / + - : podem ser usados em qualquer cláusula
de um statement exceto na cláusula FROM, com a
respectiva precedência.
Usando ALIAS
6

Renomeia uma coluna, muito útil para cálculos.
Where Clause
7

A cláusula WHERE pode comparar valores em
colunas, valores literais, expressões aritméticas ou
funções.
Comparison Conditions
8
=
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
Comparison Conditions
9
Comparison Conditions
10


% : denota zero ou
mais caracteres
_ : denota um
caracter
Expressões Lógicas
11

AND, OR e NOT
Order By Clause
12

Ordena as linhas de maneira:
 ASC:
ascedentes (ordem default)
 DESC: ordem descendente
 Podem ser ordenados colunas que não estão no SELECT
Single-row functions
13
Single-row functions
14


Number functions:
DUAL: é uma tabela dummy que pode ser usada para ver
resultados de funções ou cálculos.
Single-row functions
15

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
Single-row functions
16


Date functions:
SYSDATE: é uma função que retorna a data e hora
corrente
Single-row functions
17

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
Single-row functions
18

Explícita
 TO_CHAR
com datas
Single-row functions
19


Date Format Model
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
Existem inúmeros outros formatos, favor consultar
material
Single-row functions
20

Explícita
 TO_CHAR
com números
Single-row functions
21

Number Format Model
Elemento
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
Single-row functions
22

Explícita
 TO_NUMBER
 TO_DATE
Single-row functions
23

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
Single-row functions
24

General functions:
Single-row functions
25

Conditional functions:
Single-row functions
26

Conditional functions:
Cartesian Products
27

É formado quando:
A
condição de join é omitida
 A condição de join é inválida
 Todas as linhas das tabelas “casam”
Join
28




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
Join
29

Regra geral:
Equijoin
30

Equijoin: quando a primary key de uma tabela é
exatamente igual a foreign key da outra. Também
chamado de simple join e inner join
Equijoin
31

Equijoin:
Table Aliases
32

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)
Nonequijoin
33

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
Nonequijoin
34

Nonequijoin:
Outerjoin
35

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
Outerjoin
36

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.
Outerjoin
37
Selfjoin
38

Selfjoin:

O nome do gerente de cada empregado?
Selfjoin
39

Selfjoin:

O nome do gerente de cada empregado?
Group Functions
40
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

_ = default
Group Functions
41

Avg e Sum para tipos numéricos

Max e Min para qualquer tipo de dados
Group Functions
42


Count (*) retorna o nº de linhas da tabela
Count (expr) retorna o nº de linhas com valores
não-nulos da expr
Group Functions
43

Group Functions ignoram valores nulos nas colunas,
para forçar sua inclusão pode-se utilizar NVL
Group by Clause
44



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
Group by Clause
45

Order by: por default as linhas tem ordenação
ascendente, mas podem ser modificados através da
cláusula Order by
Group by Clause
46

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
Group by Clause
47

Gropu by de múltiplas colunas
Having by Clause
48



Objetivo: Restringir grupos
Sintaxe:
Apenas os grupos que satisfazerem a condição são
retornados
Subquery
49



A subquery (inner query) é executada primeiro que a
query principal
O resultado da subquery pode ser usado na query
principal (outer query)
Sintaxe:
Subquery
50

Problema:
 Consulta
Principal: Quais empregados tem o salário maior
que o de Abel?

Consulta Interna: Qual é o salário de Abel?
Types of Subqueries
51


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
Single-row Subqueries
52

Operadores de comparação:
=
Igual
>
Maior
>=
Maior igual
<
Menor
<=
Menor igual
<>
Diferente
Single-row Subqueries
53
Having Clause with Subqueries
54


O servidor Oracle executa as subqueries primeiro
O servidor Oracle retorna o resultado para a
cláusula HAVING da consulta principal
Multiple-row Subqueries
55

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
Multiple-row Subqueries
56
Data Manipulation Language (DML)
57

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”
Insert Statement
58


Sintaxe:
Com essa sintaxe um único valor pode ser inserido
por vez
Insert Statement
59



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:
Update Statement
60


Sintaxe:
Com essa sintaxe uma ou mais linhas podem ser
inseridas por vez
Update Statement
61
Delete Statement
62

Sintaxe:

Exemplos:
Create Table Statement
63

Sintaxe:

Exemplo:
Data Types
64
Datetime Data Types
65


TIMESTAMP: é uma extensão do tipo Date
Armazena o ano, mês, dia, mais a hora, minuto e
segundo
Alter Table Statement
66

Usado:
 Adicionar
uma nova coluna
 Modificar uma coluna existente
 Definir o valor default de uma coluna
 Drop de uma coluna
Alter Table Statement
67
Drop Statement
68

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):
Constraints
69
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 Null
70

Garante que valores nulos não são permitidos
para a especificada coluna
Unique
71

Garante que cada valor em uma coluna ou
conjunto de colunas seja único
Primary Key e Check
72
Foreign Key
73
Foreign Key
74
Download

ObjectPL-SQL