Bando de Dados
    Relacional
                        RDBMS (Relational Database
                          Management System)


Treinar Informática : Oracle                         3/6/2013   1
O que é?

     Conceito abstrato que define maneiras de
armazenar, manipular e recuperar dados estruturados
  unicamente na forma de tabelas, construindo um
                 bando de dados.




Treinar Informática : Oracle                  3/6/2013   2
Visão Padrão




Treinar Informática : Oracle            3/6/2013   3
Integridade Referencial




Treinar Informática : Oracle   3/6/2013   4
Constraints


                                                           Not
                                      Manter a
   Definições de                                    Null, Unique, Prim
                                  integridade dos
      regras.                                        ary Key, Foreign
                                       dados.
                                                       Key e Check.




Treinar Informática : Oracle                                 3/6/2013   5
SQL
• Linguagem de pesquisa declarativa para banco
  de dados relacional.
• Características inspiradas na álgebra relacional.
• Padrão de banco de dados.
• Simplicidade e facilidade de uso.
• Uma consulta SQL especifica a forma do resultado
  e não o caminho para chegar a ele.
• Pode ser migrado de plataforma para plataforma
  sem mudanças estruturais principais.



 Treinar Informática : Oracle                 3/6/2013   6
SQL
• Consulta a dados
• Inserção, atualização e deleção das linhas de uma
  tabela
• Criação, substituição, alteração e eliminação de
  objetos
• Controle de acesso ao banco de dados e seus
  objetos
• Garantia de consistência e integridade do banco
  de dados.



 Treinar Informática : Oracle                 3/6/2013   7
Palavras Chaves SQL
•     DML – Linguagem de Manipulação de Dados
•     DDL – Linguagem de Definição de Dados
•     DCL – Linguagem de Controle de Dados
•     DTL – Linguagem de Transação de Dados
•     DQL – Linguagem de Consulta de Dados




    Treinar Informática : Oracle                3/6/2013   8
DDL
• Definição de novas tabelas e elementos
  associados.
• Os comandos básicos são:
• CREATE
• DROP




Treinar Informática : Oracle               3/6/2013   9
Tipos de Colunas
• Quando se cria uma tabela é necessário
  especificar o tipo de dados das colunas e a sua
  dimensão. Esta determina o comprimento máximo
  que podem ter os valores nela armazenados.

• VARCHAR2 (n)
• Armazena uma cadeia de caracteres de
  comprimento variável. O valor máximo de n são
  4000 bytes. O Oracle só guarda o que o utilizador
  introduzir não preenchendo o que falta para o
  limite n. Se usarmos BYTE n traduz o número de
  bytes;

 Footer Text                                    3/6/2013   10
Tipos de Colunas
• CHAR(n)
• Caracteres de comprimento fixo n. O valor por
  omissão é 1 sendo o valor máximo 2000. A base de
  dados ocupa sempre n caracteres pois preenche o
  que falta com espaços em branco;
• NUMBER(n,d)
• Número com n digitos sendo d casas décimais (à
  direita da virgula);




Footer Text                                 3/6/2013   11
Tipos de Colunas
• DATE
• Data desde 1 Jan de 4712 AC até 31 de Dez de
  9999 DC. Também é armazenada a hora, minuto e
  segundo. O calendário interno da base de dados
  tem em conta as alterações de calendário
  impostas ao longo do tempo, por exemplo a
  passagem do calendário Juliano para Gregoriano
  em 1582-10-05, onde foram eliminados 10 dias;




Footer Text                                3/6/2013   12
Tipos de Colunas
• VARCHAR2 surgiu na versão 7 para substituir VARCHAR
• Se criar uma coluna com o tipo VARCHAR o SGBD
  converte em VARCHAR2
• Quando insere valores do tipo VARCHAR2 o ORACLE
  não preenche espaços em branco no fim. Isto significa
  que JOSE e JOSE§§§ serão strings diferentes. Se os
  valores fossem do tipo CHAR o ORACLE acrescentava
  espaços no fim automaticamente;
• Quando um valor a introduzir numa coluna excede a
  sua dimensão a base de dados emite uma mensagem
  de erro;



 Footer Text                                      3/6/2013   13
DML
• Realizado para realizar inclusões, consultas,
  alterações e exclusões de dados presentes em
  registros.
• Pode ser executado em diversos registros de
  diversas tabelas ao mesmo tempo.
• Os comandos são:
• INSERT
• SELECT
• UPDATE
• DELETE


 Treinar Informática : Oracle                 3/6/2013   14
DCL
• Controla os aspectos de autorização de dados e
  licenças de usuários para controlar quem tem
  acesso para ver ou manipular dados dentro do
  banco de dados.
• Os comandos são :
• GRANT
• REVOKE




Treinar Informática : Oracle                 3/6/2013   15
DTL
• Próprio nome ja diz: controle de transação de
  dados.
• Os comandos são:
• BEGIN WORK (ou START
  TRANSACTION, dependendo do dialeto SQL)
• COMMIT
• ROLLBACK




 Treinar Informática : Oracle                     3/6/2013   16
DQL
•     É a mais utilizada
•     Possui apenas um comando : SELECT
•     Esse comando possui várias cláusulas:
•     FROM
•     WHERE
•     GROUP BY
•     HAVING
•     ORDER BY
•     DISTINCT


    Treinar Informática : Oracle              3/6/2013   17
DQL
•     Operadores lógicos:
•     AND
•     OR
•     NOT

•     Operadores Relacionais:
•     <
•     >
•     <=
•     >=

    Treinar Informática : Oracle         3/6/2013   18
DQL
•     Operadores Relacionais:
•     =
•     <>
•     BETWEEN
•     LIKE
•     IN

• Funções de Agregação:
• AVG
• COUNT

    Treinar Informática : Oracle         3/6/2013   19
DQL
•     Funções de Agregação:
•     SUM
•     MAX
•     MIN




    Treinar Informática : Oracle         3/6/2013   20
DBA (Administrador de
        Banco de Dados)
