BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

74
BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura

Transcript of BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Page 1: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

BANCO DE DADOS IIProfessor: Marcus SampaioMonitor: Eduardo Santiago Moura

Page 2: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: 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

Page 3: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 4: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 5: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 6: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Usando ALIAS

Renomeia uma coluna, muito útil para cálculos.

6

Page 7: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Where Clause

A cláusula WHERE pode comparar valores em colunas, valores literais, expressões aritméticas ou funç ões.

7

Page 8: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 9: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Comparison Conditions9

Page 10: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Comparison Conditions

% : denota zero ou mais caracteres

_ : denota um caracter

10

Page 11: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Expressões Lógicas

AND, OR e NOT

11

Page 12: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 13: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions13

Page 14: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Number functions:

DUAL: é uma tabela dummy que pode ser usada para ver resultados de funções ou cálculos.

14

Page 15: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 16: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Date functions:

SYSDATE: é uma função que retorna a data e hora corrente

16

Page 17: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 18: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Explícita

TO_CHAR com datas

18

Page 19: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 20: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Explícita TO_CHAR com números

20

Page 21: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 22: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Explícita TO_NUMBER

TO_DATE

22

Page 23: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 24: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

General functions:

24

Page 25: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Conditional functions:

25

Page 26: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row functions

Conditional functions:

26

Page 27: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Cartesian Products

É formado quando: A condição de join é omitida A condição de join é inválida Todas as linhas das tabelas “casam”

27

Page 28: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 29: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Join

Regra geral:

29

Page 30: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 31: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Equijoin

Equijoin:

31

Page 32: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 33: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 34: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Nonequijoin

Nonequijoin:

34

Page 35: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 36: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 37: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Outerjoin37

Page 38: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Selfjoin

Selfjoin: O nome do gerente de cada empregado?

38

Page 39: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Selfjoin

Selfjoin: O nome do gerente de cada empregado?

39

Page 40: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 41: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Group Functions

Avg e Sum para tipos numéricos

Max e Min para qualquer tipo de dados

41

Page 42: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 43: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Group Functions

Group Functions ignoram valores nulos nas colunas, para forçar sua inclusão pode-se utilizar NVL

43

Page 44: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 45: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 46: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 47: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Group by Clause

Gropu by de múltiplas colunas

47

Page 48: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Having by Clause

Objetivo: Restringir grupos Sintaxe:

Apenas os grupos que satisfazerem a condição são retornados

48

Page 49: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 50: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Subquery

Problema: Consulta Principal: Quais empregados tem o

salário maior que o de Abel? Consulta Interna: Qual é o salário de Abel?

50

Page 51: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 52: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row Subqueries

Operadores de comparação:= Igual

> Maior

>= Maior igual

< Menor

<= Menor igual

<> Diferente

52

Page 53: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Single-row Subqueries53

Page 54: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 55: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 56: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Multiple-row Subqueries56

Page 57: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 58: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Insert Statement

Sintaxe:

Com essa sintaxe um único valor pode ser inserido por vez

58

Page 59: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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

Page 60: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Update Statement

Sintaxe:

Com essa sintaxe uma ou mais linhas podem ser inseridas por vez

60

Page 61: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Update Statement61

Page 62: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Delete Statement62

Sintaxe:

Exemplos:

Page 63: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Create Table Statement63

Sintaxe:

Exemplo:

Page 64: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Data Types64

Page 65: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Datetime Data Types65

TIMESTAMP: é uma extensão do tipo Date Armazena o ano, mês, dia, mais a hora,

minuto e segundo

Page 66: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Alter Table Statement66

Usado: Adicionar uma nova coluna Modificar uma coluna existente Definir o valor default de uma coluna Drop de uma coluna

Page 67: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Alter Table Statement67

Page 68: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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):

Page 69: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

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:

Page 70: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Not Null70

Garante que valores nulos não são permitidos para a especificada coluna

Page 71: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Unique71

Garante que cada valor em uma coluna ou conjunto de colunas seja único

Page 72: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Primary Key e Check72

Page 73: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Foreign Key73

Page 74: BANCO DE DADOS II Professor: Marcus Sampaio Monitor: Eduardo Santiago Moura.

Foreign Key74