1) O documento discute conceitos relacionados a bancos de dados relacionais, incluindo RDBMS, modelo de dados, linguagem SQL e arquitetura de bancos de dados.
2) Banco de dados objeto-relacional (BDOR) é discutido, combinando características de bancos de dados relacionais e orientados a objetos.
3) Diferentes tipos de dados, como arrays, podem ser armazenados em BDORs para aplicações complexas.
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
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 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
7. 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
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 de novas 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 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
15. 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
16. 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
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 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
23. 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
24. 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
25. 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
26. 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
27. 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
28. 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
29. 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
30. 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
31. Banco de dados objeto-
relacional (BDOR)
Treinar Informática : Oracle 3/6/2013 31
32. 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
33. 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
34. 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
35. Banco de dados objeto-
relacional (BDOR)
Treinar Informática : Oracle 3/6/2013 35
36. 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
37. 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
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 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
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 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
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 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
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), 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
60. 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
61. 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
62. 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
63. 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