•     Avaliar o hardware do servidor de banco de dados
•     Instalar o Oracle
•     Planejar, criar e abrir banco de dados
•     Backup
•     Controlar usuários
•     Design
•     Recuperação após falhas
•     Monitorar




    Treinar Informática : Oracle                 3/6/2013   21
Arquitetura do Banco de
             Dados
•     Arquivos de Controle
•     Arquivos de dados
•     Arquivos de redo log on-line
•     Arquivo de parâmetros
•     Arquivo de senha
•     Arquivo de log arquivados




    Treinar Informática : Oracle     3/6/2013   22
Banco de dados objeto-
     relacional (BDOR)
• A maior parte dos sistemas gerenciadores de
  bancos de dados (SGBDs) utilizados é baseada no
  modelo relacional. No entanto, SGBDs baseados
  em outros modelos têm surgido devido à demanda
  de novas aplicações. Muitas aplicações,
  impulsionadas pela WEB, requererem técnicas de
  acesso que melhorem o desempenho e estruturas
  de dados muito mais complexas que as tabelas
  relacionais, com diversos tipos adicionais, como
  imagem e vídeo, fundamentados na tecnologia de
  orientação a objetos.


Footer Text                                  3/6/2013   23
Banco de dados objeto-
      relacional (BDOR)
• Sistema de gerenciamento de banco de dados
  semelhante a um banco de dados relacional,
  porém com um modelo de banco de dados
  orientado a objetos: objetos, classes e herança são
  suportados diretamente nos esquemas de banco
  de dados e na linguagem de consulta.
• Teve sua origem na combinação de idéias dos
  modelos de dados tradicionais e de linguagens de
  programação orientada a objetos.




 Treinar Informática : Oracle                   3/6/2013   24
Banco de dados objeto-
      relacional (BDOR)
• A principal estrutura do modelo objeto-relacional
  são as tabelas, entretanto, com muito mais recursos
  do que as tabelas puramente relacionais. Entre
  esses recursos podemos destacar:
• definição de tipos pelo usuário;
• registros e vetores;
• métodos e funções;
• referências, herança e polimorfismo.
• São acrescentadas também estruturas a
  linguagens de consulta relacionais, como SQL, para
  tratar os tipos de dados acrescentados.

 Footer Text                                   3/6/2013   25
Banco de dados objeto-
      relacional (BDOR)
• O objetivo é preservar os fundamentos relacionais,
  em particular o acesso declaratório ao dado,
  acrescentando novas funcionalidades.
• Para utilizar os recursos de orientação a objetos a
  Oracle, a partir da versão 8, implementou diversos
  conceitos que definem um modelo objeto-
  relacional tais como: tipo objeto, tabela de
  objetos, etc.




 Footer Text                                    3/6/2013   26
Banco de dados objeto-
      relacional (BDOR)
• Em que são utilizados:
• Objetos complexos – são formados por construtores
  (conjunto, listas, tuplas, registros, coleções e arrays)
  aplicados a objetos simples (inteiros, booleans,
  strings)
• Também podemos utilizar estes tipos de dados
  estruturados onde a consulta ao banco de dados
  precisa ser mais complexa, pois ao invés de acesso
  a tabela e registros, é necessário o acesso a listas,
  tuplas, arrays entre outros.


 Treinar Informática : Oracle                       3/6/2013   27
Banco de dados objeto-
         relacional (BDOR)
•     Exemplo de aplicações complexas:
•     Projetos de engenharia e arquitetura
•     Experiências científicas
•     Telecomunicações
•     Sistemas de informações geográficas
•     Multimídia




    Treinar Informática : Oracle             3/6/2013   28
Banco de dados objeto-
     relacional (BDOR)
• Características das aplicações complexas:
• Transações de duração mais longa
• Novos tipos de dados para armazenar imagens ou
  grandes itens de texto
• Necessidade de definir operações específicas de
  de aplicações não-padronizadas.




Treinar Informática : Oracle                 3/6/2013   29
Banco de dados objeto-
      relacional (BDOR)
• Características:
• Cada objeto possui um identificador de objeto ou
  OID (object identifer), que o torna único, não usa a
  linguagem SQL, por isso não há querys, você busca
  seus objetos através de metodologias predefinidas.
  Essas metodologias são chamadas de Native
  Query´s.
• Na diferenciação do modelo relacional e
  orientado a objeto, ficaria da seguinte maneira:




 Treinar Informática : Oracle                   3/6/2013   30
Banco de dados objeto-
     relacional (BDOR)




Treinar Informática : Oracle   3/6/2013   31
Banco de dados objeto-
      relacional (BDOR)
• A forma de acesso aos dados é remodelada
  porque os SGDBs orientados a objetos sugerem
  novos tipos de dados como sequência de bits,
  ponteiros, linhas, números complexos e elementos
  de dados do tipo array.
• Para acessar uma array, um modo especial de
  consulta teria que ser construído por exemplo:




 Treinar Informática : Oracle                 3/6/2013   32
Banco de dados objeto-
     relacional (BDOR)
• A consulta realizada retorna o nome dos carros
  vendidos no mês de fevereiro, representado pela
  sentença (2) e com quantidade acima de 200
  unidades; o mês de fevereiro faz parte de uma
  array de 12 elementos, representando os meses.




Treinar Informática : Oracle                  3/6/2013   33
Banco de dados objeto-
      relacional (BDOR)
• Oracle 11g – Um SGBD Objeto Relacional:
• Mistura banco de dados relacional com conceitos
  de orientação a objetos.
• Usa SQL no sistema Objeto Relacional.
• Existe no Oracle o Object Type que um tipo
  definido pelo usuário na qual equivale ao de classe
  em POO (Programação Orientada a Objetos) .
• O Object Type captura tanto a estrutura como o
  comportamento de um objeto. A sintaxe segue o
  exemplo:


 Treinar Informática : Oracle                  3/6/2013   34
Banco de dados objeto-
     relacional (BDOR)




Treinar Informática : Oracle   3/6/2013   35
Banco de dados objeto-
         relacional (BDOR)
