Sei sulla pagina 1di 126

DB2 - CONCEITOS E UTILIZAO

19/11/98

DBMS RELACIONAL............................................................................................................................. 3 DB2 um DBMS Relacional ................................................................................................................... 5 OBJETOS DO DB2.................................................................................................................................. 7 ENTIDADE RELACIONAMENTO ...................................................................................................... 10 RELACIONAMENTO ........................................................................................................................... 11 LINGUAGEM SQL................................................................................................................................ 17 INSTRUO SELECT ...................................................................................................................... 18 QUERY .......................................................................................................................................... 21 SELECT DE TODAS AS COLUNAS ........................................................................................... 23 CONTROLE DE LINHAS ............................................................................................................. 24 NULIDADE.................................................................................................................................... 26 MTIPLAS CONDIES ............................................................................................................ 28 IN .................................................................................................................................................... 30 PESQUISAS PARCIAIS ................................................................................................................ 31 MANIPULANDO TABELA RESULTANTE ............................................................................... 33 ORDER BY .................................................................................................................................... 33 SELECT DISTINCT ...................................................................................................................... 35 SELECT DE VALORES CALCULADOS..................................................................................... 37 ORDER BY POR VALOR CALCULADO.................................................................................... 38 SELECT AVANADO .................................................................................................................. 40 JOIN DE TABELAS ...................................................................................................................... 57 INNER JOIN .................................................................................................................................. 62 OUTER JOIN ................................................................................................................................. 63 EXPRESSES CASE .................................................................................................................... 64 UNION ........................................................................................................................................... 65 SUBQUERY................................................................................................................................... 67 MANUTENO DE DADOS - INSERT ...................................................................................... 72 MANUTENO DE DADOS - UPDATE .................................................................................... 73 MANUTENO DE DADOS - DELETE ..................................................................................... 74 DATA DEFINITION LANGUAGE....................................................................................................... 75 DDL .................................................................................................................................................... 76 STORAGE GROUP ........................................................................................................................... 77 DATABASE ....................................................................................................................................... 78 TABLESPACE ................................................................................................................................... 79 TABLE ............................................................................................................................................... 81 NDICE .............................................................................................................................................. 83 VIEW.................................................................................................................................................. 84 DROP ..................................................................................................................................................... 85 SQL ESTTICO vs. SQL DINMICO ................................................................................................. 86 COMMIT / ROLLBACK ....................................................................................................................... 91 BIND ..................................................................................................................................................... 92 SEGURANA INTERNA DO DB2 ...................................................................................................... 97 UTLITRIOS DO DB2 ......................................................................................................................... 99 SYSIBM.SYSUTILX ....................................................................................................................... 100 LOAD ............................................................................................................................................... 101 LOAD JCL ................................................................................................................................ 102 FASES DO LOAD ....................................................................................................................... 105 CHECK DATA................................................................................................................................. 109 FASES DO CHECK DATA ......................................................................................................... 110 CHECK INDEX ............................................................................................................................... 112 FASES DO CHECK INDEX ........................................................................................................ 112 REORG............................................................................................................................................. 113 FASES DO REORG ..................................................................................................................... 113 COPY ............................................................................................................................................... 116 MERGECOPY ................................................................................................................................. 117 RECOVERY..................................................................................................................................... 118 QUIESCE ......................................................................................................................................... 120

#59585

DB2 - CONCEITOS E UTILIZAO

19/11/98

REPORT ........................................................................................................................................... 120 INDEX RECOVERY ....................................................................................................................... 121 RECOVERY PENDING .................................................................................................................. 122 MODIFY .......................................................................................................................................... 123 DIAGNOSE ...................................................................................................................................... 123 STOSPACE ...................................................................................................................................... 123 RUNSTATS ..................................................................................................................................... 124 REPAIR ............................................................................................................................................ 124 DSNTIAUL ...................................................................................................................................... 125 COMANDOS DB2 ........................................................................................................................... 126

#59585

DB2 - CONCEITOS E UTILIZAO DBMS RELACIONAL

19/11/98

QUANDO UM DBMS PODE SER CONSIDERADO RELACIONAL ?? 1. 2. 3. 4. Notas: DBMS - Significa DATA BASE MANAGEMENT SYSTEM, OU SISTEMA GERENCIADOR DE BANCO DE DADOS (SGBD). Um DBMS Relacional exige: Estrutura de Dados Tabular Os dados devem ser colocados em tabelas Operadores de Tabelas Deve ter operadores que conseguem manipular dados em tabelas Uniformidade e Integridade dos Dados Possui Mecanismos que mantm a integridade dos dados que so adicionados ou modificados. O DBMS deve tambm ter mecanismo capazes de forar uma uniformizao dos dados que so nela armazenados. Por exemplo, podemos forar o armazenamento dos dados sempre o formato numrico. Independncia dos Dados. Lgica das aplicaes no devem se preocupar com a estrutura de armazenamento e a teoria de acesso aos dados. Independncia dos Dados Estrutura Tabular Operadores de Tabelas Uniformidade e Integridade dos Dados.

#59585

DB2 - CONCEITOS E UTILIZAO


Tabela Empregados
Matricula Nome Cargo Depto

19/11/98

Salrio

Linhas

000010 000020 000030 000040 000050

Christiane Karina Jlio Ingrid Juan

D01 R01 S01 P01 P02

001 002 003 004 004

260000 270010 300010 250500 138005

Colunas Notas : Todos os dados e relacionamentos entre dados so representados por valores de campo. Pointers fsicos no so utilizados. Cada ocorrncia da tabela chamada de linha. Os atributos so chamados de colunas. As Tabelas DB2 so definidas e manipuladas usando-se a linguagem SQL. Todas as Tabelas so referenciadas pelo seu nome.

#59585

DB2 - CONCEITOS E UTILIZAO DB2 um DBMS Relacional

19/11/98

SISTEMA DE GERENCIA DE BANCO DE DADOS

Integridade e Segurana de Dados Recuperao e Reinicio Integrados Definio Dinmica Operao Contnua

Modelo de Dados Relacional - Os dados vistos como Tabelas - Projeto mais fcil

Linguagem SQL

- Definio Manipulao e Controle de dados

#59585

DB2 - CONCEITOS E UTILIZAO


AMBIENTE DB2

19/11/98

IMS TM

CICS

Qmf/Spffi

BATCH

DPROP IMS DM DXT DB2

Notas: DB2 pode ser acessado atravs do IMS, CICS, TSO e jobs BATCH simultaneamente. Dados que estiverem em IMS/DM (Antigo IMS/DB) podem ser transferidos para o DB2 atravs do DPROP (Data Propagador) ou o DXT (Data Extract).

#59585

DB2 - CONCEITOS E UTILIZAO OBJETOS DO DB2

19/11/98

DATA BASE Tablespace1 Indice1 Tabela1

Tablespace2 Indice2 Tabela2 View X

Storage Group A

Storage Group B

#59585

DB2 - CONCEITOS E UTILIZAO


OBJETOS DO B2 Notas:

19/11/98

DATABASE Conjunto de tabelas, ndices e tablespaces agrupados sob um critrio administrativo. TABLE (Tabelas) Conjunto de linhas com as mesmas colunas. Representam uma entidade de um modelo entidade-relacionamento. TABLESPACE Conjunto de datasets VSAM LDS (Linear Data Sets) que contem de uma ou mais tabelas. Suas paginas podem ser de 4K ou 32K. Existem trs tipos de tablespaces: SIMPLES As pginas de seus data sets podem conter dados de uma ou mais tabelas. SEGMENTADO dividido em segmentos que so constitudo de 4 a 64 pginas e sempre mltiplos de 4. Cada segmento s pode conter dados de uma tabela. PARTICIONADO Recomendado para tabelas gigantes. Pode ser dividido em at 64 parties. Cada partio pode ter no mximo 4Gbytes. Requer um ndice CLUSTER que serve de filtro para determinar a distribuio das linhas entre as parties. NDICE Utilizado para agilizar a leitura de dados ou para garantir a unicidade dos dados. Existem trs tipos de ndices: UNIQUE Fora a unicidade dos dados atravs dos valores de uma coluna escolhida como chave primaria.

#59585

DB2 - CONCEITOS E UTILIZAO


OBJETOS DO B2 (Continuao)

19/11/98

CLUSTER A seqncia fsica das linhas procura obedecer a seqncia das entradas do ndice. Existem utilitrios que reorganizam um tablespace atravs do ndice CLUSTER de suas tabelas. NORMAL

VIEW uma tabela lgica que um subconjunto de uma ou mais tabelas. Sua utilizao m nada difere com a de uma tabela. Conforme o caso uma View pode ser somente para leitura STORAGE GROUP um conjunto de volumes(discos) onde estaro os tablespaces e ndices. Os discos devem ser do mesmo device type. A utilizao do Storage Group nos poupa ca codificao do AMS de VSAM para definir os data sets de um tablespace. Os discos de um Storage Group no precisam ser dedicados ao DB2. SYNONYM (Sinnimo) um nome alternativo (Apelido) para uma tabela ou uma VIEW. Uma vez criado, a sua utilizao restrita a um AUTH-ID e vlido a nvel de um subsistema DB2. ALIAS um nome alternativo(Apelido) para uma tabela ou VIEW. Um alias de uso compartilhado ao contrario do SYNONYM. utilizado mais como apelido para uma tabela remota e vlido a nvel de um subsistema DB2.

#59585

DB2 - CONCEITOS E UTILIZAO ENTIDADE RELACIONAMENTO

19/11/98

Modelo E R

DB2

Notas: Uma vez construdo o modelo entidade relacionamento, passamos fase de implementao em DB2. Basicamente temos uma tabela para cada entidade do modelo. Existem casos (relacionamento m:m) em que precisaremos trabalhar com tabelas adicionais. Para cada atributo de uma entidade temos uma coluna na tabela correspondente. Uma coluna tem algumas caractersticas tais como tipo de dado, para definir se o contedo numrico ou alfanumrico. A distribuio de tabelas entre os tablespace tambm deve seguir alguns critrios tais como tamanho das tabelas, afinidade entre as tabelas, etc.

10 #59585

DB2 - CONCEITOS E UTILIZAO RELACIONAMENTO


Chave Primria Matr 419 003 Nome Maria Carlos Depto A00 Z13 Chave Estrangeira EMPR

19/11/98

Carlos Trabalha na Reserva Operador Relacional

DeptoCod Z13 A00

DeptoNome Reserva Vendas

DEPT

Notas: Para mapearmos um relacionamento entre duas entidades de um modelo relacional precisamos conhecer o conceito de chaves. Chave primria: Identifica uma ocorrncia de uma entidade (Tabela) Chave estrangeira: Identifica uma associao entre as ocorrncias de duas tabelas. Como o valor representado chave primria na outra entidade, a chamamos de chave Estrangeira. Conceito de chave primria e chave estrangeira esto implementados no DB2, mas a suas utilizao no obrigatria. A chave estrangeira deve pertencer ao mesmo domnio da chave primria a qual esta associada. Ex.: No poderamos associar a coluna NOME de EMPR com a coluna DeptoCod da DEPT. A associao lgica entre as ocorrncias das entidades feita atravs das chaves primrias e estrangeiras que sero argumento de um operador relacional.

#59585

11

DB2 - CONCEITOS E UTILIZAO


TIPOS DE RELACIONAMETO

19/11/98

1 PARA MUITOS
Colocar a chave estrangeira aqui

EMPREGADO Carlos Paulo Maria

M:1

DEPARTAMENTO Reserva Vendas DEPTO

Chave Primria

DeptoCod

DeptoNome

Z13 Reserva A00 Vendas : :

EMPREGADO Matr 419 003 087 : Nome Maria Carlos Paulo : Dept A00 Z13 Z13 : Chave Estrangeira

12 #59585

DB2 - CONCEITOS E UTILIZAO


TIPOS DE RELACIONAMENTO Notas:

19/11/98

Em um relacionamento do tipo um para muitos, qualquer ocorrncia de uma entidade pode estar associada vrias ocorrncias da outra entidade, enquanto qualquer ocorrncia desta outra deve estar associada apenas uma ocorrncia da outra. Neste caso devemos colocar a chave estrangeira na tabela em que cada ocorrncia s enxerga uma ocorrncia da tabela oposta. Caso contrrio deveramos colocar vrias chaves estrangeiras na tabela oposta. No nosso exemplo, se um determinado departamento tiver 30 empregados, a tabela DEPT deveria ter no mnimo 30 chaves estrangeiras! Podemos tambm imaginar uma situao onde um departamento da companhia resolve triplicar o nmero de empregados.

#59585

13

DB2 - CONCEITOS E UTILIZAO


TIPOS DE RELACIONAMENTO

19/11/98

MUITOS PARA MUITOS


EMPREGADO Carlos Paulo Maria M:M PROJETO Ano 2.000 Qualidade

Onde colocar a chave estrangeira ?


Chave Primria Chave Estrangeira Chave Estrangeira

Matr 419 003 087

EMPREGADO Nome Maria Carlos Paulo

Mat 003 087 : 419 : 419

EMP-PROJ Cod A2 A2 : A2 : QD

Chave Primria

PROJETO Pcod PNome A2 Projeto 2.000 QD Qualidade

TABELA DE ASSOCIAO Notas: Em um relacionamento do tipo muitos para muitos, qualquer ocorrncia de ambas as entidades pode estar associada vrias ocorrncias da entidade oposta. Neste caso, ao invs de se criar vrias chaves estrangeiras, criamos uma tabela de associao que contm pelo menos duas chaves estrangeiras apontando para as chaves primrias das tabelas associadas. Nada impede que uma tabela de associao tenha colunas que no sejam chaves estrangeiras.

14 #59585

DB2 - CONCEITOS E UTILIZAO


INTEGRIDADE DE REFERENCIA

19/11/98

EMPR
(Dependet)

DEPT
(Parent)

Matr 419 003 :

Nome Maria Carlos :

Depto A00 Z13 :

Dcod A00 V75 Z13 :

Dnome Vendas Contabilidade Reserva :

Integridade Referencial

Notas: A Integridade de referncia garante que qualquer valor apontado pela chave estrangeira tenha um valor correspondente na chave primria qual est associada. A Integridade de Referncia implementado no DB2 via DDL (Instrues de definio de objetos da linguagem SQL). No DB2 a Integridade de Referncia obedece s seguintes regras: Uma chave primria tem valor nico e no nulo Uma chave estrangeira nula ou tem valor correspondente na chave primria. Tanto na insero como na atualizao de linhas, o DB2 fora a observao destas regras.

