Upload
pietra-reposa
View
218
Download
3
Embed Size (px)
Citation preview
IBM Software Group | Information Management
© 2009 IBM Corporation
Luiz Henrique Zambom Santana
Treinamento 730 Smart Professional
IBM Software Group | Information Management
© 2009 IBM Corporation
Agenda Introdução ao DB2
– Edições
Instalando o DB2
Gerenciando o DB2– Ferramentas
– Criando um Banco de Dados
– Criando objetos do Banco de Dados e XML
– SQL
Como DB2 lida com segurança?
O que são transações?
Simulado
Discussão
2
IBM Software Group | Information Management
© 2009 IBM Corporation
Introdução ao DB2 Banco de Dados Relacionais da IBM
Lançado em 1983
Versões “quase” independentes:– Mainframe
– Linux, Unix e Windows (LUW)
9.7 ou Cobra: versão atual da LUW
As atuais certificações são baseadas na versão 9.1
3
IBM Software Group | Information Management
© 2009 IBM Corporation
Introdução ao DB2 - Edições
4
IBM Software Group | Information Management
© 2009 IBM Corporation
Instalando o DB2 Podemos fazer download do DeveloperWorks:
http://www-01.ibm.com/software/data/db2/express/download.html
5
IBM Software Group | Information Management
© 2009 IBM Corporation
Criando e Conectando um Banco de Dados Criar um banco através da linha de comando
create database 730db
create database SYS730db
create database IBM730db
create database db3456789
create database my730db
Conectar ao banco de dados
connect <user [Usuário] using [Senha]> to [Banco de Dados]
6
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Esquemas Organizar logicamente os objetos do Banco de Dados
– CREATE SCHEMA FINANCEIRO
– CREATE SCHEMA VENDAS AUTHORIZATION [UserID]
Pode ser criado implicitamente também
7
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Tabelas Conjunto de linhas não ordenadas
– CREATE TABLE FINANCEIRO.FUNCIONARIOS(ID INTEGER)– CREATE TABLE COMERCIAL.FUNCIONARIOS(ID INTEGER)
Caso o esquema não seja apresentado explicitamente, será utilizado o usuário corrente
– CREATE TABLE [UserID].GERENTES(ID INTEGER)
8
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Restrições
9
Exercícios:CREATE TABLE
GERENTES
(ID INTEGER,
NOME VARCHAR(255),
CONTRATACAO DATE,
SALARIO DOUBLE,
FOTO BLOB,
DETALHES XML)
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Restrições Not null: evita valores nulos
Default: substitui valores nulos por um valor padrão
Check: evita que valores inválidos sejam inseridos
Informational: NOT ENFORCED ENABLE QUERY OPTIMIZATION, o otimizador utiliza a restrição para aumentar o desempenho da consulta, mas valores inválidos podem ser inseridos
Unique: evita que haja valores repetidos, pode ser utilizado em chave estrangeiras e não aceita valores nulos
Referential Integrity: chaves estrangeiras
10
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Restrições
11
CREATE TABLE DEPARTAMENTOS(id INTEGER NOT NULL PRIMARY KEY,nome CHAR(50) NOT NULL)
CREATE TABLE FUNCIONARIOS(id INTEGER NOT NULL,salario DOUBLE default 10000.00,idade INTEGER, sexo CHAR(1),nome CHAR(50),
CONSTRAINT inf CHECK (idade > 18)NOT ENFORCED ENABLE QUERY OPTIMIZATION,dept INTEGER REFERENCES DEPARTAMENTOS(id)ON DELETE CASCADE ON UPDATE RESTRICT
)
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Restrições
12
ALTER TABLE DEPARTAMENTOS ADD UNIQUE (nome)
INSERT INTO DEPARTAMENTOS VALUES (0, ‘RH')INSERT INTO DEPARTAMENTOS VALUES (1, ‘RH')INSERT INTO DEPARTAMENTOS VALUES (1, ‘TI')INSERT INTO DEPARTAMENTOS VALUES (2, ‘FINANCEIRO'), (3, 'Depto 3')
INSERT INTO FUNCIONARIOS (id, salario, idade, nome, dept)VALUES (0, 1000, 16, ‘M’, 'Emp1',0)
INSERT INTO FUNCIONARIOS (id, salario, idade, nome, dept)VALUES (1, NULL, 18, ‘M’, 'Emp2',1)
INSERT INTO FUNCIONARIOS (id, salario, idade, nome, dept)VALUES (2, 20000, 17, ‘F’, 'Emp3',1)
INSERT INTO FUNCIONARIOS (id, salario, idade, nome, dept)VALUES (2, 300000, 21, ‘M’, 'Emp4',0)
DELETE FROM DEPARTAMENTOS WHERE ID = 1
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Visões São como consultas armazenadas
Oferecem diferentes formas de visualizar os mesmos dados
13
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Visões Existem duas opções para dados inseridos através de uma
visão:– WITH LOCAL CHECK OPTION: garante que as linhas repeitaram a definição
das visões
– WITH CASCADED CHECK OPTION: garante que as linhas repeitaram a definição da visão e das visões precedentes
CREATE VIEW TI AS SELECT * FROM FUNCIONARIOS where dept = 1 WITH LOCAL CHECK OPTION
CREATE VIEW FEMININO AS SELECT * FROM TI sexo=‘F’WITH CASCADED CHECK OPTION
INSERT INTO FEMININO (id, salario, idade, nome, dept) VALUES (2, 30000, 30, ‘F’, 'Emp5',1)
INSERT INTO FEMININO (id, salario, idade, nome, dept) VALUES (2, 30000, 30, ‘M’, 'Emp6',1)
list tables for schema [UserID]
14
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Índices Um objeto que contém ponteiros ordenados em relação a uma
tabela base
Opções– UNIQUE: caso essa opção seja escolhida, o índice pode conter um e
apenas um valor nulo
– ColunasSecundarias: pode-se adicionar colunas secundárias
Exercícios
– CREATE INDEX emp_indx ON FUNCIONARIOS (ID DESC)
– CREATE UNIQUE INDEX empname_indx ON FUNCIONARIOS(nome)
– CREATE UNIQUE INDEX empid_indx ON FUNCIONARIOS (ID) INCLUDE (salario, idade)
15
IBM Software Group | Information Management
© 2009 IBM Corporation
Objetos do Banco de Dados - Alias São nomes alternativos para:
– Tabelas
– Visões
– Nicknames (tabelas em bancos de dados federados)
CREATE ALIAS employee FOR FUNCIONARIOS
16
IBM Software Group | Information Management
© 2009 IBM Corporation
Como DB2 lida com segurança? Existem três ferramentas básicas, gerenciadas pela
Sistema Operacional– Autenticação: identifica quem está acessando o banco de
dados através de nome de usuário e senha
connect <user [Usuário] using [Senha]> to [Banco de Dados]
– Autoridade: identifica grupos de usuários, organizados hierarquicamente, que realizam atividades especificas
– Privilégio: identifica quais são os direitos desse usuário em relação aos objetos do Banco de Dados
17
IBM Software Group | Information Management
© 2009 IBM Corporation
Como DB2 lida com segurança?
18
IBM Software Group | Information Management
© 2009 IBM Corporation
Autoridades no DB2 db2 get dbm cfg
19
• update dbm cfg using sysadm_group new_group1
• update dbm cfg using sysctr_group new_group2
• update dbm cfg using sysmaint_group new_group3
• update dbm cfg using sysmon_group new_group4
• db2 get dbm cfg
IBM Software Group | Information Management
© 2009 IBM Corporation
Autoridades no DB2 Adicione as autoridades:
– db2 GRANT LOAD ON DATABASE to new_user1
– db2 GRANT DBADM ON DATABASE to new_user2
– db2 GRANT SECADM ON DATABASE to new_user3
Exercício1.create db myAUTHtest
2.Crie um usuário teste com senha teste
3.connect user teste using teste to myAUTHtest
4.connect to myAUTHtest
5.db2 GRANT DBADM ON DATABASE to teste
6.connect user teste using teste to myAUTHtest
20
IBM Software Group | Information Management
© 2009 IBM Corporation
Privilégios no DB2
21
IBM Software Group | Information Management
© 2009 IBM Corporation
Privilégios no DB2
22
1. connect to my730db2. GRANT SELECT ON TABLE FUNCIONARIOS TO teste3. GRANT UPDATE ON TABLE FUNCIONARIOS TO teste4. GRANT CONNECT TO teste5. Connect user teste using teste to my730db6. select * from FUNCIONARIOS7. REVOKE ALL PRIVILEGES ON TABLE DEPARTAMENTO FROM teste
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando INSERT Inserir valores de uma ou mais linhas
– INSERT INTO FUNCIONARIOS(id, salario, idade, nome, dept) VALUES (0, 1000, 16, 'Emp1',0);
– INSERT INTO FUNCIONARIOS(id, salario, idade, nome, dept) VALUES (1, 10000, 18, 'Emp2',0), (2, 555, 20, 'Emp3',1);
Criar uma tabela a partir de outra e selecionar todos os dados da primeira– CREATE TABLE EQUIPE LIKE FUNCIONARIOS
– INSERT INTO EQUIPE SELECT * FROM FUNCIONARIOS WHERE dept = 0
23
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando UPDATE Forma simples:
– UPDATE FUNCIONARIOS SET dept = 0, salary = 70000 WHERE id=1
Equivalemente
– UPDATE FUNCIONARIOS SET (dept, salary) = (0, 70000) WHERE id=1
24
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando DELETE Exemplos:
– DELETE FROM FUNCIONARIOS WHERE id =1
– DELETE FROM FUNCIONARIOS WHERE id IN (0, 2)
– DELETE FROM FUNCIONARIOS WHERE id IN (select id from staff where id =3)
– DELETE FROM FUNCIONARIOS
25
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando SELECT Forma mais simples:
– SELECT * FROM FUNCIONARIOS
Usando projeção da algebra relacional– SELECT nome, salario FROM FUNCIONARIOS
Valores distintos– SELECT DISTINCT dept FROM FUNCIONARIOS
Restringir o número de linhas– SELECT * FROM FUNCIONARIOS FETCH FIRST 10 ROWS ONLY
Atribuindo nomes– SELECT nome, salario AS pagamento FROM FUNCIONARIOS
– Usando WHERE– SELECT nome, salario FROM FUNCIONARIOS WHERE salario > 20000
– SELECT nome, salario FROM FUNCIONARIOS WHERE nome <> ‘Arthur’
26
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando SELECT Sub-selects:
– SELECT name FROM staff WHERE name LIKE 'S%‘ "SELECT lastname FROM employee WHERE lastname IN (SELECT sales_person FROM sales WHERE sales_date < '01/01/1996')“
Nomes para correlação:– SELECT e.salary FROM employee e WHERE e.salary < (SELECT
AVG(s.salary) FROM staff s)
27
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando SELECT Join simples (produto cartesiano):
– SELECT *FROM FUNCIONARIOS, DEPARTAMENTOS
Inner join:– Exemplo:
– SELECT * FROM FUNCIONARIOS f INNER JOIN DEPARTAMENTOS d ON d.id = f.dept
28
IBM Software Group | Information Management
© 2009 IBM Corporation
SQL – comando SELECT Outer join
– Left outer join inclui os resultados no inner join mais as linhas da tabela da esquerda:
– SELECT * FROM FUNCIONARIOS f LEFT OUTERJOIN DEPARTAMENTOS d ON d.id = f.dept
– Right outer inclui os resultados no inner join mais as linhas da tabela da direita:
– SELECT * FROM FUNCIONARIOS f RIGHT OUTER JOIN DEPARTAMENTOS d ON d.id = f.dept
– A full outer join combina os resultados das duas colunas e preenche com nulos os valores que não possuir correspondentes:
– SELECT * FROM FUNCIONARIOS f FULL OUTER JOIN DEPARTAMENTOS d ON d.id = f.dept
29
IBM Software Group | Information Management
© 2009 IBM Corporation
O que é XML? eXtensible Markup Language
Simplifica:– Definição de linguagens de marcação (e.g., XHTML, SVG)
– Definição de estruturas de dados
– Transformação de documentos (e.g., XSLT)
– Evolução de esquema do Banco de Dados
30
IBM Software Group | Information Management
© 2009 IBM Corporation
Suporte do DB2 para XML
31
DB2
Outro SGBD
IBM Software Group | Information Management
© 2009 IBM Corporation
Suporte do DB2 para XML O DB2 permite que dados XML
sejam inseridos em seus Banco de Dados. Para recuperação desses dados, é utilizado o XQuery um padrão do W3C. O processador de consulta do DB2 intepreta da mesma forma consultas SQL em dados XML e consultas XQuery em dados relacionais.
32
IBM Software Group | Information Management
© 2009 IBM Corporation
Insert into XML columns
33
insert into DEPARTAMENTOS values (5,’Dept 05’,‘<info> <gerente>Maria</gerente> <email>[email protected]</email> <endereco> <rua>Tutóia</rua>
<cidade>Brasília</cidade></endereco></info>’);
insert into DEPARTAMENTOSvalues (6,’Dept 06’,‘<info> <gerente>João</gerente><endereco> <rua>Santo Amaro</rua>
<cidade>São Paulo</cidade></endereco></info>’);
ALTER TABLE DEPARTAMENTOS ADD COLUMN DETALHES XML
IBM Software Group | Information Management
© 2009 IBM Corporation
XPath examples Consultar documentos inteiros
– xquery db2-fn:xmlcolumn(‘FUNCIONARIOS.DETALHES')
Recuperar o nome do gerente
– xquery db2-fn:xmlcolumn(‘FUNCIONARIOS.DETALHES ')/info/gerente
– xquery db2-fn:xmlcolumn(‘FUNCIONARIOS.DETALHES ')/info/gerente/text()
Filtrando os resultados
– xquery db2-fn:xmlcolumn('FUNCIONARIOS.DETALHES ')/info[gerente=“Maria“]
– xquery db2-fn:xmlcolumn('CUSTOMER.INFO') /customerinfo[name=“João" or endereco/cidade="Brasília"]/gerente/text()
34
IBM Software Group | Information Management
© 2009 IBM Corporation
Transações As transações, chamadas também de UOW, são
seqüências de operações recuperáveis no Banco de Dados
Em DB2 cada trasação tem início implicitamente (IMPORTANTE) e termina com um comando de ROLLBACK ou COMMIT
35
IBM Software Group | Information Management
© 2009 IBM Corporation
Exemplo transação
36
IBM Software Group | Information Management
© 2009 IBM Corporation
Exemplo transação
37
IBM Software Group | Information Management
© 2009 IBM Corporation
Exemplo transação
38
IBM Software Group | Information Management
© 2009 IBM Corporation
Transações exercício Desativar o auto commit
– db2 +c
Exercício
– Abrir um Command lLne• db2 +c• connect to 730db• create table teste1(id integer)• insert into teste1(1)
– Abrir um segundo Command Line• connect to 730db• select * from table test1
– No primeiro Command Line aberto• commit
39
IBM Software Group | Information Management
© 2009 IBM Corporation
Cocorrência e Níveis de Isolamento Vários Usuários acessando objetos de um mesmo Banco de base
de Dados
Os seguintes fenômenos podem ocorrer:
– Alteração perdida: duas transações lêem os mesmos dados, e tentam fazer alterações ao mesmo tempo; uma das alterações será perdida
– Leitura suja: leitura de dados que ainda não foram comitados
– Leitura não repetida: uma só transação lê uma mesma linha duas vezes e recebe informações diferentes em cada leitura
– Leitura fantasma: em uma mesma transação, informações que inicialmente não são recuperadas, aparecem em uma segunda leiturat then seen in a later read operation
40
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura repetível Para eveitara problemas, o DB2 possui os seguintes
níveis de isolamento:– Leitura repetível
– Estabilidade de leitura
– Estabilidade de cursor
– Leitura não consolidada
41
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura repetível O nível de isolamento mais restritivo
Cada linha referenciada por uma transação é travada, mesmo que não seja lida ou modificada
Evita – Leitura suja, Leitura não repetida e Fantasmas
42
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura repetível
43
IBM Software Group | Information Management
© 2009 IBM Corporation
Estabilidade de leitura Menos restritiva que a Leitura repetível
Não isola as transações completamente
Apenas as linhas que estão sendo recuperada ou modificada pela trasação são travadas
Evita– Leitura suja e Leitura não repetível
Fantasmas podem ocorrer
44
IBM Software Group | Information Management
© 2009 IBM Corporation
Estabilidade de leitura
45
IBM Software Group | Information Management
© 2009 IBM Corporation
Estabilidade de cursor Esse nível de isolamento trava apenas as linhas que estão sendo
referenciadas pelo cursor
Evita apenas leitura sujas
46
IBM Software Group | Information Management
© 2009 IBM Corporation
Estabilidade de cursor
47
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura não consolidada Nível de isolamento menos restritivo
As linhas de uma trasação são travadas apenas se outra transação tentar apagar ou alterar essas linhas
Só evita a alteração perdida
48
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura não consolidada
49
IBM Software Group | Information Management
© 2009 IBM Corporation
Leitura não consolidada Exercício
– Abra um Command Line•db2 +c•connect to 730db• insert into test1(1)• insert into test1(2)• insert into test1(3)
– Abra um segundo Command Line•change isolation to ur (application change)•connect to 730db•select * from table test1
– No primeiro Command Line•rollback
– No segundo Command Line•select * from table test1
50
IBM Software Group | Information Management
© 2009 IBM Corporation
References http://www.ibm.com/developerworks/data/library/techarticle/
0212wieser/0212wieser.html
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0601wasserman/
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0311wong/
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0603saracco2/
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0511singh/
51
IBM Software Group | Information Management
© 2009 IBM Corporation
Luiz Henrique Zambom Santana
Questions?