• Vantagens:
• Capacidade de Armazenamento de Objetos
• Poder de processamento de requisições
• Não possuem chaves primárias nem
  estrangeiras, aumentando o desempenho das
  consultas e processos
• Os objetos se comunicam entre si através de
  mensagens




    Treinar Informática : Oracle            3/6/2013   36
Banco de dados objeto-
     relacional (BDOR)
• Desvantagens:
• Falta de padronização das linguagens de
  manipulação dos dados
• Alto custo de aquisição das novas tecnologias
• Curva de aprendizagem e adaptação ao novo
  ambiente demorada.




Treinar Informática : Oracle                 3/6/2013   37
Diferentes Meios de
            Armazenar Dados
• Os dispositivos de armazenamento foram um meio
  tecnológico inventado para trazer comodidade e
  mobilidade para as pessoas.
• Os dispositivos podem reter informações, processar
  informações ou ambos.
• Como exemplos de dispositivos de armazenamento
  por meio ópticos temos os CDs, DVDs e Blu-Ray.
• Como exemplos de dispositivos de armazenamento
  por meio eletrônico temos os pen drives e cartões
  de memória.


 Treinar Informática : Oracle                 3/6/2013   38
Modelo de Dados
• É um subconjunto do modelo de implementação
  que descreve a representação lógica e física dos
  dados persistentes no sistema.
• Abrange qualquer comportamento definido no
  banco de dados, como procedimentos
  armazenados, triggers, restrições etc.
• O designer de banco de dados é responsável pela
  integridade do modelo de dados, garantindo que
  ele esteja correto, consistente e compreensível
  como um todo.


Treinar Informática : Oracle                 3/6/2013   39
Modelo de Dados
• Precisa ser adaptado à semântica do banco de
  dados, que pode variar um pouco entre RDBMSes.
  Os sistemas de Bancos de Dados de Objetos
  possuem semânticas bem diferentes.




Treinar Informática : Oracle                3/6/2013   40
Joins
• Significa Unir ou União
• Utilizamos quando precisamos buscar dados em
  outras tabelas desde que satisfaça as
  condiçõespara isso.
• Funciona em qualquer banco de dados relacional.
• Existem 3 tipos de Joins:
• LEFT
• RIGHT
• INNER



Treinar Informática : Oracle                3/6/2013   41
Joins
• LEFT JOIN – o banco de dados irá analisar a
  estrutura da tabela da direita e comparar com a
  tabela da esquerda .




 Treinar Informática : Oracle                 3/6/2013   42
Joins
• Na primeira situação temos o Left Join, a seta está
  apontando para a tabela FUNCIONARIOS
  simbolizando que a precedência é da tabela da
  esquerda.
• RIGHT JOIN – Também conhecido apenas por JOIN,
  dependência da tabela da Direita.
• INNER JOIN – Oberva se existem registros
  combinados em ambas as tabelas, ou seja, para
  que um registro seja incluído na lista de resultados,
  o campo de ligação entre as duas tabelas deve
  satisfazer as condições de ambas.

 Treinar Informática : Oracle                    3/6/2013   43
Functions
• A function é usada para fazer um processamento
  e retornar o resultado deste processamento, ou
  seja, uma function obrigatoriamente precisa
  retornar um valor.
• Uma function pode ser de única linha ou de várias
  linhas. É preciso criar um tipo para que nossa
  function saiba o que retornar, ja que dentro de um
  tipo temos um ou vários atributos. Esses atributos
  são os valores que vamos retornar na nossa
  function.



 Treinar Informática : Oracle                  3/6/2013   44
Functions
• Exemplo function com única linha :
• CREATE OR REPLACE FUNCTION DIA_SEMANA (DATA
  DATE) RETURN DIA AS VARCHAR2(20);
• BEGIN
• SELECT DIA_SEM
• INTO RESULT
• FROM TABELA_DIAS_ANO
• WHERE DATA_ANO = DATA
• RETURN;
• END;

Treinar Informática : Oracle               3/6/2013   45
Functions
• Exemplo function vários dados.

• (Script exemplo aula)




 Treinar Informática : Oracle               3/6/2013   46
Funções de Caracter
• Sua forma de utilização é bem simples: só precisa
  saber o nome da função que precisa trabalhar e os
  argumentos que utilizará.




• Falaremos de algumas funções de caracter
  conhecidas e para isso usaremos a tabela de teste
  DUAL do ORACLE. A tabela DUAL permite ser
  utilzada por vários usuários do banco. ela contém
  apenas uma linha e uma coluna. Este objeto é
  muito utilizado para fazer testes.

 Treinar Informática : Oracle                 3/6/2013   47
Funções de Caracter
• Função LOWER
• Retorna a informação do campo com caixa
  baixa(letras minúsculas).
• Função UPPER
• Retorna a informação do campo com caixa
  baixa(letras minúsculas).
• Função INITCAP
• Retorna o primeiro caractere em maiúsculo.
• Função CONCAT
• Concatena campos

Treinar Informática : Oracle                   3/6/2013   48
Funções de Caracter
• Função SUBSTR
  Conta a partir do X caractere y caracteres

  Substr(campo,X,Y)
  X à posição
  Y à quantidade que vai contar
• Função LPAD

   Joga o conteúdo disponível do campo para
   esquerda
   SELECT LPAD(SAL,10,’*’) FROM EMP2;
   LPAD(Campo,número , ‘caractere’);


 Treinar Informática : Oracle                  3/6/2013   49
Funções de Caracter
• Função RPAD
• Joga o conteúdo disponível do campo para direita
• Função TRIM
• Tira os espaços do campo
• Função REPLACE
• Analisa a string de caracteres mencionada na
  função e substitui por outra string que foi
  especificada;
• SELECT REPLACE(‘JACK AND JUE’,’J’,’BL’) FROM
  DUAL;



    Treinar Informática : Oracle             3/6/2013   50