#59585

15

DB2 - CONCEITOS E UTILIZAO


INTEGRIDADE DE REFERENCIA (Continuao).

19/11/98

Todas as tabelas associadas entre si via regra de Integridade de Referncia formam um conjunto chamado de ESTRUTURA REFERENCIAL ou REFERENTIAL STRUCTURE. Uma tabela com chave primria definida chamada de Parent Table ou tabela Me. Uma table com chave estrangeira definida chamada de Dependent Table ou tabela Dependente. Uma linha de uma Parent Table chamada Parent Row ou linha Me se existir pelo menos uma linha na tabela dependente com chave estrangeira correspondente sua chave primria. Uma linha de uma Dependent Table chamada de Dependent Row ou linha Dependente se existir uma linha Me com valor de chave primria correspondente da sua chave estrangeira. Em outras palavras a chave estrangeira no deve ter valor nulo para ser uma linha dependente. Na eliminao de uma linha da tabela me, pode ocorrer situaes conforme a regra de deleo estabelecida pela chave estrangeira. CASCADE : Regra onde todas as linhas dependentes so eliminadas juntamente com a me. SET NULL : Regra onde todas as chaves estrangeiras das linhas dependentes so atualizadas com valor nulo aps a eliminao da me. RESTRICT : Regra onde a eliminao da linha me impedida. Neste caso somente as linhas que no so mes podem ser eliminadas.

16 #59585

DB2 - CONCEITOS E UTILIZAO

19/11/98

LINGUAGEM SQL

SQL STRUCTURED QUERY LANGUAGE

SELECT UPDATE DELETE INSERT

CREATE ALTER DROP

GRANT REVOKE COMMIT ROLLBACK

DML

DDL

CONTROL

Notas: A Linguagem SQL pode ser separada em trs grupos: DML Data Manipulation Language, utilizado para fazer pesquisas e atualizaes nas tabelas DB2. DDL Data Definition Language, utilizado para definir, alterar e eliminar objetos DB2. CONTROL Utilizado para administrar a segurana dos recursos DB2.

#59585

17

DB2 - CONCEITOS E UTILIZAO


INSTRUO SELECT No procedural Conceito da teoria os conjuntos Fcil Notas:

19/11/98

A instruo SELECT no procedural. Em outras palavras no precisamos fornecer todos os procedimentos necessrios para fazer uma pesquisa tais como: 1. 2. 3. 4. 5. 6. Zere o contador Abra o arquivo Leia um registro Verifique se satisfaz o critrio de pesquisa Incremente o contador etc.

Com a instruo SELECT basta dizer: 1. QUERO OS DADOS QUE SATISFAZEM A CONDIO X. SELECT trabalha com conjuntos e permite a execuo de operadores elementares que nos so familiares. Quem j no ouviu falar dos operadores unio e interseco? Com uma instruo SQL podemos implementar os seguintes operadores: A B UNIO AUB A INTERSECO A DIFERENA B A-B B AB

PRODUTO CARTESIANO

A X B

= { (x, y) : x A e y B}

18 #59585

DB2 - CONCEITOS E UTILIZAO


TABELAS USADAS NOS EXEMPLOS x.staff

19/11/98

ID NOME DEPT CARGO ANOS SALARIO COMIS 10 SANTANA 20 GER 7 18357.50 20 ORSINI 20 VENDAS 8 18171.25 612.45 30 DANTAS 38 GER 5 17506.75 40 OBRIEN 38 VENDAS 6 18006.00 846.55 50 SOUZA 15 GER 10 20659.80 60 SUZUKI 38 VENDAS 16808.30 650.25 70 ALMEIDA 15 VENDAS 7 16502.83 1152.00 80 JAMES 20 ATEND 13504.60 128.20 90 KOONITZ 42 VENDAS 6 18001.75 1386.70 100 PLOTZ 42 GER 7 18352.80 110 NGAN 15 ATEND 5 12508.20 206.60 120 NAUGHTON 38 ATEND 12954.75 180.00 130 YAMAGUCHI 42 ATEND 6 10505.90 75.60 140 FRAYE 51 GER 6 21150.00 150 OLIVEIRA 51 VENDAS 6 19456.50 637.50 160 MOLINARI 10 GER 7 22959,20 170 KERMISCH 15 ATEND 4 12258.50 110.10 180 ABRAHAMS 38 ATEND 3 12009.75 236.50 190 SNEIDER 20 ATEND 8 14252.75 126.50 200 SCOUTTEN 42 ATEND 11508.60 84.20 210 LU 10 GER 10 20010.00 220 SMITH 51 VENDAS 7 17654.50 922.80 230 LUNDQUIST 51 ATEND 3 13369.80 189.65 240 DANIELS 10 GER 5 19260.25 250 WHEELER 51 ATEND 6 14460.00 513.30 260 JONES 10 GER 12 21234.00 270 LEA 66 GER 9 18555.50 280 WILSON 66 VENDAS 9 18674.50 811.50 290 PINHO 84 GER 10 19818.00 300 DAVIS 84 VENDAS 5 15454.50 806.10 310 GRAHAM 66 VENDAS 13 21000.00 200.30 320 GONZALES 66 VENDAS 4 16858.20 844.00 330 BURKE 66 ATEND 1 10988.00 55.50 340 VIEIRA 84 VENDAS 7 17844.00 1285.00 350 GAFNEY 84 ATEND 5 13030.50 188.00 TABELAS USADAS NOS EXEMPLOS (Continuao)
#59585

19

DB2 - CONCEITOS E UTILIZAO

19/11/98

x.org DEPTCOD 10 15 20 38 42 51 66 84 DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA RECIFE RIO GRANDE PARAN GERENTE 160 50 10 30 100 140 270 290 DIVISO CENTRO SUDESTE SUDESTE SUDESTE NORDESTE NORDESTE SUL SUL LOCAL SO PAULO CAMPINAS RIO DE JANEIRO B. HORIZONTE SALVADOR RECIFE PORTO ALEGRE CURITIBA

20 #59585

DB2 - CONCEITOS E UTILIZAO QUERY


Sequncia obrigatria: SELECT NOME, ANOS, SALARIO FROM x.staff WHERE DEPT = 38 ORDER BY NOME

19/11/98

- Diz quais as colunas mostrar - Diz de quais tabelas - Diz quais linhas selecionar - Diz como ordenar o resultado

Notas: As clusulas de uma instruo SELECT devem ser especificadas obedecendo uma sequncia. As clusulas esto grifadas na figura e no podem ser abreviadas. No nosso exemplo estamos fazendo uma pesquisa na tabela chamada x.staff para gerar um relatrio com o nome, tempo de casa e o salrio de todos que trabalham no departamento de cdigo 38. O Resultado deve ser classificado pelo nome os funcionrios. Uma instruo SELECT pode ser escrita em formato livre desde que as clusulas estejam obedecendo sequncia obrigatria, como descrito abaixo: SELECT NOME, ANOS, SALARIO FROM x.staff WHERE DEPT = 38 ORDER BY NOME

#59585

21

DB2 - CONCEITOS E UTILIZAO SELECT ... FROM

19/11/98

SELECT algumas das colunas da tabela Lista as colunas desejadas na sequncia de esquerda para a direita Vrgulas separam as colunas FROM lista de tabelas Simples: EMP Qualificado: AUTHID.EMP

EXEMPLO SELECT DEPTNOME, DEPTCOD FROM x.org Resultado: DEPTNOME MATRIZ CAMPINAS RIO MINAS : DEPTCOD 10 15 20 38 :

22 #59585

DB2 - CONCEITOS E UTILIZAO SELECT DE TODAS AS COLUNAS

19/11/98

Para selecionar todas as colunas de uma tabela na mesma sequncia em que foram definidas: SELECT * FROM x.org Resultado: DEPTCOD 10 15 20 38 : DEPTNOME MATRIZ CAMPINAS RIO MINAS : GERENTE 160 50 10 30 : DIVISO CENTRO SUDESTE SUDESTE SUDESTE : LOCAL SO PAULO CAMPINAS RIO DE JANEIRO B. HORIZONTE :

#59585

23

DB2 - CONCEITOS E UTILIZAO CONTROLE DE LINHAS


WHERE Traz certas linhas Estabelece condies Listar empregados do departamento 20 SELECT DEPT, NOME, CARGO, COMIS FROM x.staff WHERE DEPT = 20 Resultado: ID 10 20 80 190 NOME SANTANA ORSINI JAMES SNEIDER DEPT 20 20 20 20 CARGO GER VENDAS ATEND ATEND

19/11/98

ANOS SALARIO COMIS 7 18357.50 8 18171.25 612.45 13504.60 128.20 8 14252.75 126.50

Selecionar linhas atravs de dado numrico SELECT DEPT, NOME, CARGO FROM x.staff WHERE DEPT = 20 Selecionar linhas atravs de dado alfanumrico SELECT NOME, CARGO, COMIS FROM x.staff WHERE NOME = SANTANA

24 #59585

DB2 - CONCEITOS E UTILIZAO OPERADORES DE COMPARAO


= <> or = > >= < <= = > < Igual Diferente Maior Maior ou Igual Menor Menor ou Igual No Igual No Maior No Menor

19/11/98

SELECT MATR, COMIS FROM x.staff WHERE COMIS >= 1000 SELECT NOME, DEPT, ANOS FROM x.staff WHERE CARGO <> GER

#59585

25

DB2 - CONCEITOS E UTILIZAO NULIDADE


Na insero de linha, uma coluna que : NOT NULL (ALLOW) NULL Um valor NULO: O valor deve ser fornecido O valor pode ser omitido No zero No Branco Desconhecido

19/11/98

NOT NULL WITH DEFAULT Uma coluna pode ser Not Null With Default. Aps a Verso 4 podemos atribuir um valor Default para a coluna quando mesma omitida na incluso e se no atribuirmos este valor o sistema atribui como: Zero se coluna numrica Branco se coluna definida como caracter Comprimento zero se coluna definida como caracter de tamanho varivel.

26 #59585

DB2 - CONCEITOS E UTILIZAO


SELEO DE NULOS Valor nulo como critrio de SELECT SELECT NOME, CARGO, COMIS FROM x.staff WHERE COMIS IS NULL Resultado: NOME SANTANA DANTAS SOUZA PLOTZ FRAYE : CARGO GER GER GER GER GER : COMIS :

19/11/98

Valor no nulo como critrio de SELECT SELECT NOME, CARGO, COMIS FROM x.staff WHERE COMIS IS NOT NULL Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES KOONITZ NGAN NAUGHTON YAMAGUCHI OLIVEIRA KERMISCH : CARGO VENDAS VENDAS VENDAS VENDAS ATEND VENDAS ATEND ATEND ATEND VENDAS ATEND : COMIS 612.45 846.55 650.25 1152.00 128.20 1386.70 206.60 180.00 75.60 637.50 110.10 :

#59585

27

DB2 - CONCEITOS E UTILIZAO MTIPLAS CONDIES


Operadores mltiplos de condies: AND e OR Dadas duas condies: CARGO = VENDAS SALARIO < 17000 Para ter ambas satisfeitas: AND WHERE CARGO VENDAS AND SALARIO < 17000 Resultado: NOME SUZUKI ALMEIDA : CARGO VENDAS VENDAS : SALARIO 16808.30 16502.83 :

19/11/98

Para ter qualquer uma satisfeitas: OR WHERE CARGO VENDAS OR SALARIO < 17000 Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES : CARGO VENDAS VENDAS VENDAS VENDAS ATEND : SALARIO 18171.25 18006.00 16808.30 16502.83 13504.60 :

28 #59585

DB2 - CONCEITOS E UTILIZAO


MLTIPLAS CONDIES (Continuao) WHERE (CARGO = VENDAS AND COMIS > 1200) OR ANOS > 10 Resultados: NOME KOONITZ JONES GRAHAM VIEIRA : : CARGO VENDAS GER VENDAS VENDAS : : ANOS COMIS 6 1386.70 12 13 200.30 7 1285.00 : : : :

19/11/98

No equivale a: WHERE CARGO = VENDAS AND (COMIS > 1200 OR ANOS > 10)

Resultados: NOME KOONITZ GRAHAM VIEIRA CARGO VENDAS VENDAS VENDAS ANOS COMIS 6 1386.70 13 200.30 7 1285.00

#59585

29

DB2 - CONCEITOS E UTILIZAO IN


Valor deve coincidir com algum elemento de uma lista WHERE DEPT IN ( 38, 20, 42) Equivale a mltiplos Ors para a mesma coluna: WHERE DEPT = 38 OR DEPT = 20 OR DEPT = 42 Valor deve ser diferente de algum elemento da lista WHERE DEPT NOT IN ( 38, 20, 42) BETWEEN Para selecionar um intervalo fechado de valores SELECT NOME, CARGO, ANOS FROM x.staff WHERE ANOS BETWEEN 9 AND 11 Equivale a SELECT NOME, CARGO, ANOS FROM x.staff WHERE ANOS >= 9 AND ANOS <=11 Resultado: NOME SOUZA LU LEA WILSON PINHO CARGO GER GER GER VENDAS GER ANOS 10 10 9 9 10

19/11/98

Para selecionar um intervalo diferente de valores SELECT NOME, CARGO. ANOS FROM x.staff WHERE ANOS NOT BETWEEN 9 AND 11

30 #59585

DB2 - CONCEITOS E UTILIZAO PESQUISAS PARCIAIS


Para pesquisar um subconjunto de caracteres : LIKE % Conjunto de caracteres quaisquer _ Um caracter qualquer EXEMPLOS: WHERE NOME LIKE G% Inclui:

19/11/98

WHERE NOME LIKE %SON

Inclui:

WHERE NOME LIKE %M%N% Inclui: WHERE NOME LIKE _ _ WHERE NOME LIKE _R% Inclui: Inclui:

GRAHAM GONZALES GAFNEY WILSON JASON SAMANTA MOLINARI LU FRAYE GRAHAM

O operadores ESCAPE permite que seja utilizado outro caracter no lugar do %. Exemplo: ... WHERE coluna LIKE 100+%% ESCAPE + Notas: No exemplo estamos procurando strings que comeam por 100%. Primeiro % interpretado como um caracter comum pois precedido pelo caracter + que foi definido atravs do operador ESCAPE. Segundo % interpretado como um conjunto de caracteres quaisquer pois no precedido por nenhum caracter de ESCAPE. Neste exemplo, quaisquer ocorrncia do + que no sejam ++, +% ou +_ provoca erro.

#59585

31

DB2 - CONCEITOS E UTILIZAO


NEGAO Para reverter o teste: WHERE NOME NOT LIKE G% Exclui: GRAHAM, GONZALES, GAFNEY.

19/11/98

WHERE ANOS NOT BETWEEN 9 AND 11 Exclui: ANOS de 9 a 11

USER Registro Especial Authorization ID do tempo de execuo Comprimento fixo de 8 bytes til para query dependente de executor SELECT * FROM SYSIBM.SYSTABLES WHERE OWNER = USER

32 #59585

DB2 - CONCEITOS E UTILIZAO MANIPULANDO TABELA RESULTANTE


Para classificar as linhas: ORDER BY

19/11/98

Para eliminar linhas duplicadas: SELECT DISTINCT

ORDER BY
Para classificar numa sequncia especifica: Lista classificada do pessoal do depto 84 SELECT NOME, CARGO, ANOS FROM x.staff WHERE DEPT = 84 ORDER BY NOME Resultado: NOME DAVIS GAFNEY PINHO VIEIRA CARGO VENDAS ATEND GER VENDAS ANOS 5 5 10 7

Notas: Colunas classificadas devem ser referenciadas pelo SELECT Nulos so considerados como valor mais alto. Podemos especificar colunas para o ORDER BY fornecendo um nmero que indica a posio da mesma coluna na clusula SELECT. O ORDER BY o nico que permite isto. A clusulas ORDER BY classifica uma tabela resultante. Logo deve ser SEMPRE a nica e a ltima a aparecer numa instruo SELECT.

#59585

33

DB2 - CONCEITOS E UTILIZAO


ORDER BY (Continuao)

19/11/98

Para classificar pelas coluna(s) em ordem ASCendente (default) ou DESCendente. SELECT NOME, CARGO, ANOS FROM x.staff WHERE DEPT = 84 ORDER BY CARGO, ANOS DESC Resultado: NOME GAFNEY PINHO VIEIRA DAVIS CARGO ATEND GER VENDAS VENDAS ANOS 5 10 7 5

ORDER BY ANOS DESC, CARGO Resultado: NOME PINHO VIEIRA GAFNEY DAVIS CARGO GER VENDAS ATEND VENDAS ANOS 10 7 5 5

34 #59585

DB2 - CONCEITOS E UTILIZAO SELECT DISTINCT


SELECT DEPT FROM x.staff DEPT 20 20 38 38 15 38 10 . .

19/11/98

Para eliminar linhas duplicadas: SELECT DISTINCT DEPT FROM x.staff DEPT 20 15 20 38 .

Mltiplas colunas SELECT DISTINCT DEPT, CARGO FROM x.staff DEPT CARGO 10 GER 15 ATEND 15 GER 15 VENDAS 20 ATEND 20 GER 20 VENDAS 38 ATEND : :

#59585

35

DB2 - CONCEITOS E UTILIZAO


SELECT DISTINCT (Continuao) Notas:

19/11/98

A Palavra chave DISTINCT deve aparecer logo depois do SELECT. Classificao ocorre pelas colunas da esquerda para a direita. ORDER BY pode ser usada para controlar a classificao.

EXEMPLO: SELECT DISTINCT DEPT, CARGO FROM x.staff ORDER BY CARGO DEPT 15 20 38 . . 10 15 20 . . . 15 20 . . . CARGO ATEND ATEND ATEND . . GER GER GER . . . VENDAS VENDAS . . .

36 #59585

DB2 - CONCEITOS E UTILIZAO SELECT DE VALORES CALCULADOS


+ SOMA - SUBTRAO * MULTIPLICAO / DIVISO

19/11/98

Ganho total de cada pessoa do DEPT 20 SELECT ID, SALARIO, COMIS, SALARIO + COMIS AS TOTAL FROM x.staff WHERE DEPT = 20 Resultado: ID 10 20 80 190 SALARIO 18357.50 18171.25 13504.60 14252.75 COMIS 612.45 128.20 126.50 TOTAL 18783.70 13632.80 14379.25

Pessoas cujo salrio mais comisso excede R$ 20.000 SELECT NOME, SALARIO + COMIS AS TOTAL FROM x.staff WHERE SALARIO + COMIS > 20000 Resultado: NOME OLIVEIRA GRAHAM TOTAL 20094.15 21200.30

#59585

37

DB2 - CONCEITOS E UTILIZAO ORDER BY POR VALOR CALCULADO


Exemplo 1: SELECT NOME, SALARIO + COMIS FROM x.staff WHERE SALARIO + COMIS > 20000 ORDER BY 2 DESC Resultado: NOME GRAHAM OLIVEIRA TOTAL 21200.30 20094.15

19/11/98

Exemplo 2: SELECT CARGO, SALARIO + COMIS FROM x.staff ORDER BY CARGO, 2

38 #59585

DB2 - CONCEITOS E UTILIZAO OPERADORES DE CONCATENAO


string1 || string2 ABC || XYZ string1string2 ABCXYZ

19/11/98

TABELAX ( colunas varchar : SNOM e NOME ) SNOM JONES MARQUES . NOME JOHN FRANCO . MID P X .

SELECT SNOM || , || NOME|| || MID || . FROM TABELAX Resultado: JONES,JOHN P. MARQUES,FRANCO X. . . .

#59585

39

DB2 - CONCEITOS E UTILIZAO SELECT AVANADO


FUNES DE COLUNA Transforma dados de uma coluna em um nico valor. Dados numricos SUM Total dos valores de uma coluna AVG Mdia dos valores de uma coluna Quaisquer tipos MIN MAX COUNT de dados Menor valor de uma coluna Maior valor de uma coluna Nmero de ocorrncias

19/11/98

Notas: Informaes detalhadas no podem ser mostradas. Por exemplo, se for pedida a mdia salarial por departamento, os valores da coluna NOME no podem ser mostrados. Nulos so ignorados nos clculos.

40 #59585

DB2 - CONCEITOS E UTILIZAO


SUM AVG MAX MIN

19/11/98

Exemplo: SELECT SUM(SALARIO), AVG(SALARIO), MIN(COMIS), MAX(COMIS) FROM x.staff WHERE DEPT = 66 Resultado: 86076.20 17215.24 55.50 844.00

Notas: Geram um nico valor a partir de um conjunto de valores de uma nica coluna. O resultado no contm detalhes de linhas individuais. Podem ser pedidas mais de um funo para a mesma coluna, conforme o exemplo. Nulos so excludos. Preciso (parte inteira, casa decimal) deriva da coluna. Para a funo AVG de uma coluna DECIMAL(p,s) o resultado ter preciso. Expresses do seguinte tipo tambm podem ser argumento de uma funo de coluna. Exemplo: AVG(SALARIO + COMIS)

#59585

41

DB2 - CONCEITOS E UTILIZAO


COUNT COUNT(*)

19/11/98

Nmero de linhas que satisfazem a condio WHERE Nmero de valores diferentes na coluna Nulos no so contados.

COUNT(DISTINCT coluna)

Contar as pessoas cujo salrio exceda $ 18.000 e contar os seus respectivos departamentos. Mostre a mdia salarial. SELECT COUNT(DISTINCT DEPT), COUNT(*), AVG(SALARIO) FROM x.staff WHERE SALARIO > 18000 Resultado: 8 16 19604.190625

SELECT AVG(COMIS), SUM(COMIS) FROM x.staff Resultado: 513.31 12319.45

LITERAIS SELECT MED: AVG(COMIS), SOMA: SUM(COMIS) FROM x.staff Resultado: MED: Notas: Literais podem ser mostradas no resultado de um SELECT So Particularmente teis quando usadas com funes de coluna que no exibem cabealhos. 513.31 SOMA: 12319.45

42 #59585

DB2 - CONCEITOS E UTILIZAO


GROUP BY

19/11/98

Com o GROUP BY, a funo de coluna calcula um valor para cada AGRUPAMENTO. SELECT DEPT, SUM(SALARIO) as TOTSAL, SUM(COMIS) as TOTCOM FROM x.staff WHERE CARGO <> GER GROUP BY DEPT Resultado: DEPT 15 20 38 : TOTSAL 41269.53 45928.60 59778.80 : TOTCOM 1468,70 867.15 1913.30 :

Notas: A Funo desta clusula mostrar informaes calculadas por grupo de dados. Note que o resultado classificado. Isto porque o GROUP BY classifica a tabela numa fase intermediria para facilitar o clculo para os grupos. A classificao se d em ordem ascendente a menos que exista um ndice definido para a coluna. Neste caso a classificao no feita. A sequncia obedecer a sequncia do ndice que pode estar definida como sendo de ordem descendente.

#59585

43

DB2 - CONCEITOS E UTILIZAO


GROUP BY ... ORDER BY Podemos alterar a ordem de classificao SELECT DEPT, SUM(SALARIO) AS TOTSAL, SUM(COMIS) AS TOTCOM FROM x.staff WHERE CARGO <> GER GROUP BY DEPT ORDER BY 3

19/11/98

Resultado: DEPT 20 . 15 . 38 TOTSAL 45928.60 . 41269.53 . 59778.80 TOTCOM 867.15 . 1468.70 . 1913.30

Notas: Podemos fazer GROUP BY sobre mltiplas colunas. Isto faz com que sejam formados subgrupos dentro de grupos. GROUP BY DEPT, CARGO Colunas GROUP BY no precisam ser referenciadas pelo SELECT. Mas colunas referenciadas pelo SELECT que no sejam funo precisam ser agrupadas pelo GROUP BY. Isto um erro muito frequente. Resultado contm uma linha sumrio para cada grupo. Todos os valores nulos so considerados como um grupo.

44 #59585

DB2 - CONCEITOS E UTILIZAO


GROUP BY ... HAVING

19/11/98

Condies sobre grupos SELECT . . . WHERE . . . GROUP BY . . . HAVING . . . FROM . . .

FILTROS

WHERE HAVING

- Escolhe linhas - Escolhe grupos

SELECT DEPT, SUM(SALARIO) AS TOTSAL FROM x.staff GROUP BY DEPT DEPT 10 15 20 38 42 : TOTSAL 83463.45 61929.33 64286.10 77285.55 58369.05 :

SELECT DEPT, SUM(SALARIO) AS TOTSAL FROM x.staff GROUP BY DEPT HAVING SUM(SALARIO) > 65000 DEPT 10 38 : TOTSAL 83463.45 77285.55 :

#59585

45

DB2 - CONCEITOS E UTILIZAO


EXEMPLOS DE HAVING(Continuao)

19/11/98

Mdia salarial por departamento. Considerar apenas os no-gerentes dos departamentos com mais de 3 pessoas sem cargo gerencial. SELECT DEPT, AVG(SALARIO) AS MEDIASAL FROM x.staff WHERE CARGO <> GER HAVING COUNT(*) > 3 Mdia salarial por departamento em ordem decrescente de mdia. Considerar apenas os no-gerentes dos departamentos compostos por pessoas com experincia mnima de 5 anos.

SELECT DEPT, AVG(SALARIO) AS MEDIASAL FROM x.staff WHERE CARGO <> GER GROUP BY DEPT HAVING MIN(ANOS) >= 5 ORDER BY 2 DESC

Notas: Primeiro exemplo mostra que o SELECT e o HAVING podem usar funes diferentes. O Segundo exemplo ilustra que a tabela resultante pode ser classificada.

46 #59585

DB2 - CONCEITOS E UTILIZAO


SUMRIO FUNES DE COLUNA Funes de colunas s podem ser especificados em: SELECT HAVING SELECT pode especificar somente: Funo de Colunas Colunas especificadas no GROUP BY

19/11/98

HAVING pode especificar: Funo de colunas sobre qualquer coluna contida numa tabela especificada na FROM.

Funes de Colunas no podem ser embutidas uma dentro da outra

FUNES ESCALARES

Transforma um nico valor em outro valor. Funes STRING Funes de converso Funes DATE/TIME
Notas: Ao contrrio das Funes de colunas que transformam um conjunto de valores de uma coluna num nico valor, as funes Escalares operam somente sobre um nico valor. Funes escalares podem ser embutidas uma dentro da outra. Exemplo: SUBSTR(SUBSTR(...)...) Funes de colunas podem ser argumento de uma funo escalar. Exemplo: MAX(SUBSTR(...))

#59585

47

DB2 - CONCEITOS E UTILIZAO


SUBSTR(string, incio, comprimento)

19/11/98

SELECT DEPTNOME, SUBSTR(DEPTNOME,1,4) as NOMEPARC FROM x.org Resultado: DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA . NOMEPARC MATR CAMP RIO MINA BAHI .

SELECT DEPTCOD, DIVISO FROM x.org WHERE SUBSTR(DIVISO,4) = ESTE

Resultado: DEPTCOD 15 20 38 DIVISO SUDESTE SUDESTE SUDESTE

Notas: Se o Comprimento no for especificado, a funo pega todo o resto. Se a posio do incio ultrapassar o final do string teremos erro. Se o incio + comprimento ultrapassar o final do string teremos erro. Substring de nulo nulo.

48 #59585

DB2 - CONCEITOS E UTILIZAO


LENGTH

19/11/98

SELECT NOME, LENGTH(NOME) AS TAMNOME, CARGO, LENGTH(CARGO) AS TAMCAR FROM x.staff

Resultado: NOME SANTANA ORSINI GONZALES . TAMNOME CARGO 7 GER 6 VENDAS 8 VENDAS . . TAMCAR 6 6 6 .

Notas: Fornece o tamanho de uma coluna do tipo caracter. Se o argumento nulo, o resultado tambm ser nulo.

#59585

49

DB2 - CONCEITOS E UTILIZAO


VALUE Dada uma lista de argumentos, mostra o primeiro no nulo SELECT ID, COMIS, VALUE(COMIS, 0) FROM x.staff Resultado: ID 10 20 30 . COMIS 612.45 . 0.00 612.45 0.00 .

19/11/98

Notas: Dada uma lista de argumentos, esta funo faz a varredura da esquerda para a direita at encontrar o primeiro valor no nulo. Todos os argumentos devem ter data types comparveis (todos numricos ou todos caracteres). Se todos argumentos forem nulos, o resultado ser nulo.