Funções de Data
• Com o Oracle é possível obter uma série de
  resultados a partir de uma ou mais datas, como por
  exemplo verificar o último dia do mês ou verificar a
  quantidade de meses entre duas datas, etc.
• Data atual do sistema: SYSDATE
• Remover meses de uma data:
  ADD_MONTHS(SYSDATE, -1)
• Adicionar meses de uma data:
  ADD_MONTHS(SYSDATE, +1)
• Buscar o último dia do mês: LAST_DAY(SYSDATE)
• Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’)

 Treinar Informática : Oracle                   3/6/2013   51
Funções de Data
• Quantidade de meses entre duas
  datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’)
• Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’)
• Dias da semana:
• DECODE( TO_NUMBER( TO_CHAR (SYSDATE, ‘D’) )
• ,1, ‘domingo’
• ,2, ‘segunda-feira’
• ,3, ‘terça-feira’
• ,4, ‘quarta-feira’
• ,5, ‘quinta-feira’
• ,6, ‘sexta-feira’
• ,7,’sábado’
• )

 Treinar Informática : Oracle                    3/6/2013   52
Funções para Conversão
            de Tipos
•     TO_DATE(string)
•     TO_CHAR(data)
•     TO_CHAR(número)
•     TO_NUMBER(string)




    Treinar Informática : Oracle   3/6/2013   53
Outras Funções
• INSTR
  Pesquisa a posição de um caracter dentro de uma
  string. A função retorna um inteiro indicando a
  posição do primeiro caractere localizado na string.
• SELECT INSTR(‘THIS IS A TEST’, ‘IS’) FROM DUAL;
• TRANSLATE
  Substitui uma seqüência de caracteres em uma
  string com um outro conjunto de caracteres. No
  entanto, é importante destacar que ele substitui um
  único caractere de cada vez.
• SELECT TRANSLATE(‘Mississippi’, ‘s’, ‘S’) FROM dual;

 Treinar Informática : Oracle                   3/6/2013   54
Outras Funções
• MEDIAN
  A ideia da mediana é separar a distribuição em
  duas partes iguais. Para calcular essa medida,
  inicialmente os dados devem ser ordenados. A
  mediana corresponderá ao ponto do meio da
  distribuição. Em nosso exemplo, se ordenarmos as
  punições de forma ascendente, teremos o seguinte
  conjunto de valores: 1, 2, 3, 3, 4, 4, 4.
• Nesse caso, o valor 3 é a mediana, pois é ele quem
  separa a distribuição em duas partes (1, 2, 3 e 4 , 4,
  4). No SGBD Oracle, a função MEDIAN (disponível a
  partir do Oracle 10) é responsável por realizar o
  cálculo da mediana.

 Treinar Informática : Oracle                     3/6/2013   55
Outras Funções
• MODA
• A moda é a medida de tendência central que consiste
  no valor mais frequente em uma distribuição.
• Para obter a moda da variável PUNICAO no SQL do
  Oracle, basta utilizar a função STATS_MODE.




• O resultado é 4, pois, a maioria das punições (3 casos)
  foi de 4 jogos para os jogadores expulsos.


 Footer Text                                         3/6/2013   56
Outras Funções
• GREATEST
  Função que irá retornar o maior valor de uma lista.
  Não confundir com MAX.
• greatest(2, 5, 12, 3) -> retorna 12
  greatest(’2′, ’5′, ’12′, ’3′) -> retorna ’5′
  greatest(‘apples’, ‘oranges’, ‘bananas’) -> retorna
  ‘oranges’
  greatest(‘apples’, ‘applis’, ‘applas’) -> retorna
  ‘applis’




 Treinar Informática : Oracle                   3/6/2013   57
Outras Funções
• LEAST
  Esta função é utilizada para retornar o menor valor
  de uma lista. Não confundir que MIN.
• least(2, 5, 12, 3) -> retorna 2
  least(‘apples’, ‘oranges’, ‘bananas’) -> retorna
  ‘apples’
  least(‘apples’, ‘applis’, ‘applas’) -> retorna ‘applas’
  least(‘apples’, ‘applis’, ‘applas’, null) -> retorna
  NULL




 Treinar Informática : Oracle                      3/6/2013   58
Union (all), Intersect e
               Minus
• Essas quatro funcionalidade ( UNION ALL é um caso a
  parte ) são primordiais para obter fragmentos de
  resultados. Ao invés de sobrecarregar sua query com
  diversas condições e controles tente utilizar essas
  funcionalidades.
• UNION
• Agrega o resultado da query subsequente a query
  anterior, EX:
• SELECT TABLE_NAME FROM USER_TABLES
• UNION
• SELECT TABLE_NAME FROM ALL_TABLES
• Ela retornará todas as tabelas do usuario e todas as
  tabelas do sistema, porém não repetirá.

 Treinar Informática : Oracle                     3/6/2013   59
Union (all), Intersect e
                  Minus
•     Se voce quiser trazer tudo, mesmo que repita, use:
•     SELECT TABLE_NAME FROM USER_TABLES
•     UNION ALL
•     SELECT TABLE_NAME FROM ALL_TABLES
•     A query acima trará as tabelas de USER_TABLES e
      também de ALL_TABLES repetindo caso seja
      necessário.




    Treinar Informática : Oracle                   3/6/2013   60
Union (all), Intersect e
               Minus
• INTERSECT
• Traz a diferença entre dois conjuntos de dados.
  Digamos que voce queira os registros que existam em
  uma query e NECESSARIAMENTE não existam na outra. (
  e vice-versa )
• SELECT TABLE_NAME FROM USER_TABLES
• INTERSECT
• SELECT TABLE_NAME FROM ALL_TABLES
• Isso trará todas as tabelas do usuário que não estejam
  em ALL_TABLES ( que no caso é 0 porque todas as
  tabelas estão lá ) e também trará todas as tabelas que
  tenham na ALL_TABLES e não na USER_TABLES.
• Podemos resumir o INTERSECT como: Traz todos os
  registros que se repetem nas sentenças.


 Treinar Informática : Oracle                      3/6/2013   61
Union (all), Intersect e
               Minus