50 #59585

DB2 - CONCEITOS E UTILIZAO


FUNES DE CONVERSO

19/11/98

Converte um tipo de representao em outro. DECIMAL, FLOAT, INTEGER DIGITS HEX Nmero - Nmero Nmero - Alfa Hexadecimal - Alfa

SELECT DECIMAL(SAL,9,1), INTEGER(SAL) FROM EMP WHERE ID = 55 Se coluna SAL (DEC (7,2)): 17506.75

17506.7

17506

Notas: DECIMAL, FLOAT, INTEGER: Converte dados numricos DIGITS: Representao alfanumrica de um valor numrico HEX: Representao hexadecimal de um argumento. Cada digito hexadecimal representada por 2 caracteres do string resultante.

#59585

51

DB2 - CONCEITOS E UTILIZAO


DADOS DATE/TIME

19/11/98

DATE, TIME, TIMESTAMP armazenados como decimal compactado sem sinal Data Types DATE TIME TIMESTAMP Formato Interno aaaammdd hhmmss aaaammddhhmmssnnnnnn

Programas lidam s com FORMATO EXTERNO: string de caracteres Formato ISO USA EUR JIS Formato TIME hh.mm.ss hh.mm AM/PM hh.mm.ss hh:mm:ss Tamanho 8 bytes 8 bytes 8 bytes 8 bytes Formato Date aaaa-mm-dd mm/dd/aaaa dd.mm.aaaa aaaa.mm.dd Tamanho 10 bytes 10 bytes 10 bytes 10 bytes

52 #59585

DB2 - CONCEITOS E UTILIZAO


ARITMTICA DATE/TIME Somente adio e subtrao Pode usar MIN, MAX, COUNT No pode usar SUM e AVG DURACAO DATE/TIME DURAO SIMPLES Horrio + ou - Horrio data + ou - data

19/11/98

Durao em hhmmss (packed decimal(8,0)) Durao em aaaammdd (packed decimal(8,0))

Durao Rotulada Nmero n seguida da palavra chave: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MICROSECONDS Somando/Subtraindo durao DATACOL1 + 3 MONTHS Resulta em Data TEMPCOL1 - 30 MINUTES - 20 SECONDS Resulta em tempo TSTCOL + 2 DAYS - 3 HOURS TMSTCOL + 50000 MICROSECONDS Subtraindo datas e tempos DATACOL1 - DATACOL2 DATACOL1 - 25.12.1998 TEMPCOL1 - TEMPCOL2 TEMPCOL1 - 11.30.00

#59585

53

DB2 - CONCEITOS E UTILIZAO


EXEMPLOS ARITMTICA DATE/TIME

19/11/98

Tabela DT PROJCOD AX001 AX002 AX003 DATAINI DATAFIM HRINI HRFIM 31.01.1990 31.03.2005 00:00:00 15:30:00 29.02.1988 31.08.1988 00:00:00 00:00:00 01.02.1987 01.02.1987 16:00:00 23:41:59

SELECT PROJCOD, DATAINI + 1 YEAR AS DATAINI, DATAFIM - 2 MONTHS AS DATAFIM ...

Resultado: PROJCOD AX001 AX002 AX003 DATAINI DATAFIM 31.01.1991 31.01.2005 28.02.1989 30.06.1988 01.02.1988 01.12.1986

SELECT PROJCOD, DATAFIM - DATAINI AS aaaammdd, HRFIM - HRINI AS hhmmss ...

Resultado: PROJCOD AX001 AX002 AX003 aaaammdd 00150200 00000602 00000000 hhmmss 153000 000000 074159

54 #59585

DB2 - CONCEITOS E UTILIZAO


FUNES ESCALARES DATE/TIME CHAR: Controla formato externo de dados DATE/TIME SELECT CHAR(HRFIM,ISO) AS HR_ISO, CHAR(HRFIM,USA) AS HR_USA FROM DT WHERE PROJCOD = AX001 Resultado: HR_ISO 15.30.00 HR_USA 03:30 PM

19/11/98

DAY, MONTH, YEAR HOURS, MINUTE, SECOND MICROSECOND Extrai parte de uma data, horrio ou timestamp Resulta num inteiro binrio. SELECT DAY(DATAINI) AS DIA, MONTH(DATAINI) AS MS, YEAR(DATAINI) AS ANO FROM DT WHERE YEAR(DATAINI) > 1988

Resultado: DIA 31 MS 1 ANO 1990

#59585

55

DB2 - CONCEITOS E UTILIZAO


FUNES ESCALARES DATE/TIME(Continuao) DAYS Nmero de dias desde 31/01/0000

19/11/98

SELECT DATAFIM - DATAIN AS DATAS, DAYS(DATAFIM) DAYS(DATAIN) AS NU_DIAS FROM DT WHERE PROJCOD = AX001 Resultado: DATAS 00150228 aaaammdd NU_DIAS 5538 (n. dias)

DATE, TIME Extrai data ou horrio de um timestamp.

CURRENT DATE Data de hoje CURRENT TIME Horrio do momento. CURRENT TIMESTAMP Data e horrio do momento convertido para Timestamp.

56 #59585

DB2 - CONCEITOS E UTILIZAO JOIN DE TABELAS


Mesmo domnio

19/11/98

ID 10 20 30 40 50 60 70 80 90 100 .

NOME SANTANA ORSINI DANTAS OBRIEN SOUZA SUZUKI ALMEIDA JAMES KOONITZ PLOTZ .

DEPT 20 20 38 38 15 38 15 20 42 42 .

DEPTCOD 10 15 20 38 42 51

DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA RECIFE

GERENTE 160 50 10 30 100 140

Esta tcnica serve para obtermos informaes que esto espalhadas em uma ou mais tabelas. Tabelas so relacionadas via dados comuns Join implementado pelas clusulas FROM Resultado um subconjunto do produto cartesiano das tabelas.

#59585

57

DB2 - CONCEITOS E UTILIZAO


JOIN DE TABELAS(Continuao)

19/11/98

Listar o nome dos departamentos e seus respectivos gerentes. SELECT DEPTNOME, NOME FROM x.staff, x.org WHERE GERENTE = ID

Resultado: DEPTNOME RIO MINAS CAMPINAS . NOME SANTANA DANTAS SOUZA .

Listar o nome dos departamentos da diviso Sudeste e seus respectivos gerentes. SELECT DEPTNOME, NOME FROM x.staff, x.org WHERE DIVISAO = SUDESTE AND GERENTE = ID

ATENO:- Procure no fazer JOIN de tabelas sem a clusula WHERE. SELECT A1, B1 FROM TBLA, TBLB Produto Cartesiano.

A1 A B C

A2

A3

R1 A A B B C C

R2 X Y X Y X Y

B1 X Y

B2

B3

58 #59585

DB2 - CONCEITOS E UTILIZAO


JOIN COM MAIS DE DUAS TABELAS SELECT ID, NOME, DEPT, DEPTNOME, CODPEDIDO FROM x.staff, x.org, x.vendas WHERE DEPT = DEPTCOD AND ID=COD_RVENDA Resultado: ID 20 20 20 20 40 . NOME ORSINI ORSINI ORSINI ORSINI OBRIEN . DEPT 20 20 20 20 38 . DEPTNOME RIO RIO RIO RIO MINAS .

19/11/98

CODPEDIDO 3456 6667 3580 7010 4567 .

QUALIFICADORES COD 10 20 . NOME SANTANA ORSINI . DEPT 20 20 . CARGO GER VENDA . COD 10 . 10 DEPTNOME MATRIZ . RIO GERENTE 160 . 10

Listar o nome dos gerentes, e respectivos nome e cdigo de departamentos. SOLUO: Qualificar com o nome da tabela SELECT NOME, x.org.CODIGO, DEPTNOME FROM x.staff, x.org WHERE CARGO = GER AND DEPT = x.org.CODIGO Qualificador correlacionado

SELECT NOME, Z.CODIGO, DEPTNOME FROM x.staff, x.org Z WHERE CARGO = GER AND DEPT = Z.CODIGO

#59585

59

DB2 - CONCEITOS E UTILIZAO


QUALIFICADORES Notas:

19/11/98

Aqui neste exemplo temos um caso onde duas colunas de tabelas distintas tem o mesmo nome. A soluo para distingui-las qualificar o nome da coluna com o nome da tabela. Outra tcnica a utilizao do qualificador correlacionado onde atribumos um rtulo tabela. No nosso caso exemplo a tabela x.org foi rotulada como Z. Assim a coluna Z.CODIGO uma referncia coluna x.org.CODIGO. Esta rotulao no permanente e vale somente durante a execuo da instruo SELECT que faz uso da mesma.

60 #59585

DB2 - CONCEITOS E UTILIZAO


JOIN DE UMA TABELA COM ELA MESMA Liste os empregados que ganham mais que os seus gerentes CONCEITUALMENTE: 1. Obter um empregado da VEMPR MATR NOME ... SALARIO 150 OLIVEIRA 19456.50 2. Obter informaes do gerente da VEMPR MATR NOME ... SALARIO 140 SANTANA 18357.50 3. Comparar o salrio dos dois

19/11/98

...

GER 140

...

GER 050

4. Se a condio satisfeita, colocar a linha na tabela resultante e partir para o prximo empregado.

Soluo: SELECT E.NOME, E.SALARIO, G.NOME, G.SALARIO FROM VEMPR E, VEMPR G WHERE E.GER = G.MATR AND E.SALARIO > G.SALARIO

Resultado: NOME OLIVEIRA . .

SALARIO NOME 19456.50 SANTANA . . . .

SALARIO 18357.50 . .

#59585

61

DB2 - CONCEITOS E UTILIZAO INNER JOIN

19/11/98

Uma outra maneira de codificar o JOIN entre duas tabelas SELECT DEPTNOME, NOME FROM x.staff INNER JOIN x.org ON GERENTE = ID Resultado: DEPTNOME RIO MINAS CAMPINAS . NOME SANTANA DANTAS SOUZA .

Nota: Quando utilizamos a clusulas JOIN deve mudar o predicado WHERE por ON.

TABELAS EXEMPLOS: EMPL EMPNO NOME 10 HAAS 150 ADAMSON 20 THOMPSON 250 SMITH 100 SPENSER 70 PILASKI 140 NATZ

DEPTO DEPTNOME SPIFFY COMPUTER DEVELOPMENT SOFTWARE ADMINISTRATION BRANCH OFFICE

CODEMP 10 100 700 -

62 #59585

DB2 - CONCEITOS E UTILIZAO OUTER JOIN

19/11/98

Seleciona todas as linhas de um INNER JOIN mais as linhas no selecionadas de ambas as tabelas. RIGHT OUTER JOIN Seleciona as linhas da tabela direita. LEFT OUTER JOIN Seleciona as linhas da tabela esquerda. FULL OUTER JOIN Seleciona as linhas de ambas as tabelas. SELECT NOME, DEPTNOME FROM EMPL RIGHT OUTER JOIN DEPTO ON EMPNO = CODEMP SELECT NOME, DEPTNOME FROM EMPL LEFT OUTER JOIN DEPTO ON EMPNO = CODEMP Resultados: RIGHT OUTER JOIN NOME DEPTNOME
HAAS SPENSER PULASKI SPIFFY COMPUTER DEVELOPMENT SOFTWARE ADMINISTRATION BRANCH OFFICE

LEFT OUTER JOIN NOME DEPTNOME


HAAS ADAMSON THOMPSON SMITH SPENSER PULASKI NATZ SPIFFY COMPUTER SOFTWARE ADMINISTRATION -

#59585

63

DB2 - CONCEITOS E UTILIZAO EXPRESSES CASE

19/11/98

Em tempo de retorno do resultado da Query podemos atribuir valores a serem mostrados/exibidos a determinados retornos, o exemplo abaixo nos dar uma boa noo desta facilidade. SELECT PARTNO, DESCRIPT, COLOR, CASE WHEN SIZE = S THEN Small WHEN SIZE = M THEN Medium WHEN SIZE = L THEN Large WHEN SIZE = X THEN Xlarge ELSE DESCONHECIDO END AS SIZE, QTY FROM QTY <= REORDER_PT

Resultado: PARTNO 12-234 12-235 14-276

DESCRIPT SWEATER SWEATER JACKET

COLOR BLUE RED GREEN

SIZE SMALL MEDIUM DESCONHECIDO

QTY 18 22 9

Mais Expresses CASE Usando na clusulas WHERE ... WHERE (CASE WHEN SALARY = 0 THEN NULL ELSE COMM/SALARY END) > .25 Usando em Funes de colunas ... MIN (CASE WHEN QTY > 0 THEN QTY ELSE NULL END)

64 #59585

DB2 - CONCEITOS E UTILIZAO UNION


UNION junta as tabelas resultado SELECT A1, A4 FROM TBLA WHERE A2 = Z Resultado

19/11/98

UNION SELECT B3, B4 + B2 FROM TBLB WHERE B1 >= N Resultado

Notas: Esta tcnica faz a unio de uma ou mais tabelas resultado. Query complexas podem ser feitas usando o UNION. A Quantidade de colunas deve ser a mesma em todos os SELECTs. Os data types das colunas correspondentes devem ser iguais. O tamanho das colunas correspondentes podem ser diferentes. O operador UNION une as tabelas resultantes e elimina as linhas duplicadas, que implica num sort. operador UNION ALL tambm une tabelas mas no elimina linha duplicadas. No chama o SORT portanto. Para os nomes das colunas no cabealho so adotadas as do primeiro bloco de SELECT.

#59585

65

DB2 - CONCEITOS E UTILIZAO


UNION(Continuao)

19/11/98

A faixa de salrio dos atendentes atingiria a faixa de salrios do pessoal de vendas se fosse dado um aumento de 17% e 2% respectivamente ? SELECT CARGO, SALARIO * 1.17 AS SALARIO FROM x.staff WHERE CARGO = ATEND UNION SELECT CARGO, SALARIO * 1.02 FROM x.staff WHERE CARGO = VENDAS ORDER BY 2 DESC Resultado: CARGO VENDAS . . VENDAS ATEND VENDAS SALARIO 21420.0000 . . 17144.4660 16918.2000 16832.8866

SELECT NOME FROM X.CANDIDATOS WHERE ENDERECO LIKE %SP UNION ALL UNION SELECT SOBRENOME FROM X.ENTREVISTADOS WHERE SIT = REP Cabealho do
primeiro SELECT

Resultado: NOME JACOBS MARQUES ARANTES SILVA MARQUES JACOBS NOME ARANTES JACOBS MARQUES SILVA

66 #59585

DB2 - CONCEITOS E UTILIZAO SUBQUERY

19/11/98

um SELECT embutido dentro de um SELECT O resultado de uma subquery usado pelo SELECT EXTERNO Exemplo de SUBQUERY. Listar empregados cujo departamento esteja subordinado ao departamento A00

SNOME

DEPARTAMENTO

DCOD

DSUPER

SELECT SNOME, DEPARTAMENTO FROM EMP WHERE DEPARTAMENTO IN (SELECT DCOD FROM DEPT WHERE DSUPER = A00)

RESULTADO SOMENTE DO SELECT DE NVEL MAIS ALTO

RESULTADO DA SUBQUERY RETORNADO PARA O NVEL SUPERIOR

Consideraes SUBQUERY: 1. Pode ser usada no WHERE ou no HAVING 2. Pode ser encadeado 3. A escolha do operador do SELECT externo depende da quantidade de linhas do SUBQUERY. 4. Deve estar a direita do operador na condio de seleo. 5. Deve ser colocado entre parnteses. 6. O SUBQUERY deve selecionar apenas um coluna. 7. O SUBQUERY pode retornar uma ou mais linhas e isto acaba determinando o operador a ser usado na condio de procurar. 8. No pode conter UNION, UNIN ALL ou ORDER BY.

#59585

67

DB2 - CONCEITOS E UTILIZAO


9. SUBQUERY conhecido como SUBSELECT. SUBQUERY DE UMA LINHA

19/11/98

Listar os funcionrios com salrio superior mdia da companhia SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > (SELECT AVG(SALARIO) FROM x.staff)

Resultado: NOME SANTANA ORSINI SALARIO 18357.50 18171.25

Mostrar o funcionrio com o maior salrio.

SELECT NOME, SALARIO FROM x.staff WHERE SALARIO = (SELECT MAX(SALARIO) FROM x.staff)

Resultado: NOME MOLINARI SALARIO 22959.20

68 #59585

DB2 - CONCEITOS E UTILIZAO


SUBQUERY COM VRIAS LINHAS: ALL

19/11/98

Lista classificada dos funcionrios com salrio superior a toda e qualquer mdia salarial departamental. Encontrar mdia salarial para cada departamento. (SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) Compare o salrio de cada funcionrio com a lista devolvida pela SUBQUERY. SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > ALL (SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) ORDER BY NOME Resultado: NOME FRAYE GRAHAM JONES MOLINARE SALARIO 21150.00 21000.00 21234.00 22959.20

Lista classificada dos funcionrios com salrio maior que a mdia salarial de qualquer departamento. Encontrar a mdia salarial para cada departamento. Compare o salrio e cada funcionrio com a lista devolvida pela SUBQUERY. SELECT NOME, SALARIO FROM x.staff WHERE SALARIO > ANY(SELECT AVG(SALARIO) FROM x.staff GROUP BY DEPT) ORDER BY NOME Resultado: NOME DANIELS DAVIS EDWARDS SALARIO 19260.25 15454.50 17844.00

#59585

69

DB2 - CONCEITOS E UTILIZAO


IN Lista de gerentes da diviso Sul

19/11/98

SELECT DEPT, NOME FROM x.staff WHERE ID = ANY (SELECT GERENTE FROM x.org WHERE DIVISAO = SUL) SUBQUERY Resulta numa lista de Gerentes da diviso SUL IN equivale a um srie de OR ... = sobre uma coluna =ANY pode substituir IN SELECT DEPT, NOME FROM x.staff WHERE ID IN (SELECT GERENTE FROM x.org WHERE DIVISAO = SUL)

HAVING COM SUBQUERY Liste os departamentos cuja mdia salarial seja inferior mdia da companhia. Ignore os gerentes. Mostre as mdias e ordene pelas mesmas. SELECT DEPT, AVG(SALARIO) FROM x.staff WHERE CARGO <> GER GROUP BY DEPT HAVING AVG(SALARIO) < (SELECT AVG(SALARIO) FROM x.staff WHERE CARGO <> GER) ORDER BY 2 DESC Resultado: DEPT 66 51 84 20 16880.175000000 16235.200000000 15443.000000000 15309.530000000

70 #59585

DB2 - CONCEITOS E UTILIZAO


SUBQUERY CORRELACIONADA

19/11/98

Listar os empregados com salrio superior mdia de seus respectivos departamento. SELECT NOME, SALARIO FROM x.staff CV WHERE SALARIO > (SELECT AVG(SALARIO) FROM x.staff WHERE DEPT = CV.DEPT) Uma SUBQUERY correlacionada executada a cada linha devolvida ao SELECT externo!

Listar os gerentes ganhando menos que $18.000 se existir pelo menos um gerentes com salrio superior $22.000.

SELECT ID, NOME, SALARIO, DEPT FROM x.staff WHERE CARGO = GER AND SALARIO < 18000 AND EXISTS(SELECT * FROM x.staff WHERE CARGO = GER AND SALARIO > 22000) ID 30 NOME MARENGHI SALARIO 17506.75 DEPT 38

Verdadeiro/Falso no SELECT interno Determina se o SELECT externo ser executado. Notas: Este um operador que tem como argumento um SELECT. Esta SUBQUERY no devolve nenhuma tabela resultante. EXISTS devolve V ou F e como faz parte de uma condio de procura, determina uma eventual execuo ou no do SELECT externo. EXISTS pode ser negado por um NOT.

#59585

71

DB2 - CONCEITOS E UTILIZAO


MANUTENO DE DADOS Insert de uma linha INSERT

19/11/98

INSERT INTO PROJ VALUES(MA2114, , B01, , NULL, CURRENT DATE, NULL) OU INSERT INTO PROJ (DEPT, PCODIGO, PNOME, RESP, DATAINI) VALUES(B01, MA2114, , , CURRENT DATE) Resultado:
PCODIGO ........... OP2011 OP2012 OP2013 MA2114

PNOME .............. SUPORTE APLICACAO DB/DC

DEPT ....... E21 E21 E21 B01

RESP ........ 320 330 340

EQUIPE ............. 001.00 001.00 001.00 ?

DATAINI ................. 25.12.1998 25.12.1998 25.12.1998 26.12.1998

DATAFIM ................ 01.02.1999 01.02.1999 01.02.1999 ?

INSERT de mltiplas linhas TESTPROJ


PCOD

PROJNOME

DEPT

RESP

EQUIPE

DATAINI

DATAFIM

INSERT INTO TESTPROJ SELECT * FROM PROJ WHERE DEPT LIKE B% OR DEPT IN (E11. E21, E31) Resultado
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013

PROJNOME ...... OPERAO SUPORTE II ..... ..... .....

DEPT B01 E11 E21 E21 E21 E21

RESP 20 90 100 320 330 340

EQUIPE 001.00 005.00 004.00 001.00 001.00 001.00

DATAINI 01.01.1987 01.01.1986 01.01.1982 01.01.1982 01.01.1982 01.01.1982

DATAFIM 15.09.1987 01.05.1988 01.02.1988 01.02.1988 01.02.1988 01.02.1988

72 #59585

DB2 - CONCEITOS E UTILIZAO


MANUTENO DE DADOS Update de colunas Antes:
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013

19/11/98

UPDATE

PROJNOME ...... OPERAO SUPORTE II ..... ..... .....

DEPT B01 E11 E21 E21 E21 E21

RESP 20 90 100 320 330 340

EQUIPE 001.00 005.00 004.00 001.00 001.00 001.00

DATAINI 01.01.1987 01.01.1986 01.01.1982 01.01.1982 01.01.1982 01.01.1982

DATAFIM 15.09.1987 01.05.1988 01.02.1988 01.02.1988 01.02.1988 01.02.1988

UPDATE TESTPROJ SET EQUIPE = EQUIPE*2, DATAFIM=NULL, DATAINI=02.01.1999 WHERE DEPT = B01 Depois:
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013

PROJNOME ...... OPERAO SUPORTE II ..... ..... .....

DEPT B01 E11 E21 E21 E21 E21

RESP 20 90 100 320 330 340

EQUIPE 002.00 005.00 004.00 001.00 001.00 001.00

DATAINI 02.01.1999 01.01.1986 01.01.1982 01.01.1982 01.01.1982 01.01.1982

DATAFIM ? 01.05.1988 01.02.1988 01.02.1988 01.02.1988 01.02.1988

Um subconjunto de linhas UPDATE PESSOAL SET SALARIO = SALARIO + 300 WHERE CARGO = ATEND Todas as linhas: UPDATE PESSOAL SET ANOS = ANOS + 1

#59585

73

DB2 - CONCEITOS E UTILIZAO


MANUTENO DE DADOS Antes:
PCOD PL2100 OP1010 OP2010 OP2011 OP2012 OP2013

19/11/98

DELETE

PROJNOME ...... OPERAO SUPORTE II ..... ..... .....

DEPT B01 E11 E21 E21 E21 E21

RESP 20 90 100 320 330 340

EQUIPE 002.00 005.00 004.00 001.00 001.00 001.00

DATAINI 02.01.1999 01.01.1986 01.01.1982 01.01.1982 01.01.1982 01.01.1982

DATAFIM ? 01.05.1988 01.02.1988 01.02.1988 01.02.1988 01.02.1988

DELETE FROM TESTPROJ WHERE DEPT = B01

Depois:
PCOD OP1010 OP2010 OP2011 OP2012 OP2013

PROJNOME OPERAO SUPORTE II ..... ..... .....

DEPT E11 E21 E21 E21 E21

RESP 90 100 320 330 340

EQUIPE 005.00 004.00 001.00 001.00 001.00

DATAINI 01.01.1986 01.01.1982 01.01.1982 01.01.1982 01.01.1982

DATAFIM 01.05.1988 01.02.1988 01.02.1988 01.02.1988 01.02.1988

Eliminar todas as ocorrncias de uma tabela DELETE FROM TESTPROJ Depois:


PCOD

PROJNOME

DEPT

RESP

EQUIPE

DATAINI

DATAFIM

74 #59585

DB2 - CONCEITOS E UTILIZAO

19/11/98

DDL

DATA DEFINITION LANGUAGE

#59585

75

DB2 - CONCEITOS E UTILIZAO


DDL

19/11/98

A Data Definition Language(DDL) faz parte das instrues SQL e dividese em trs grupos. 1. CREATE 2. ALTER 3. DROP Definio de objetos Alterao da definio dos objetos Eliminao de objetos

A execuo de DDL permitido somente auth-ids devidamente autorizados. O Criador (auth-id) do objeto normalmente o proprietrio (OWNER) do mesmo. Mas o DB2 permite que sejam criados objetos para outros authid, isto , posso criar objetos das quais no serei o proprietrio. O proprietrio de um objeto tem todos os privilgios sobre o mesmo. A equipe de suporte (SYSADM, SYSCTRL, DBADM) ou proprietrio do objeto o responsvel pela concesso de autorizao para acesso e/ou uso dos objetos. A execuo das instrues ALTER ou DROP esto reservadas equipe de suporte ou o proprietrio dos objetos.

76 #59585

DB2 - CONCEITOS E UTILIZAO


STORAGE GROUP

19/11/98

O nome de um STORAGE GROUP no deve ultrapassar 8 caracteres Podem ser especificados at 133 volumes do mesmo device type no parmetro VOLUMES. VCAT aponta para o catlogo ICF que qualificar os Datasets dos Tablespaces e dos Indexspaces. Exemplos: Para criao de um Storage Group CREATE STOGROUP CURXSG01 VOLUMES(PRD510) VCAT DES; COMMIT; Alterao de um Storage Group: ALTER STOGROUP CURXSG01 ADD VOLUMES(PRD512, PRD513) REMOVE VOLUMES(PRD510); COMMIT; ALTER STOGROUP CURXSG01 VCAT CUR; COMMIT;

#59585

77

DB2 - CONCEITOS E UTILIZAO


DATABASE

19/11/98

O Database uma definio lgica, onde podemos agrupar todos os Tablespaces, Tabelas, ndices com o mesmo critrio de administrao. Autorizao necessria para Criao de um DATABASE Privilgio de CREATEDBA Privilgio de CREATEDBC Autoridade de SYSADM ou SYSCTRL

CREATE DATABASE CURXSG01 BUFFERPOOL BP0 STOGROUP CURXSG01; COMMIT;

Parmetros do Create DATABASE 1. BUFFERPOOL Indica o Buffer pool default para os Tablespaces e ndices deste Database. 2. STOGROUP Indica o Stogroup default para todos os Objetos deste Database.

78 #59585

DB2 - CONCEITOS E UTILIZAO


TABLESPACE

19/11/98

uma VSAM LDS, onde sero definidas as tabelas. Existem 3 tipos de Tablespaces: 1. SIMPLES As pginas de seus datasets contm dados de uma ou mais tabelas. Aqui na CEF no utilizamos este tipo de Tablespace. 2. Segmentado dividido em segmentos que variam de 4 a 64 pginas e sempre em mltiplos de 4. E cada segmento s pode conter ocorrncias de uma nica tabela, tamanho mximo deste tipo de tablespace 2Gbytes. 3. Particionado Utilizada para tabelas com grande quantidade de dados, podendo chegar at 64Gbytes, assim distribudos: At 16 Parties Cada partio com 4Gbytes de 17 a 32 Parties Cada partio com 2Gbytes de 33 a 64 Parties Cada partio com 1Gbytes

Exemplo de Criao de Tablespace SEGMENTADO. CREATE TABLESPACE CURXTS01 IN CURXDB01 USING STOGROUP CURXSG01 PRIQTY 144 SECQTY 48 ERASE NO LOCKSIZE ANY BUFFERPOOL BP0 CLOSE NO FREEPAGE 4 PCTFREE 25 SEGSIZE 8; COMMIT;

ALTER TABLESPACE CURXDB01.CURXTS01 PRIQTY 240 USING STOGROUP CURXSG02; COMMIT;

#59585

79

DB2 - CONCEITOS E UTILIZAO


TABLESPACE Parmetros

19/11/98