• MINUS
• Traz todos os registros da primeira
  consulta MENOS ( MINUS ) os registros da segunda
  consulta. (ele também ignora os repetidos)
• SELECT TABLE_NAME FROM USER_TABLES
• MINUS
• SELECT TABLE_NAME FROM ALL_TABLES
• O resultado será vazio. Pois todos os registros da
  primeira query estão na segunda.



 Treinar Informática : Oracle                   3/6/2013   62
Truncate
• O comando TRUNCATE é como se fosse um DELETE
  (sem cláusula Where) com COMMIT implícito, ou
  seja, ele elimina todas as linhas da tabela,
  deixando apenas sua estrutura e, NOTA
  IMPORTANTE, sem opção de ROLLBACK.

• -- Executa um TRUNCATE (Delete+Commit implícito)
  na tabela
• truncate table teste;



Footer Text                                  3/6/2013   63

SQL Oracle

  • 1.
    Bando de Dados Relacional RDBMS (Relational Database Management System) Treinar Informática : Oracle 3/6/2013 1
  • 2.
    O que é? Conceito abstrato que define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas, construindo um bando de dados. Treinar Informática : Oracle 3/6/2013 2
  • 3.
  • 4.
  • 5.
    Constraints Not Manter a Definições de Null, Unique, Prim integridade dos regras. ary Key, Foreign dados. Key e Check. Treinar Informática : Oracle 3/6/2013 5
  • 6.
    SQL • Linguagem depesquisa declarativa para banco de dados relacional. • Características inspiradas na álgebra relacional. • Padrão de banco de dados. • Simplicidade e facilidade de uso. • Uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. • Pode ser migrado de plataforma para plataforma sem mudanças estruturais principais. Treinar Informática : Oracle 3/6/2013 6
  • 7.
    SQL • Consulta adados • Inserção, atualização e deleção das linhas de uma tabela • Criação, substituição, alteração e eliminação de objetos • Controle de acesso ao banco de dados e seus objetos • Garantia de consistência e integridade do banco de dados. Treinar Informática : Oracle 3/6/2013 7
  • 8.
    Palavras Chaves SQL • DML – Linguagem de Manipulação de Dados • DDL – Linguagem de Definição de Dados • DCL – Linguagem de Controle de Dados • DTL – Linguagem de Transação de Dados • DQL – Linguagem de Consulta de Dados Treinar Informática : Oracle 3/6/2013 8
  • 9.
    DDL • Definição denovas tabelas e elementos associados. • Os comandos básicos são: • CREATE • DROP Treinar Informática : Oracle 3/6/2013 9
  • 10.
    Tipos de Colunas •Quando se cria uma tabela é necessário especificar o tipo de dados das colunas e a sua dimensão. Esta determina o comprimento máximo que podem ter os valores nela armazenados. • VARCHAR2 (n) • Armazena uma cadeia de caracteres de comprimento variável. O valor máximo de n são 4000 bytes. O Oracle só guarda o que o utilizador introduzir não preenchendo o que falta para o limite n. Se usarmos BYTE n traduz o número de bytes; Footer Text 3/6/2013 10
  • 11.
    Tipos de Colunas •CHAR(n) • Caracteres de comprimento fixo n. O valor por omissão é 1 sendo o valor máximo 2000. A base de dados ocupa sempre n caracteres pois preenche o que falta com espaços em branco; • NUMBER(n,d) • Número com n digitos sendo d casas décimais (à direita da virgula); Footer Text 3/6/2013 11
  • 12.
    Tipos de Colunas •DATE • Data desde 1 Jan de 4712 AC até 31 de Dez de 9999 DC. Também é armazenada a hora, minuto e segundo. O calendário interno da base de dados tem em conta as alterações de calendário impostas ao longo do tempo, por exemplo a passagem do calendário Juliano para Gregoriano em 1582-10-05, onde foram eliminados 10 dias; Footer Text 3/6/2013 12
  • 13.
    Tipos de Colunas •VARCHAR2 surgiu na versão 7 para substituir VARCHAR • Se criar uma coluna com o tipo VARCHAR o SGBD converte em VARCHAR2 • Quando insere valores do tipo VARCHAR2 o ORACLE não preenche espaços em branco no fim. Isto significa que JOSE e JOSE§§§ serão strings diferentes. Se os valores fossem do tipo CHAR o ORACLE acrescentava espaços no fim automaticamente; • Quando um valor a introduzir numa coluna excede a sua dimensão a base de dados emite uma mensagem de erro; Footer Text 3/6/2013 13
  • 14.
    DML • Realizado pararealizar inclusões, consultas, alterações e exclusões de dados presentes em registros. • Pode ser executado em diversos registros de diversas tabelas ao mesmo tempo. • Os comandos são: • INSERT • SELECT • UPDATE • DELETE Treinar Informática : Oracle 3/6/2013 14
  • 15.
    DCL • Controla osaspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. • Os comandos são : • GRANT • REVOKE Treinar Informática : Oracle 3/6/2013 15
  • 16.
    DTL • Próprio nomeja diz: controle de transação de dados. • Os comandos são: • BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) • COMMIT • ROLLBACK Treinar Informática : Oracle 3/6/2013 16
  • 17.
    DQL • É a mais utilizada • Possui apenas um comando : SELECT • Esse comando possui várias cláusulas: • FROM • WHERE • GROUP BY • HAVING • ORDER BY • DISTINCT Treinar Informática : Oracle 3/6/2013 17
  • 18.
    DQL • Operadores lógicos: • AND • OR • NOT • Operadores Relacionais: • < • > • <= • >= Treinar Informática : Oracle 3/6/2013 18
  • 19.
    DQL • Operadores Relacionais: • = • <> • BETWEEN • LIKE • IN • Funções de Agregação: • AVG • COUNT Treinar Informática : Oracle 3/6/2013 19
  • 20.
    DQL • Funções de Agregação: • SUM • MAX • MIN Treinar Informática : Oracle 3/6/2013 20
  • 21.
    DBA (Administrador de Banco de Dados) • Avaliar o hardware do servidor de banco de dados • Instalar o Oracle • Planejar, criar e abrir banco de dados • Backup • Controlar usuários • Design • Recuperação após falhas • Monitorar Treinar Informática : Oracle 3/6/2013 21
  • 22.
    Arquitetura do Bancode Dados • Arquivos de Controle • Arquivos de dados • Arquivos de redo log on-line • Arquivo de parâmetros • Arquivo de senha • Arquivo de log arquivados Treinar Informática : Oracle 3/6/2013 22
  • 23.
    Banco de dadosobjeto- relacional (BDOR) • A maior parte dos sistemas gerenciadores de bancos de dados (SGBDs) utilizados é baseada no modelo relacional. No entanto, SGBDs baseados em outros modelos têm surgido devido à demanda de novas aplicações. Muitas aplicações, impulsionadas pela WEB, requererem técnicas de acesso que melhorem o desempenho e estruturas de dados muito mais complexas que as tabelas relacionais, com diversos tipos adicionais, como imagem e vídeo, fundamentados na tecnologia de orientação a objetos. Footer Text 3/6/2013 23
  • 24.
    Banco de dadosobjeto- relacional (BDOR) • Sistema de gerenciamento de banco de dados semelhante a um banco de dados relacional, porém com um modelo de banco de dados orientado a objetos: objetos, classes e herança são suportados diretamente nos esquemas de banco de dados e na linguagem de consulta. • Teve sua origem na combinação de idéias dos modelos de dados tradicionais e de linguagens de programação orientada a objetos. Treinar Informática : Oracle 3/6/2013 24
  • 25.
    Banco de dadosobjeto- relacional (BDOR) • A principal estrutura do modelo objeto-relacional são as tabelas, entretanto, com muito mais recursos do que as tabelas puramente relacionais. Entre esses recursos podemos destacar: • definição de tipos pelo usuário; • registros e vetores; • métodos e funções; • referências, herança e polimorfismo. • São acrescentadas também estruturas a linguagens de consulta relacionais, como SQL, para tratar os tipos de dados acrescentados. Footer Text 3/6/2013 25
  • 26.
    Banco de dadosobjeto- relacional (BDOR) • O objetivo é preservar os fundamentos relacionais, em particular o acesso declaratório ao dado, acrescentando novas funcionalidades. • Para utilizar os recursos de orientação a objetos a Oracle, a partir da versão 8, implementou diversos conceitos que definem um modelo objeto- relacional tais como: tipo objeto, tabela de objetos, etc. Footer Text 3/6/2013 26
  • 27.
    Banco de dadosobjeto- relacional (BDOR) • Em que são utilizados: • Objetos complexos – são formados por construtores (conjunto, listas, tuplas, registros, coleções e arrays) aplicados a objetos simples (inteiros, booleans, strings) • Também podemos utilizar estes tipos de dados estruturados onde a consulta ao banco de dados precisa ser mais complexa, pois ao invés de acesso a tabela e registros, é necessário o acesso a listas, tuplas, arrays entre outros. Treinar Informática : Oracle 3/6/2013 27
  • 28.
    Banco de dadosobjeto- relacional (BDOR) • Exemplo de aplicações complexas: • Projetos de engenharia e arquitetura • Experiências científicas • Telecomunicações • Sistemas de informações geográficas • Multimídia Treinar Informática : Oracle 3/6/2013 28
  • 29.
    Banco de dadosobjeto- relacional (BDOR) • Características das aplicações complexas: • Transações de duração mais longa • Novos tipos de dados para armazenar imagens ou grandes itens de texto • Necessidade de definir operações específicas de de aplicações não-padronizadas. Treinar Informática : Oracle 3/6/2013 29
  • 30.
    Banco de dadosobjeto- relacional (BDOR) • Características: • Cada objeto possui um identificador de objeto ou OID (object identifer), que o torna único, não usa a linguagem SQL, por isso não há querys, você busca seus objetos através de metodologias predefinidas. Essas metodologias são chamadas de Native Query´s. • Na diferenciação do modelo relacional e orientado a objeto, ficaria da seguinte maneira: Treinar Informática : Oracle 3/6/2013 30
  • 31.
    Banco de dadosobjeto- relacional (BDOR) Treinar Informática : Oracle 3/6/2013 31
  • 32.
    Banco de dadosobjeto- relacional (BDOR) • A forma de acesso aos dados é remodelada porque os SGDBs orientados a objetos sugerem novos tipos de dados como sequência de bits, ponteiros, linhas, números complexos e elementos de dados do tipo array. • Para acessar uma array, um modo especial de consulta teria que ser construído por exemplo: Treinar Informática : Oracle 3/6/2013 32
  • 33.
    Banco de dadosobjeto- relacional (BDOR) • A consulta realizada retorna o nome dos carros vendidos no mês de fevereiro, representado pela sentença (2) e com quantidade acima de 200 unidades; o mês de fevereiro faz parte de uma array de 12 elementos, representando os meses. Treinar Informática : Oracle 3/6/2013 33
  • 34.
    Banco de dadosobjeto- relacional (BDOR) • Oracle 11g – Um SGBD Objeto Relacional: • Mistura banco de dados relacional com conceitos de orientação a objetos. • Usa SQL no sistema Objeto Relacional. • Existe no Oracle o Object Type que um tipo definido pelo usuário na qual equivale ao de classe em POO (Programação Orientada a Objetos) . • O Object Type captura tanto a estrutura como o comportamento de um objeto. A sintaxe segue o exemplo: Treinar Informática : Oracle 3/6/2013 34
  • 35.
    Banco de dadosobjeto- relacional (BDOR) Treinar Informática : Oracle 3/6/2013 35
  • 36.
    Banco de dadosobjeto- relacional (BDOR) • Vantagens: • Capacidade de Armazenamento de Objetos • Poder de processamento de requisições • Não possuem chaves primárias nem estrangeiras, aumentando o desempenho das consultas e processos • Os objetos se comunicam entre si através de mensagens Treinar Informática : Oracle 3/6/2013 36
  • 37.
    Banco de dadosobjeto- relacional (BDOR) • Desvantagens: • Falta de padronização das linguagens de manipulação dos dados • Alto custo de aquisição das novas tecnologias • Curva de aprendizagem e adaptação ao novo ambiente demorada. Treinar Informática : Oracle 3/6/2013 37
  • 38.
    Diferentes Meios de Armazenar Dados • Os dispositivos de armazenamento foram um meio tecnológico inventado para trazer comodidade e mobilidade para as pessoas. • Os dispositivos podem reter informações, processar informações ou ambos. • Como exemplos de dispositivos de armazenamento por meio ópticos temos os CDs, DVDs e Blu-Ray. • Como exemplos de dispositivos de armazenamento por meio eletrônico temos os pen drives e cartões de memória. Treinar Informática : Oracle 3/6/2013 38
  • 39.
    Modelo de Dados •É um subconjunto do modelo de implementação que descreve a representação lógica e física dos dados persistentes no sistema. • Abrange qualquer comportamento definido no banco de dados, como procedimentos armazenados, triggers, restrições etc. • O designer de banco de dados é responsável pela integridade do modelo de dados, garantindo que ele esteja correto, consistente e compreensível como um todo. Treinar Informática : Oracle 3/6/2013 39
  • 40.
    Modelo de Dados •Precisa ser adaptado à semântica do banco de dados, que pode variar um pouco entre RDBMSes. Os sistemas de Bancos de Dados de Objetos possuem semânticas bem diferentes. Treinar Informática : Oracle 3/6/2013 40
  • 41.
    Joins • Significa Unirou União • Utilizamos quando precisamos buscar dados em outras tabelas desde que satisfaça as condiçõespara isso. • Funciona em qualquer banco de dados relacional. • Existem 3 tipos de Joins: • LEFT • RIGHT • INNER Treinar Informática : Oracle 3/6/2013 41
  • 42.
    Joins • LEFT JOIN– o banco de dados irá analisar a estrutura da tabela da direita e comparar com a tabela da esquerda . Treinar Informática : Oracle 3/6/2013 42
  • 43.
    Joins • Na primeirasituação temos o Left Join, a seta está apontando para a tabela FUNCIONARIOS simbolizando que a precedência é da tabela da esquerda. • RIGHT JOIN – Também conhecido apenas por JOIN, dependência da tabela da Direita. • INNER JOIN – Oberva se existem registros combinados em ambas as tabelas, ou seja, para que um registro seja incluído na lista de resultados, o campo de ligação entre as duas tabelas deve satisfazer as condições de ambas. Treinar Informática : Oracle 3/6/2013 43
  • 44.
    Functions • A functioné usada para fazer um processamento e retornar o resultado deste processamento, ou seja, uma function obrigatoriamente precisa retornar um valor. • Uma function pode ser de única linha ou de várias linhas. É preciso criar um tipo para que nossa function saiba o que retornar, ja que dentro de um tipo temos um ou vários atributos. Esses atributos são os valores que vamos retornar na nossa function. Treinar Informática : Oracle 3/6/2013 44
  • 45.
    Functions • Exemplo functioncom única linha : • CREATE OR REPLACE FUNCTION DIA_SEMANA (DATA DATE) RETURN DIA AS VARCHAR2(20); • BEGIN • SELECT DIA_SEM • INTO RESULT • FROM TABELA_DIAS_ANO • WHERE DATA_ANO = DATA • RETURN; • END; Treinar Informática : Oracle 3/6/2013 45
  • 46.
    Functions • Exemplo functionvários dados. • (Script exemplo aula) Treinar Informática : Oracle 3/6/2013 46
  • 47.
    Funções de Caracter •Sua forma de utilização é bem simples: só precisa saber o nome da função que precisa trabalhar e os argumentos que utilizará. • Falaremos de algumas funções de caracter conhecidas e para isso usaremos a tabela de teste DUAL do ORACLE. A tabela DUAL permite ser utilzada por vários usuários do banco. ela contém apenas uma linha e uma coluna. Este objeto é muito utilizado para fazer testes. Treinar Informática : Oracle 3/6/2013 47
  • 48.
    Funções de Caracter •Função LOWER • Retorna a informação do campo com caixa baixa(letras minúsculas). • Função UPPER • Retorna a informação do campo com caixa baixa(letras minúsculas). • Função INITCAP • Retorna o primeiro caractere em maiúsculo. • Função CONCAT • Concatena campos Treinar Informática : Oracle 3/6/2013 48
  • 49.
    Funções de Caracter •Função SUBSTR Conta a partir do X caractere y caracteres Substr(campo,X,Y) X à posição Y à quantidade que vai contar • Função LPAD Joga o conteúdo disponível do campo para esquerda SELECT LPAD(SAL,10,’*’) FROM EMP2; LPAD(Campo,número , ‘caractere’); Treinar Informática : Oracle 3/6/2013 49
  • 50.
    Funções de Caracter •Função RPAD • Joga o conteúdo disponível do campo para direita • Função TRIM • Tira os espaços do campo • Função REPLACE • Analisa a string de caracteres mencionada na função e substitui por outra string que foi especificada; • SELECT REPLACE(‘JACK AND JUE’,’J’,’BL’) FROM DUAL; Treinar Informática : Oracle 3/6/2013 50
  • 51.
    Funções de Data •Com o Oracle é possível obter uma série de resultados a partir de uma ou mais datas, como por exemplo verificar o último dia do mês ou verificar a quantidade de meses entre duas datas, etc. • Data atual do sistema: SYSDATE • Remover meses de uma data: ADD_MONTHS(SYSDATE, -1) • Adicionar meses de uma data: ADD_MONTHS(SYSDATE, +1) • Buscar o último dia do mês: LAST_DAY(SYSDATE) • Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’) Treinar Informática : Oracle 3/6/2013 51
  • 52.
    Funções de Data •Quantidade de meses entre duas datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’) • Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’) • Dias da semana: • DECODE( TO_NUMBER( TO_CHAR (SYSDATE, ‘D’) ) • ,1, ‘domingo’ • ,2, ‘segunda-feira’ • ,3, ‘terça-feira’ • ,4, ‘quarta-feira’ • ,5, ‘quinta-feira’ • ,6, ‘sexta-feira’ • ,7,’sábado’ • ) Treinar Informática : Oracle 3/6/2013 52
  • 53.
    Funções para Conversão de Tipos • TO_DATE(string) • TO_CHAR(data) • TO_CHAR(número) • TO_NUMBER(string) Treinar Informática : Oracle 3/6/2013 53
  • 54.
    Outras Funções • INSTR Pesquisa a posição de um caracter dentro de uma string. A função retorna um inteiro indicando a posição do primeiro caractere localizado na string. • SELECT INSTR(‘THIS IS A TEST’, ‘IS’) FROM DUAL; • TRANSLATE Substitui uma seqüência de caracteres em uma string com um outro conjunto de caracteres. No entanto, é importante destacar que ele substitui um único caractere de cada vez. • SELECT TRANSLATE(‘Mississippi’, ‘s’, ‘S’) FROM dual; Treinar Informática : Oracle 3/6/2013 54
  • 55.
    Outras Funções • MEDIAN A ideia da mediana é separar a distribuição em duas partes iguais. Para calcular essa medida, inicialmente os dados devem ser ordenados. A mediana corresponderá ao ponto do meio da distribuição. Em nosso exemplo, se ordenarmos as punições de forma ascendente, teremos o seguinte conjunto de valores: 1, 2, 3, 3, 4, 4, 4. • Nesse caso, o valor 3 é a mediana, pois é ele quem separa a distribuição em duas partes (1, 2, 3 e 4 , 4, 4). No SGBD Oracle, a função MEDIAN (disponível a partir do Oracle 10) é responsável por realizar o cálculo da mediana. Treinar Informática : Oracle 3/6/2013 55
  • 56.
    Outras Funções • MODA •A moda é a medida de tendência central que consiste no valor mais frequente em uma distribuição. • Para obter a moda da variável PUNICAO no SQL do Oracle, basta utilizar a função STATS_MODE. • O resultado é 4, pois, a maioria das punições (3 casos) foi de 4 jogos para os jogadores expulsos. Footer Text 3/6/2013 56
  • 57.
    Outras Funções • GREATEST Função que irá retornar o maior valor de uma lista. Não confundir com MAX. • greatest(2, 5, 12, 3) -> retorna 12 greatest(’2′, ’5′, ’12′, ’3′) -> retorna ’5′ greatest(‘apples’, ‘oranges’, ‘bananas’) -> retorna ‘oranges’ greatest(‘apples’, ‘applis’, ‘applas’) -> retorna ‘applis’ Treinar Informática : Oracle 3/6/2013 57
  • 58.
    Outras Funções • LEAST Esta função é utilizada para retornar o menor valor de uma lista. Não confundir que MIN. • least(2, 5, 12, 3) -> retorna 2 least(‘apples’, ‘oranges’, ‘bananas’) -> retorna ‘apples’ least(‘apples’, ‘applis’, ‘applas’) -> retorna ‘applas’ least(‘apples’, ‘applis’, ‘applas’, null) -> retorna NULL Treinar Informática : Oracle 3/6/2013 58
  • 59.
    Union (all), Intersecte Minus • Essas quatro funcionalidade ( UNION ALL é um caso a parte ) são primordiais para obter fragmentos de resultados. Ao invés de sobrecarregar sua query com diversas condições e controles tente utilizar essas funcionalidades. • UNION • Agrega o resultado da query subsequente a query anterior, EX: • SELECT TABLE_NAME FROM USER_TABLES • UNION • SELECT TABLE_NAME FROM ALL_TABLES • Ela retornará todas as tabelas do usuario e todas as tabelas do sistema, porém não repetirá. Treinar Informática : Oracle 3/6/2013 59
  • 60.
    Union (all), Intersecte Minus • Se voce quiser trazer tudo, mesmo que repita, use: • SELECT TABLE_NAME FROM USER_TABLES • UNION ALL • SELECT TABLE_NAME FROM ALL_TABLES • A query acima trará as tabelas de USER_TABLES e também de ALL_TABLES repetindo caso seja necessário. Treinar Informática : Oracle 3/6/2013 60
  • 61.
    Union (all), Intersecte Minus • INTERSECT • Traz a diferença entre dois conjuntos de dados. Digamos que voce queira os registros que existam em uma query e NECESSARIAMENTE não existam na outra. ( e vice-versa ) • SELECT TABLE_NAME FROM USER_TABLES • INTERSECT • SELECT TABLE_NAME FROM ALL_TABLES • Isso trará todas as tabelas do usuário que não estejam em ALL_TABLES ( que no caso é 0 porque todas as tabelas estão lá ) e também trará todas as tabelas que tenham na ALL_TABLES e não na USER_TABLES. • Podemos resumir o INTERSECT como: Traz todos os registros que se repetem nas sentenças. Treinar Informática : Oracle 3/6/2013 61
  • 62.
    Union (all), Intersecte Minus • MINUS • Traz todos os registros da primeira consulta MENOS ( MINUS ) os registros da segunda consulta. (ele também ignora os repetidos) • SELECT TABLE_NAME FROM USER_TABLES • MINUS • SELECT TABLE_NAME FROM ALL_TABLES • O resultado será vazio. Pois todos os registros da primeira query estão na segunda. Treinar Informática : Oracle 3/6/2013 62
  • 63.
    Truncate • O comandoTRUNCATE é como se fosse um DELETE (sem cláusula Where) com COMMIT implícito, ou seja, ele elimina todas as linhas da tabela, deixando apenas sua estrutura e, NOTA IMPORTANTE, sem opção de ROLLBACK. • -- Executa um TRUNCATE (Delete+Commit implícito) na tabela • truncate table teste; Footer Text 3/6/2013 63