PRIQTY, SECQTY - rea de alocao em Kbytes. LOCKSIZE - Tipo de Locking, as opes so: Any - o valor default , com este valor a deciso pelo Locking fica por conta do DB2. Tablespace - Locking pelo tablespace Table - Locking pela Tabela PAGE - Locking por pgina ROW - Locking por Linha ERASE - Especifica se o espao ocupado pelo datasets devem ser preenchidos com zero quando forem eliminados (DROP). CLOSE - Especifica se o Dataset do tablespace deve ser fechado quando no esta sendo utilizado. FREEPAGE - Especifica o intervalo de pginas que devem existir entre as pginas livres quando um tablespace carregado ou reorganizado. O intervalo pode variar de 0 255. Se o tablespace segmentado, o nmero deve ser menor que o tamanho do segmento. PCTFREE - Especifica qual a frao percentual das pginas que devem ser mantidas livres quando o tablespace carregado ou reorganizado. SEGSIZE - Se especificado, determina que o tablespace ser segmentado. O tamanho de um segmento dado em quantidade de pginas, deve ser inteiro mltiplos de 4, variando de 4 64. NUMPARTS - Parmetro mutuamente exclusivo como o SEGSIZE, quando especificado indica que o Tablespace ser Particionado, acompanhado de um nmero que indica a quantidade de parties. Este nmero pode variar de 1 64. Se nem SEGSIZE e nem NUMPARTS forem especificados, o Tablespace ser Simples.

80 #59585

DB2 - CONCEITOS E UTILIZAO


TABLE

19/11/98

um conjunto de linhas coma as mesmas colunas. Os atributos das colunas dever ser do tipo: NOT NULL NOT NULL WITH DEFAULT valor default NULL Preenchimento obrigatrio Quando no preenchido, assume o Preenchimento opcional

Definies para colunas numricas: SMALLINT Inteiros, valor entre -32768 a 32767 INTEGER Inteiros, valor entre -2147483648 a 2147483648 DECIMAL (x,y) x=Dgitos e y=Decimais, at 31 Dgitos FLOAT Ponto Flutuante 5.4E-79 TO 7.2E+75 Smallint uma halfword (2bytes) Integer uma fullword(4bytes) Decimal armazena nmeros em decimal compactado. A faixa de valores depende da quantidade de casas decimais. Definies para colunas alfanumricas: CHAR(x) String de tamanho fixo, mximo 254 caracteres VARCHAR(x) String de tamanho varivel, onde x pode variar de 0 a 4096 caracter. Uma pgina DB2 no totalmente utilizada para os dados pois existe um espao ocupado para informao de controle. Definies para colunas DBCS: GRAPHIC(x) String de tamanho fixo, mximo 127 caracteres. VARGRAPHIC(x) String de tamanho varivel, onde x pode variar de 0 a 2048 caracteres. Double Byte Caracter so caracteres especiais como ideogramas asiticos que requerem 2 bytes para serem identificados.

#59585

81

DB2 - CONCEITOS E UTILIZAO


TABLE CREATE TABLE SICUR.CURXTB01FUNCAO (CODIGO SMALLINT NOT NULL, DESC_FUNCAO CHAR(20) NOT NULL, DATA_INCLUSAO DATE NOT NULL, PRIMARY KEY (CODIGO)) IN CURXDB01.CURXTS01;

19/11/98

CREATE TABLE SICUR.CURXTB02CONCEITOS ( MATR CHAR(9) NOT NULL, ALUNO CHAR(30) NOT NULL. FUNCAO SMALLINT NOT NULL, NOTA SMALLINT , CLASSIFICACAO SMALLINT , PRIMARY KEY( MATR , ALUNO ), FOREIGN KEY (FUNCAO) REFERENCES SICUR.CURXTB01FUNCAO ON DELETE CASCADE) IN CURXDB01.CURXTS01; ALTER TABLE SICUR.CURXTB02CONCEITO ADD DT_PROVA DATE ; COMMIT; PRIMARY KEY Especifica a chave primria da tabela, sendo que a chave pode ser composta de at 64 colunas. O comprimento de uma chave primria no pode exceder 254 bytes. Apenas uma chave primria permitida por tabela. FOREIGN KEY Especifica a chave estrangeira da tabela. A definio de uma chave estrangeira deve ser igual tamanho e tipo de dados. A palavra chave REFERENCES identifica a tabela me (Parent table). A Palavra chave ON DELETE especifica a regra de deleo.

82 #59585

DB2 - CONCEITOS E UTILIZAO


NDICE utilizado para agilizar o acesso aos dados.

19/11/98

CREATE [ UNIQUE ] INDEX SICUR.CURXPX02 ON SICUR.CURXTB02CONCEITO (MATR ASC, ALUNO ASC) USING STOGROUP CURXSG02 PRIQTY 48 SECQTY 48 ERASE NO BUFFERPOOL BP1 CLOSE YES FREEPAGE 4 PCTFREE 15 CLUSTER; COMMIT; ALTER INDEX CURXPX02 USING STOGROUP CURXPX02 PRIQTY 192 CLOSE YES ; COMMIT;

Parmetros: UNIQUE Palavra chave que indica que o ndice no permite duplicidade nas colunas compostas neste ndice. Indica que o dados devem estar clusterizado pelo ndice

CLUSTER

#59585

83

DB2 - CONCEITOS E UTILIZAO


VIEW

19/11/98

A View pode poder um subconjuto de uma ou mais tabelas. Uma view um objeto lgico e assim, seus dados no ocupam espao fsico.

CREATE VIEW SIXXX.CURXVW01JUNCAO (CODIGO, FUNCAO, ALUNO) AS SELECT CODIGO, DESC_FUNCAO, ALUNO FROM SICUR.CURXTB02CONCEITO INNER JOIN SICUR.CURXTB01FUNCAO ON CODIGO = FUNCAO; COMMIT;

SYNONYM E ALIAS CREATE SYNONYM FUNCAO FOR SICUR.CURXTB01FUNCAO; COMMIT; CREATE ALIAS CONCEITO FROM SICUR.CURXTB02CONCEITO; COMMIT; Diferena entre e o SYNONYM e ALIAS: SYNONYM restrita a um AUTH-ID. ALIAS de uso compartilhado a todos.

84 #59585

DB2 - CONCEITOS E UTILIZAO DROP

19/11/98

Usado para eliminar qualquer objeto criado a partir de um comando CREATE no DB2.

DROP DATABASE CURXDB01 Quando se elimina um Database, todos os objetos vinculados ele tambm so eliminados, tais como TABLESPACE, TABLE, INDEX, VIEW, ALIAS e SYNONYM. DROP TABLESPACE CURXDB01.CURXTS01 A sua eliminao acarreta a eliminao de Table, Index, View, Alias, Synonym e Relacionamentos vinculadas a qualquer objeto deste Tablespace, deleta fisicamente do Disco. DROP TABLE SICUR.CURXTB01FUNCAO A eliminao vem acompanhada da eliminao de Index, View, Alias, Synonym e Relacionamento. DROP INDEX SICUR.CURXPX01 Elimina o ndice, inclusive o INDEXSPACE. DROP VIEW SICUR.CURXVW01 Elimina logicamente do DB2 o apontamento dos dados para a VIEW. DROP SYNONYM/ALIAS CONCEITO Elimina Sinnimo/Alias DROP STOGROUP CURXSG01 S podemos eliminar este objeto se o mesmo no estiver mais sendo referenciado por um outro objeto.

#59585

85

DB2 - CONCEITOS E UTILIZAO SQL ESTTICO vs. SQL DINMICO


ESTTICO ..................................................... ..................................................... Exec SQL Delete from Dept End-Exec. ..................................................... ..................................................... .....................................................

19/11/98

Instruo SQL Completa Fixo

Estratgia de acesso pr-estabelecida.

DINMICO ..................................................... Var . ..................................................... Exec SQL Execute Immediate : Var End-Exec ..................................................... Instruo SQL fornecida durante a execuo. Estratgia de acesso pr-estabelecida.

Delete from Dept

Notas: A diferena entre o SQL esttico e o dinmico est no instante em que o plano montado. No esttico o plano montado antes da primeira execuo da instruo. No SQL dinmico a instruo parcial ou totalmente desconhecida e o DB2 no tem como determinar previamente a estratgia de acesso, validar autorizao, etc. Uma instruo onde o desconhecido apenas o valor que est sendo comparado com uma coluna na clusulas WHERE candidata a esttico. Exemplo: WHERE SALARIO = :SAL AND NOME LIKE :STR

86 #59585

DB2 - CONCEITOS E UTILIZAO


PROGRAMAO EM SQL

19/11/98

Para podermos trabalhar com o SQL dentro de programas em linguagens tradicionais, devemos codific-lo usando delimitadores especiais. Esta tcnica conhecida como SQL embutido e assemelha-se ao COMMAND LEVEL do CICS. O SQL trabalha com tabelas e linhas. uma linguagem desenvolvida para manipular conjuntos. J as linguagens tradicionais trabalham com arquivos e registros e no conseguem reconhecer tabelas e linhas. Para simularmos um arquivo com seus registros existe o CURSOR do DB2. Assim o programa pode acessar a manipular linhas de uma tabela como se estivesse trabalhando com um arquivo comum. As colunas no so manipuladas diretamente pelas linguagens tradicionais. Para contornar isto so utilizadas as chamadas variveis HOST que Hospedam o contedo.

Instruo SQL entre delimitadores. EXEC SQL DELETE FROM DEPT END-EXEC Os compilador das linguagens tradicionais no entende instrues SQL. As instrues SQL devem ser embutidas dentro de um programa separados por delimitadores para que possam ser tratados antes de serem submetidas ao compilador. Cada linguagem tem seu delimitador prprio para isolar as instrues SQL. O delimitador que indica o incio de uma instruo SQL comum todas as linguagens.

#59585

87

DB2 - CONCEITOS E UTILIZAO


VARIVEL HOST

19/11/98

As variveis HOST so utilizadas para permuta de valores entre a linguagem SQL e a linguagem de programao. Uma das possveis utilizaes da varivel HOST a de fornecer um valor a uma instruo AQL, tornando-a assim uma instruo genrica. A referencia varivel HOST deve ser precedida pelo caracter :. Seu uso facultativo mas recomenda-se sua utilizao para evitar possibilidade de confuso. O uso da varivel HOST opcional. Seu uso obrigatrio somente para as instrues SELECT. A varivel HOST deve ser compatvel com a coluna quanto ao seu data type e ao seu tamanho. As variveis HOST no devem ser utilizadas para referenciar nomes de tabelas ou de colunas. Exemplo de Variveis HOST: EXEC SQL INSERT INTO EMPR (MATR, SOBRENOME) VALUES ( :MATR, :SNOME ) END-EXEC EXEC SQL UPDATE EMPR SET SALARIO = SALARIO * :PERCENT WHERE CARGO = :CARGO END-EXEC EXEC SQL SELECT MATR, SOBRENOME INTO :MATR, :SNOME FROM EMPR WHERE CARGO = :CARGO END-EXEC

88 #59585

DB2 - CONCEITOS E UTILIZAO


PROCESSAMENTO DE MLTIPLAS LINHAS

19/11/98

Se o resultado de um Select pode ter mltiplas linhas, o programa deve trabalhar com um CURSOR, pois no tem como prever o tamanho da tabela resultante. Quando o programa executa um OPEN de um CURSOR, o DB2 executa o SELECT e a tabela resultante fica presa, esperando pelo processamento. O programa deve prover variveis HOST para cada coluna do CURSOR. O programa executa a instruo SQL FETCH, para movimentar o CURSOR para o prximo registro. As variveis HOST contero os valores do registro (linha) apontado.

SELECT MATR SOBRENOME 30 SILVA 290 SANTOS 300 ALMEIDA

OPEN

FETCH
MATR SOBRENOME

30 SILVA
290 SANTOS 300 ALMEIDA

FETCH
MATR SOBRENOME 30 SILVA

290 SANTOS
300 ALMEIDA

#59585

89

DB2 - CONCEITOS E UTILIZAO


SELECT COM FETCH Definio de um CURSOR EXEC SQL DECALRE CUR001 CURSOR FOR SELECT MATR, SOBRENOME FROM EMPR WHERE DEPT = :DEPT END-EXEC Abrindo um CURSOR previamente definido. EXEC SQL OPEN CUR001 END-EXEC FETCH das linhas resultantes EXEC SQL FETCH CUR001 INTO :MATR, :SNOM END-EXEC Fechando o CURSOR quando terminar a leitura dos dados. EXEC SQL CLOSE CUR001 END-EXEC

19/11/98

OPEN posiciona o CURSOR antes da primeira linha da tabela resultante. FETCH avana o CURSOR uma linha para frente. No possvel fazer o FETCH voltar o CURSOR. CLOSE no CURSOR no implica em COMMIT.

90 #59585

DB2 - CONCEITOS E UTILIZAO COMMIT / ROLLBACK

19/11/98

COMMIT Indica trmino bem sucedido de uma unidade de trabalho Alterao dos dados sero gravadas. Todas os PAGE LOCKS sero liberados CURSOR fechado, exceto para CURSOR WITH HOLD ROLLBACK Unidade de trabalho corrente abandonado Atualizao dos dados desde o ltimo COMMIT so desfeitas Todos os PAGE LOCKS so liberados CURSOR fechado

#59585

91

DB2 - CONCEITOS E UTILIZAO BIND


Preparao de Programa

19/11/98

Cdigo Fonte SQL

Biblioteca de Include

PRECOMPILAO

Cdigo Fonte Modificado

DBRM Biblioteca de Usurio

Catlogo DB2 Compilao BIND Descrio da tabela

Autorizao Mdulo Objeto DBRM

Linkedio Diretrio Plano/Package Mdulo de Carga Language Interface Execuo

92 #59585

DB2 - CONCEITOS E UTILIZAO


BIND

19/11/98

Notas: A preparao de programa o nome que damos ao processo que torna um programa fonte em um mdulo de carga executvel. A preparao de um programa constitudo das seguintes fases: Precompilao Compilao e Linkedio BIND O precompilador pode ser executado com o DB2 fora. Mas sua funo gerar a partir de fonte dois data sets selados com um Timestamp. Os data sets gerados so: DBRM (Database Request Module) Contm todas as instrues SQL embutidas no fonte. Fonte Modificada fonte copiado para este data set com modificaes. As instrues SQL so transformadas em comentrios e os CALLs para o DB2 so inseridos logo a seguir. Eventualmente cdigos de definio de variveis HOST so copiados a partir de uma biblioteca de INCLUDE (DCLGEN book das tabelas)

O precompilador faz a checagem da sintaxe das instrues SQL e da validade das variveis HOST utilizadas. Um relatrio de execuo com eventuais mensagens de erro tambm gerado. O compilador gera o mdulo objeto a partir do fonte modificado pelo precompilador. O Timestamp copiado do fonte.

#59585

93

DB2 - CONCEITOS E UTILIZAO


BIND

19/11/98

O linkage editor gera o mdulo de carga partir do mdulo da linguagem de interface do DB2. O Timestamp original copiado do mdulo Objeto. O processador de BIND gera o Plano ou Package partir do DBRM. O Timestamp copiado do DBRM. Um Plano ou Package contm a estratgia de acesso aos dados DB2 com informaes do tipo: ndices utilizados Estratgia de Locking Estratgia de execuo do SQL E outros

A fase de compilao/Linkedio e a fase de BIND so executadas separadamente e podem ser executadas em qualquer ordem.

94 #59585

DB2 - CONCEITOS E UTILIZAO


BIND

19/11/98

O propsito de BIND a gerao do Plano ou de um Package. partir do DBRM e do catlogo so executados os seguintes procedimentos: Checagem das consistncias das instrues SQL com os Objetos manipulados. So checados nomes, data type das colunas, etc. Checagem da autorizao necessria para a execuo das instrues SQL. Determinao da estratgia de acesso aos Objetos da manipulao, pelo otimizador do DB2. Plano/Package armazenado no diretrio e uma cpia do DBRM carregado no Catlogo.

BIND ADD Utilizado para criar um novo Plano/Package

BIND REPLACE Utilizado quando a prpria instruo SQL foi alterada e queremos refazer o Plano/Package existente. REBIND Utilizado quando o SQL permanece inalterado mas queremos refletir uma modificao ocorrida no ambiente tais como criao/eliminao de ndices ou atualizaes das estatstica do Catlogo.

#59585

95

DB2 - CONCEITOS E UTILIZAO


BIND BIND ADD Adiciona Plano Novo REBIND Refaz Plano (Ambiente alterado)

19/11/98

BIND REPLACE Refaz Plano (SQL Alterado)

OTIMIZADOR

DBRM

PLANO PACKAGE

DBRM

CATLOGO

DIRETRIO

96 #59585

DB2 - CONCEITOS E UTILIZAO SEGURANA INTERNA DO DB2

19/11/98

A segurana interna do DB2 pode ser ativada ou no durante a gerao. Quando existe uma solicitao de atividade, o DB2 verifica trs fatores: Auth-id Privilgios Recurso - Quem fez a solicitao? - O que se deseja fazer com o recurso? - Qual o Objeto de manipulao?

Estas informaes ficam armazenadas no catlogo. Auth-id representa um usurio ou um grupo de usurio e informado ao DB2 atravs do monitor de transaes. TABELAS VIEW SELECT UPDATE [Lista de colunas] INSERT

PLANOS PACKAGES

BIND EXECUTE

STOGROUP BUFFERPOOL TABLESPACE

USE

DB2

SYSADM RECOVER TRACE, etc..

DATABASE

DBADM CREATETS LOAD, etc..

#59585

97

DB2 - CONCEITOS E UTILIZAO


SEGURANA INTERNA DO DB2 Recursos DB2 Podemos proteger: OBJETOS Tabela, View PLANOS/PACKAGES Programas, QMF, SPUFI COMANDOS DB2 -Bind, -Display UTILITRIS DB2 Load, Recover RECURSOS DO SISTEMA Buffer, Storage Group

19/11/98

ATRIBUIO DE AUTORIDADE Instruo SQL


Privilgio Sobre Recurso

GRANT

TO

AUTH-ID

REVOKE

Privilgio Sobre Recurso

FROM

AUTH-ID

Exemplo: GRANT SELECT ON EMPR TO PUBLIC REVOKE SELECT FROM EMPR FROM PUBLIC

98 #59585

DB2 - CONCEITOS E UTILIZAO UTLITRIOS DO DB2

19/11/98

Divididos em 3 grandes grupos: ONLINE 1. LOAD Carga de arquivo sequencial para uma tabela. 2. CHECK INDEX Checa a consistncia entre o ndex e os Dados. 3. CHECK DATA Checa a integridade entre a Chave Primria e a Chave estrangeira. 4. REORG Reorganiza um Tablespace, Partio de um Tablespace ou ndex. 5. RUNSTATS Atualiza informaes do catlogo sobre os Tablespaces e Indexes. 6. STOSPACE Atualiza informaes sobre a utilizao em Disco do Storage Group. 7. COPY Copia um Tablespace para um dataset Sequencial 8. MERGECOPY Utilizado para juntar um ImageCopy FULL com outro Incremental. 9. RECOVER Recuperao de um Tablespace, Partio ou Recuperao de ndex. 10. QUIESCE Estabelece um ponto de sincronismo de uma lista de tablespaces. 11. MODIFY Manuteno no catlogo DB2. 12. REPORT Listas informaes de Recovery para Tablespaces. 13. REPAIR Funo de reparo fsico em Disco. OFFLINE 1. CHANGE LOG INVENTORY 2. PRINT LOG MAP Atualiza log datasets no BSDS. Listas dados de Log BSDS.

#59585

99

DB2 - CONCEITOS E UTILIZAO


3. UTLITRIOS DO DB2(Continuao) SERVICE AIDS 1. 2. 3. 4. 5. DSN1COPY DSN1PRNT DSN1COMP DSN1LOGP DSN1CHKR catlogo. 6. DSNTIAUL 7. DSNTEP2 8. DSNTIAD

19/11/98

Trata user data por data set Listas e formatas data set pages Estimativas de espaos a ser arquivados(DB2) L o contedo da Log e formata para display. Verifica a Integridade dos diretrios e Unload de tabelas para uma arquivo sequencial. Para emisso de SQL dinmico. Para emisso de SQL dinmico exceto SELECT.

SYSIBM.SYSUTILX Uma Tabela de Diretrio DB2.

UTILID

JOB NOME

UTILITY NOME

CHECKPOINT INFORMAO....

Identificador nico

Coluna inserida no Incio do Utility. Coluna atualizada em Pontos de Checkpoints e Parada de Utility. Coluna eliminada quando do termino do Utility.

100 #59585

DB2 - CONCEITOS E UTILIZAO


LOAD Faz carga de arquivo sequencial para um Tablespace

19/11/98

Pode se carregar mltiplas tabelas em um mesmo Tablespace Converso de dados sero feitas. Construir ndices definidos ndice nico no permite chaves duplicadas Checagem Integridade Cada chave estrangeira deve conter uma chave primria correspondente. Pode ser inibida esta checagem.

Notas: Os dados podem ser carregado de 2 maneiras: 1. Atravs do INSERT (SQL). 2. Atravs do Utilitrio LOAD. S no sero carregadas as tabelas: Se a converso dos dados forem diferentes do formato do Tablespace Se os ndices nicos detectar violaes. Caso haja relacionamento no existir a chave primria.

#59585

101

DB2 - CONCEITOS E UTILIZAO


LOAD Definio da Tabela: CREATE TABLE PROD.EMPRESA (NOME_EMPRESA CHAR(6) PRIMEIRO_NOME VARCHA(12) INTERM_NOME CHAR(1) ULTIMO_NOME VARCHAR(15) FONE CHAR(4) SALARIO DECIMAL(8,2) DEPTO CHAR(3) PRIMARY KEY(NOME_EMPRESA), FOREIGN KEY(DEPTO) REFERNCES DEPT ON DELETE SET NULL) IN TESTEDB1.TESTTSP1; Exemplo do Registo para o LOAD:

19/11/98

NOT NOT NOT NOT , , ,

NULL, NULL, NULL, NULL,

....+.....1....+....2....+....3....+....4....+....5....+....6....+....7 000010 KARINA L BEZERRA A00 3978 650101 66 18 F 330814 52750

LOAD JCL
//LOADTEST EXEC DSNUPROC,.... //DSNUPROC.SYSREC DD DSN=ARQUIVO.ENTRADA ,DISP=SHR //DSNUPROC.SYSUT1 DD DSN=ARQUIVO.SYSUT1,DISP=( MOD,DELETE,CATLG),... //DSNUPROC.SORTOUT DD DSN=ARQUIVO.SORTOUT,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSERR DD DSN=ARQUIVO.SYSERR,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSMAP DD DSN=ARQIVO.SYSMAP,DISP=(MOD,DELETE,CATLG),... //DSNUPROC.SYSIN DD *

LOAD DATA INTO TABLE PROD.EMPRESA WHEN (32:34) = A00 (NOME_EMPRESA POSITION (1:6), PRIMEIRO_NOME POSITION(8:16) CHAR, INTERM_NOME POSITION(19), ULTIMO_NOME POSITION(21:30) CHAR, DEPTO POSITION(32:34), FONE POSITION(36:39) NULLIF PHONE = , SALARIO POSITION(65:69) DECIMAL EXTERNAL)

102 #59585

DB2 - CONCEITOS E UTILIZAO


LOAD Load Logging

19/11/98

O default LOG YES, a vantagem de no ser necessrio fazer ImageCopy aps a carga. Mas deve ser usar com critrios: Carregar uma tabela em um Tablespace compartilhado Carga e em tabelas pequenas Carga com RESUME YES Quando o volume de carga grande, deve ser usar LOG NO, pois isto evita uma trabalho do DB2 para registrar cada registro na LOG, e consequentemente a LOG poder ficar mais tempo em DISCO para um possvel RECOVERY. LOG YES Cada pgina ser registrada na LOG. LOG NO Carga mais rpida Requer ImageCopy Modificao por SQL no permitida enquanto no fizer o ImageCopy SQL error code 904

LOAD RESUME NO REPLACE

LOAD RESUME YES

LOAD RESUME NO (Cond. Code = 8) TABLESPACE

#59585

103

DB2 - CONCEITOS E UTILIZAO


LOAD

19/11/98

LOAD RESUME NO Usada somente quando a tabela estiver vazia, caso haja algum registro na tabela ocorrer abend com Return-Code 8. LOAD RESUME YES Opo para adicionar novas ocorrncias na tabela. LOAD RESUME NO REPLACE Opo para carregar novas ocorrncias na tabela eliminando todas as ocorrncias existentes dentro da tabelas. A Variao do LOAD permite trabalhar a nvel de Partio. LOAD INTO TABLE tabelax PART x RESUME NO Carrega ocorrncias em uma partio vazia LOAD INTO TABLE tabelax PART x RESUME YES Adiciona novas ocorrncias partio. LOAD INTO TABLE tabelax PART x RESUME YES REPLACE Carrega ocorrncias em uma nica partio, eliminando as ocorrncias existente na partio.

Violao de ndice nico Quando do LOAD, se inserido duas ou mais ocorrncias com a mesma chave o DB2 descartas todas as ocorrncias deste LOAD. CHAVE ENTRADA A B C D B CARGA NA TABELA A C D B DESCARTES B

104 #59585

DB2 - CONCEITOS E UTILIZAO


LOAD Integridade Referencial

19/11/98

ENFORCES CONSTRAINTS o default. Verifica se existe uma chave primria para a chave estrangeira. Pode se inibido com ENFORCE NO Se encontrado Violao, a ocorrncia eliminada.

FASES DO LOAD
Dados de Entrada (SYSREC)

Sada Tabela

Sysut1

RELOAD
Syserr

Sysmap

Sysut1

SORT

Sortout

Sortout Sysut1

BUILD

Sysut1 Syserr

Indexes

Sysut1 Syserr

IDEXVAL

Sada

Tabelas

#59585

105

DB2 - CONCEITOS E UTILIZAO


FASES DO LOAD
Sysut1 Sysut1

19/11/98

Sortout

ENFORCES

Sada

Tabelas

Parent Tables

Sortout Syserr

Dados entrada (SYSREC)

Sortout Syserr

DISCARD

Sysdisc

Sysmap

Sortout Syserr

REPORT

Relatrio Sumrio

106 #59585

DB2 - CONCEITOS E UTILIZAO


FASES DO LOAD

19/11/98

RELOAD Esta fase faz a carga do sequencial para a Tabela, Armazena as chaves dos ndices e chave estrangeira no indexados (Se ENFORCE CONSTRAINTS) na SYSUT1. O DD SYSDISC conter as ocorrncias descartadas Caso ocorra algum este requer: SYSERR - Qualquer erro ser armazenado. Se SYSERR no informado, o RELOAD abend antes de qualquer carga de dados. Se descartes no requerido. Reload termina no primeiro error. Se SYSMAP necessrio (Violao de chave nica ou Violao RI), informaes da posio da ocorrncia no SYSREC.

SORT Sorteia o registros da SYSUT1 pelo Chave do ndices, e Chaves estrangeiras seguem a chave indexadas. O SORT pode ser inibido em uma das condies: No existe mais que um chave por tabela O dados carregados j esto em sequncia. Todas as chaves devem ser do mesmo tipo. BUILD Constri os ndice do SORTOUT e adiciona informaes de erros na SYSERR, e informaes na SYSUT1 caso no ocorra erros. INDEXVAL Das informaes recolhidas dos SYSERR/SYSUT1 so removidas as ocorrncias da tabelas.

#59585

107

DB2 - CONCEITOS E UTILIZAO


FASES DO LOAD

19/11/98

ENFORCE De acordo com o SORTOUT, e o relacionamento definido para a tabela, esta fase faz a checagem para a violao da RI. A Checagem envolves a tabela me onde se verifica a chave estrangeira carregada. Todas as ocorrncias sem um PAI sero removidos da tabela, e includa na SYSDISC. REPORT Listas um relatrio de sumrio contendo os erros.

Recomendaes: Pr processamento para remover os erros. Sorteia os dados de entradas na sequncia da clusterizao. Criar todos os ndices antes de carregar os dados. Use LOG NO para evitar excessivo I/O na LOG Carregar primeiros as PARENT TABLES (Tabelas mes). Preferir sempre ENFORCE CONSTRAINTS. Usar BLKSIZE otimizado para SYSUT1, SORTOUT e SORTWWKxx

108 #59585

DB2 - CONCEITOS E UTILIZAO


CHECK DATA

19/11/98

Checa todas as chaves estrangeiras de uma lista de tablespaces com os valores de chaves primrias correspondentes. Checa todas as ocorrncias dependentes, ou somente as adicionadas pelo LOAD. Opcionalmente copia ocorrncias rf para uma tabela de exceo, e elimina a ocorrncia da tabela ou no. Tirar do Status de CHECK PENDING Nenhuma violao foi detectado, ou Erros so eliminados com a opo DELETE YES.

//DSNUPROC. SYSIN DD * CHECK DATA TABLESPACE PRD.EMPRESA TABLESPACE PRD.DEPTO SCOPE PENDING ou ALL FOR EXCEPTION IN PRD.EMPRESA USE prd.EmpresaX IN PRD.DEPTO USE prd.DeptoX DELETE YES ou NO EXCEPTIN n

Se SCOPE ALL checa todas as chaves estrangeiras de um tablespaces. Se SCOPE PENDING checa apenas as chaves estrangeiras adicionada pelo LOAD. DELETE YES deleta todas as ocorrncias RF de um Tablespace EXCEPTIONS especifica os limite de exceo, quando excede este limite o CHECK termina.

#59585

109

DB2 - CONCEITOS E UTILIZAO FASES DO CHECK DATA


Repetida para Dependent Table (Tabela FILHA) Dependent table
SCANTAB

19/11/98

SYSUT1

SYSUT1
SORT

SORTOUT

Sortout/ndice chave estrangeira SYSERR


SCANTAB

ndice chave Primria

Dependent/Descendent Tables

Tabela Exceo

SYSERR

REPORTCK

Relatrio de Sumrio

110 #59585

DB2 - CONCEITOS E UTILIZAO


FASES DO CHECK DATA

19/11/98

1. SCANTAB Esta fase extrai as chaves estrangeiras necessrias e grava no SYSUT1 2. SORT Sorteia a entradas contidas no SYSUT1 pelo nome da constraints e o valor da chave estrangeira. 3. CHECKDAT Esta fase produz um erro para cada chave estrangeira no encontrada. 4. REPORTCK Se DELETE YES especificado, este fase deleta as ocorrncias, e copia para a tabela de Exceo. Produz tambm um Relatrio de sumarizao para cada tabela. 5. UTILTERM Esta fase termina o processo.

#59585

111

DB2 - CONCEITOS E UTILIZAO


CHECK INDEX

19/11/98

O CHECK INDEX testa a consistncia entre o dados e o ndices. O Check procura a inconsistncia e emite uma mensagem de erro, descrevendo qual o problema. Exemplos de SYSIN: //DSNUPROC.SYSIN DD * CHECK INDEX NAME(prd.indice1, prd.index2) CHECK INDEX(prd.indice1 PART 3) CHECK INDEX(ALL) TABLESPACE PRD.EMPRESA

FASES DO CHECK INDEX

ndices

UNLOAD

Sysut1

Sysut1

SORT

Sysut1

Sysut1 Relatrio Sumrio

CHECKINDEX
Tabelas

112 #59585

DB2 - CONCEITOS E UTILIZAO


REORG

19/11/98

A fase de UNLOAD dos registros de uma tabela. Descarrega as ocorrncias na sequncia do ndice de clusterizao Fase de RELOAD carrega os dados de volta a tabela, respeitando os FREE PAGE, PCTFREE, etc. FASE de SORT Sorteia as chaves dos ndices contidas no SYSUT1, gravando no SORTOUT. Fase de BUILD Reconstro os ndices com a sada do SORT.

FASES DO REORG
Table space

UNLOAD

Sada dos Dados (SYSREC) Entrada dos Dados (SYSREC)


RELOAD
Table space

Sysut1

Sysut1

SORT

Sortout

Sortout

BUILD

Indexes

#59585

113

DB2 - CONCEITOS E UTILIZAO


REORG

19/11/98

UNLOAD CONTINUE

RESTART

UNLOAD PAUSE STOP Edit/Field Field/Edit

UNLOAD ONLY Edit/Field

TERMINATE

LOAD REPLACE Validation/Field/Edit

Existem 3 opo de UNLOAD para o utilitrio REORG. 1. Unload Continue Todas as fases sero concludas em uma execuo 2. Unload Pause O Utilitrio parado aps o Unload do Tablespace ou ndices. O Utilitrio deve ser reestartdo para completar O Edit and Field so invocados duranto o Unload e Reload Fases. 3. Unload Only Aps a fase de Unload terminado o Utilid A sada pode ser usada como entrada do utilitrio LOAD.

114 #59585

DB2 - CONCEITOS E UTILIZAO


REORG Exemplos de SYSIN: //DSNUPROC.SYSIND DD * REORG TABLESPACE PRD.EMPRESA REORG TABLESPACE PRD.EMPRESA REORG TABLESPACE PRD.EMPRESA REORG TABLESPACE PRD.EMPRESA REORG INDEX PRD.NDICE1

19/11/98

UNLOAD CONTINUE LOG NO UNLOAD PAUSE LOG NO UNLOAD ONLY PART 3

#59585

115

DB2 - CONCEITOS E UTILIZAO


COPY

19/11/98

Cria um Backup do Tablespace COPY TABLESPACE CURXDB01.CURXTS01 FULL YES SHRLEVEL REFERENCE Permite Atualizao Leitura compartilhada Se no quiser compartilhar acesso a base, emita o comando no DB2: -START DB(CURXDB01) SPACE(CURXTS01) ACCESS(UT) Assim somente utilitrios podem agir sobre os Objetos.

Controle de Cpia Incremental


SPACE MAP PAGE

Altera Indicadores de Pginas

Altera bit no HEADER


DATA PAGE

O Copy Full e Incremental desliga o bit. Fazer sempre Image Copy FULL aps REORG LOG NO ou LOAD LOG NO. Se mais que 15% das pginas foram alteradas, opte por COPY FULL. Especifique DISP=(MOD,CATLG) para permitir restart do utilitrio.

116 #59585

DB2 - CONCEITOS E UTILIZAO


MERGECOPY

19/11/98

MERGECOPY

Image Copys Incremental Incremental

Merge Image Copy

SYSIN: MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY NO

Incremental

MERGECOPY

Full

Full Image Copy

SYSIN: MERGECOPY TABLESPACE PRD.EMPRESA NEWCOPY YES

NEWCOPY YES insere um apontamentos no catalogo DB2 como FULL Image Copy. NEWCOPY NO atualiza os registros com Image Copy Incremental.

#59585

117

DB2 - CONCEITOS E UTILIZAO


RECOVERY TABLESPACE RECOVER

19/11/98

TABLESPACE CURXDB01.EMPRESA TABLESPACE CURXDB01.DEPTO

DATASET RECOVER

TABLESPACE CURXDB01.EMPRESA DSNUM 3 TABLESPACE CURXDB01.DEPTO DSNUM 2

Funes do Utilitrio RECOVER 1. 2. 3. 4. 5. Inicializao Alocao Dinmica se no existir apontamento no statements DD Define os datasets do Tablespaces. Image Copy Merge e Restaura Aplica a log.

ndices e Tablespace DB2 podem ser copiados por este utilitrio no DB2. DB2 RECOVER aceita somente as seguintes entradas: Image Copy + Log Image Copy somente Logs DB2 somente

118 #59585

DB2 - CONCEITOS E UTILIZAO


RECOVERY
IMAGECOPY EMPRESA FULL YES

19/11/98

22:00

22:20

RUN PROGRAM XYZ

08:45

Descobre que programa Atualizou dados errados

09:00

Restaurar a partir do ltimo Image Copy

PONTOS DE RECOVERY Permite restaurar ate: Um especifico Full ou Incremental Image Copy RECOVER .... TOCOPY I.D15.CUR.DBP0TS01.G0001V00 Um especifico LOG RBA. RECOVER .... TORBA X005E00123456

#59585

119

DB2 - CONCEITOS E UTILIZAO


QUIESCE

19/11/98

Verifica restries para os tablespaces especificados e cria um ponto de consistncia para eles. Para cada tabespace, o Quiesce cria uma entrada na SYSCOPY com RBA vlido para a recuperao. QUIESCE TABLESPACE CURXDB01.CURXTS01 TABLESPACE CURXDB01.CURXTS02

REPORT Listas dados sobre Tablespaces. O relatrio pode Ter 2 tipos de sadas: TABLESPACESET Tablespace e tabelas que participam de Relacionamento de Integridade Relacional (RI). RECOVERY - Informaes de recuperao a partir do catlogo, diretrio e BSDS.

REPORT TABLESPACESET TABLESPACE CURXDB01.CURXTS01 REPORT RECOVERY TABLESPACE CURXDB01.CURXTS01.

120 #59585

DB2 - CONCEITOS E UTILIZAO


INDEX RECOVERY Fase UNLOAD Fase SORT

19/11/98

Fase BUILD Index1

UNLOAD Sysut1 BUILD

Arquivo de Trabalho
SORT Tablespace Sysut1

Index2

Exemplos de SYSIN: RECOVER INDEX(PRD.INDICE1, PRD.INDICE2) RECOVER INDEX (ALL) TABLESPACE PRDXDB01.EMPRESA RECOVER INDEX(PRD.INDICE1 PART 2)

#59585

121

DB2 - CONCEITOS E UTILIZAO


RECOVERY PENDING

19/11/98

Tablespace ou Index deve ser recuperado 1. RECP significa que a partio de um Index ou Tablespace esta pendente 2. PSRCP significa que a entrada de um Index no particionado esta com RECOVERY Pendente. Acesso proibido exceto para: 1. RECOVER 2. LOAD REPLACE 3. REPAIR 4. MERGE COPY -DISPLAY DB revela os status RECP/PSRCP RECP/PSRCP resetado por: 1. RECOVER tablespace ou Index 2. LOAD REPLACE 3. REPAIR com SET NORCVRPEND 4. START DB .... ACCESS(FORCE)

RECOVERY PENDING segue as seguintes condies: Condio Term Util Term Util UTILITRIO FASE Recover TS -------Recover Index BUILD RELOAD Term Util Reorg/Load SORT BUILD Point in Time Recover -------TS Recovery Tablespace OBJETOS colocado em RECP TABLESPACE ndice ainda no construdos Tablespace, Parties e ndices Todos os ndices ndice ainda no construdos Todos os ndices

122 #59585

DB2 - CONCEITOS E UTILIZAO


MODIFY

19/11/98

Elimina Image Copy desnecessrios e log ranges do catlogo DB2, As entradas so da SYSCOPY e SYSLGRNG. Possvel acesso concorrente durante o MODIFY com exceo do SYSCOPY e SYLGRNG. Exemplo: MODIFY RECOVERY TABLESPACE(CURXDB01.CURXTS01) DELETE DATE(19981101). MODIFY RECOVERY TABLESPACE(CURXDB01.CURXTS01) DELETE AGE(90) DELETE DATE eliminados as ocorrncias da data informada para trs DELETE AGE todos ocorrncias com a quantidades de dias maior que a informadas sero eliminadas.

DIAGNOSE Ajuda no diagnstico de problemas de utilitrios. Normalmente sua utilizao a pedido do SUPORTE IBM STOSPACE Colhe informao de espao alocado para cada Storage Groups, Tablespaces e ndices relacionados. A informao registrada no catlogo DB2.

#59585

123

DB2 - CONCEITOS E UTILIZAO


RUNSTATS

19/11/98

Varre um Tablespace ou ndice para atualizao no catlogo de utilizao de espao e eficincia do ndices. Esses dados so utilizados pelo otimizador do DB2. O Runstats atualizadas as tabelas: Estatstica usada pelo OTIMIZADOR 1. SYSTABLES 2. SYSTABLESPACE 3. SYSINDEXES 4. SYSCOLUMNS 5. SYSCOLDIST Outras para informaes do DBA 1. SYSTABLEPART 2. SYSINDEXPART 3. SYSCOLDISTSTAS 4. SYSCOLSTATS 5. SYSINDEXSTATS 6. SYSTABSTATS

REPAIR Repara dado do usurio, ndices, catlogo, Space Map, etc. REPAIR deve ser usado com extrema cautela.

124 #59585

DB2 - CONCEITOS E UTILIZAO


DSNTIAUL

19/11/98

Permite gerar um arquivo sequencial dos dados da tabelas, e um outro com as informaes de onde inicia e termina os registros, alem das informaes necessria para o LOAD. Exemplo do JCL:
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSUDUMP DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=P915537.FONTES.CAPXTS14,UNIT=SYSDA, // DISP=(,CATLG,DELETE),SPACE=(TRK,(50,10),RLSE) //SYSREC00 DD DSN=P915537.DADOS.CAPXTS14,UNIT=SYSDA, // DISP=(,CATLG,DELETE),SPACE=(CYL,(80,05),RLSE) //SYSTSIN DD * DSN SYSTEM(DBP0) RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB41) PARMS('SQL') LIB('DB2P1.V4R1M0.RUNLIB.LOAD') //SYSIN DD * SELECT * FROM SICAP.CAPXTB14ENTRADA ; /*

#59585

125

DB2 - CONCEITOS E UTILIZAO


COMANDOS DB2

19/11/98

Principais comandos DB2 -DIS DB(ABE*) SPACE(*) LIMIT(*) Verifica os status de todos os Tablespace e Indexspace do DATABASE que comece com ABE. -DIS DB(*) SPACE(*) LIMIT(*) RESTRICT Verifica todos os Tablespaces e Indexspace com alguma Restrio -START DB2 / -STOP DB2 Inicializa e encerra o DB2 (Comandos na console OS/390) -DIS UTIL(*) Mostra todos os UTILID com seus respectivos STATUS -TERM UTIL(IMAGCCP) Termina o UTILID IMAGCCP -START DB(ABEXDB01) SPACE(*) ACCESS(RW) Libera todos Indexspace e Tablespaces para acesso de READ/WRITE -START DB(ABEXDB01) SPACE(ABEXTS12,ABEXPX12) ACCESS(UT) Starta os Tablespace ABEXTS12 e o Indexspace ABEXPX12 somente para acesso de utilitrios DB2. -DIS DB(ABEXDB01) SPACE(*) LIMIT(*) LOCKS Mostra todos os Tablespaces e Indexspaces do Database ABEXDB01 e as respectivas alocao. -DIS THREAD(*) Mostra todas as threads conectado ao DB2.

126 #59585

Potrebbero piacerti anche