Apostila DB2 Para Desenvolvedores

Click here to load reader

  • date post

    25-Jun-2015
  • Category

    Documents

  • view

    811
  • download

    3

Embed Size (px)

Transcript of Apostila DB2 Para Desenvolvedores

NDICE

INTRODUO AO DB2 ................................................................................................................................................................7 O QUE UM BANCO DE DADOS RELACIONAL ?............................................................................................................................8 DB2 UM DBMS RELACIONAL.....................................................................................................................................................9 ESTRUTURA DE DADOS DO DB2.................................................................................................................................................. 10 NOMENCLATURA ..................................................................................................................................................................... 11 NOMENCLATURA ..................................................................................................................................................................... 12 INTEGRIDADE DE REFERNCIA ..................................................................................................................................................... 13 INTEGRIDADE DE REFERNCIA (CONT .)...................................................................................................................................... 14 INTEGRIDADE DE REFERNCIA (CONT .)...................................................................................................................................... 15 AMBIENTE DB2.............................................................................................................................................................................16 COEXISTNCIA ENTRE OS A MBIENTES........................................................................................................................................ 17 OBJETOS DB2 ................................................................................................................................................................................. 18 OBJETOS DB2 (CONT .)................................................................................................................................................................... 19 NOTAS.............................................................................................................................................................................................. 20 NOTAS (CONT .)............................................................................................................................................................................... 21 NOTAS (CONT .)............................................................................................................................................................................... 22 NOTAS (CONT .)............................................................................................................................................................................... 23 ESTRUTURA DO DB2...................................................................................................................................................................... 24 ESTRUTURA DO DB2 (CONT .)....................................................................................................................................................... 25 UTILIZAO DA LINGUAGEM SQL ...................................................................................................................................26 UTILIZAO DA LINGUAGEM SQL .............................................................................................................................................. 27 UTILIZAO DA LINGUAGEM SQL (CONT .)............................................................................................................................... 28 UTILIZAO DA LINGUAGEM SQL (CONT .)............................................................................................................................... 29 LINGUAGEM SQL........................................................................................................................................................................... 30 LINGUAGEM SQL (CONT .) ............................................................................................................................................................ 31 LINGUAGEM SQL (CONT .) ............................................................................................................................................................ 32 DDL - DATA DEFINITION LANGUAGE......................................................................................................................................... 33 CREATE TABLE............................................................................................................................................................................... 34 DADOS NUMRICOS....................................................................................................................................................................... 35 DADOS NUMRICOS (CONT .) ....................................................................................................................................................... 36 DADOS CHARACTER STRING........................................................................................................................................................ 37 DADOS DATE / TIME ...................................................................................................................................................................... 38 NULIDADE ....................................................................................................................................................................................... 39 NOT NULL WITH DEFAULT ........................................................................................................................................................... 40 CREATE VIEW................................................................................................................................................................................. 41 DML - DATA MANIPULATION LANGUAGE................................................................................................................................. 42 TABELAS USADAS NOS EXEMPLOS.............................................................................................................................................. 43 TABELAS USADAS NOS EXEMPLOS (CONT .)............................................................................................................................... 44 QUERY ............................................................................................................................................................................................. 45 QUERY EM FORMATO LIVRE ......................................................................................................................................................... 46 SELECT ...FROM ............................................................................................................................................................................... 47 SELECT DE TODAS AS COLUNAS.................................................................................................................................................. 48 CONTROLE DE LINHAS................................................................................................................................................................... 49 OPERADORES DE COMPARAO.................................................................................................................................................. 50

Domini Treinamento DB2 para Desenvolvedores

-1-

EXEMPLOS DE W HERE ................................................................................................................................................................... 51 SELEO DE NULOS....................................................................................................................................................................... 52 SELEO DE NULOS (CONT .)........................................................................................................................................................ 53 MLTIPLAS CONDIES................................................................................................................................................................ 54 MLTIPLAS CONDIES (CONT .)................................................................................................................................................. 55 MLTIPLAS CONDIES (CONT .)................................................................................................................................................. 56 MLTIPLAS CONDIES (CONT .)................................................................................................................................................. 57 IN...................................................................................................................................................................................................... 58 BETWEEN......................................................................................................................................................................................... 59 PESQUISAS PARCIAIS ..................................................................................................................................................................... 60 NEGAO ........................................................................................................................................................................................ 61 ORDER BY ....................................................................................................................................................................................... 62 ORDER BY (CONT .)......................................................................................................................................................................... 63 ORDER BY (CONT .)......................................................................................................................................................................... 64 SELECT DISTINCT ........................................................................................................................................................................... 65 SELECT DISTINCT (CONT .) ............................................................................................................................................................ 66 SELECT DE VALORES CALCULADOS............................................................................................................................................ 67 NOMEANDO A COLUNA RESULTADO............................................................................................................................................ 68 CONDIES COM VALOR CALCULADO ....................................................................................................................................... 69 ORDER BY POR VALOR CALCULADO....................................................................................................................................... 70 OPERADOR DE CONCATENAO.................................................................................................................................................. 71 FUNES DE COLUNA (COLUMN FUNCTIONS) .......................................................................................................................... 72 SUM AVG M AX MIN ...................................................................................................................................................................... 73 SUM AVG M AX MIN (CONT .)........................................................................................................................................................ 74 COUNT ............................................................................................................................................................................................. 75 CUIDADO COM NULOS................................................................................................................................................................... 76 CUIDADO COM NULOS................................................................................................................................................................... 77 LITERAIS.......................................................................................................................................................................................... 78 LITERAIS.......................................................................................................................................................................................... 79 GROUP BY ....................................................................................................................................................................................... 80 GROUP BY (CONT ).......................................................................................................................................................................... 81 GROUP BY (CONT .)......................................................................................................................................................................... 82 GROUP BY ... ORDER BY ............................................................................................................................................................... 83 GROUP BY ... HAVING ................................................................................................................................................................... 84 EXEMPLO DE HAVING.................................................................................................................................................................... 85 SELECT - 6 CLUSULAS............................................................................................................................................................... 86 EXECUO CONCEITUAL DO SELECT .......................................................................................................................................... 87 EXECUO CONCEITUAL DO SELECT (CONT .)........................................................................................................................... 88 EXEMPLOS DE HAVING (CONT .)................................................................................................................................................... 89 SUMRIO FUNES DE COLUNA.................................................................................................................................................. 90 FUNES ESCALARES (SCALAR FUNCTIONS) ............................................................................................................................ 91 FUNES ESCALARES.................................................................................................................................................................... 92 SUBSTR (STRING, INCIO, COMPRIMENTO).................................................................................................................................. 93 SUBSTR (STRING, INCIO, COMPRIMENTO) (CONT .)................................................................................................................... 94 LENGTH (ARGUMENTO)................................................................................................................................................................. 95 LENGTH (ARGUMENTO) (CONT .)............................................................................................................................................... 96 VALUE (ARG1, ARG2, ..., ARGN )................................................................................................................................................... 97 VALUE (ARG1, ARG2, ..., ARGN ) (CONT .)................................................................................................................................. 98 FUNES DE CONVERSO............................................................................................................................................................. 99 DADOS DA T E/T IME......................................................................................................................................................................100 ARITMTICA DATE/T IME ............................................................................................................................................................101 ARITMTICA DE DATE/T IME (CONT ).........................................................................................................................................102 EXEMPLOS DATE/TIME................................................................................................................................................................103

Domini Treinamento DB2 para Desenvolvedores

-2-

FUNES ESCALARES DATE/T IME ............................................................................................................................................104 FUNES ESCALARES DATE/T IME (CONT .)..............................................................................................................................105 FUNES ESCALARES DATE/T IME (CONT .)..............................................................................................................................106 VALORES CORRENTES.................................................................................................................................................................107 JOIN DE TABELAS .........................................................................................................................................................................108 JOIN DE TABELAS - INNER JOIN ..................................................................................................................................................109 JOIN DE TABELAS - INNER JOIN (CONT .)...............................................................................................................................110 OUTER JOIN...................................................................................................................................................................................111 JOIN COM MAIS DE DUAS TABELAS ..........................................................................................................................................112 QUALIFICADORES.........................................................................................................................................................................113 QUALIFICADORES (CONT .)..........................................................................................................................................................114 JOIN DE UMA TABELA COM ELA MESMA ...................................................................................................................................115 JOIN DE UMA TABELA COM ELA MESMA (CONT .).....................................................................................................................116 UNIO............................................................................................................................................................................................117 UNIO (CONT .).........................................................................................................................................................................118 UNIO - EXEMPLO......................................................................................................................................................................119 UNION ALL VS. UNION................................................................................................................................................................120 SUBQUERY.....................................................................................................................................................................................121 EXEMPLO DE SUBQUERY.............................................................................................................................................................122 CONSIDERAES SUBQUERY......................................................................................................................................................123 SUBQUERY COM UMA LINHA......................................................................................................................................................124 SUBQUERY C/VRIAS LINHAS: ALL ........................................................................................................................................125 SUBQUERY C/VRIAS LINHAS: ALL (CONT.)..........................................................................................................................126 SUBQUERY C/VRIAS LINHAS: A NY OU SOME .......................................................................................................................127 SUBQUERY C/VRIAS LINHAS: A NY OU SOME (CONT .).........................................................................................................128 IN....................................................................................................................................................................................................129 IN (CONT .).....................................................................................................................................................................................130 SUBQUERY NUM HAVING...........................................................................................................................................................131 SUBQUERY CORRELACIONADO ..................................................................................................................................................132 SUBQUERY COM EXISTS - TESTANDO V OU F........................................................................................................................133 SUBQUERY COM EXISTS............................................................................................................................................................134 MANUTENO........................................................................................................................................................................... 135 INSERT DE UMA LINHA ................................................................................................................................................................136 INSERT DE MLTIPLAS LINHAS..................................................................................................................................................137 UPDATE DE COLUNAS..................................................................................................................................................................138 UPDATE DE COLUNAS (CONT )....................................................................................................................................................139 DELETE DE LINHAS......................................................................................................................................................................140 DELETE DE TODAS AS LINHAS ...................................................................................................................................................141 PROGRAMAO ....................................................................................................................................................................... 142 PROGRAMA EM LINGUAGEM TRADICIONAL.............................................................................................................................143 PROGRAMAO ............................................................................................................................................................................144 INSTRUO SQL ..........................................................................................................................................................................145 INSTRUO SQL (CONT .)............................................................................................................................................................146 VARIVEL HOST ...........................................................................................................................................................................147 VARIVEL HOST (CONT .)............................................................................................................................................................148 OUTROS EXEMPLOS.....................................................................................................................................................................149 VARIVEL HOST (CONT .)...........................................................................................................................................................150 VARIVEL HOST (CONT .)...........................................................................................................................................................151 VARIVEL HOST (CONT .)...........................................................................................................................................................152 VARIVEL HOST (CONT .)...........................................................................................................................................................153 DEFINIO DE VARIVEL HOST ................................................................................................................................................154

Domini Treinamento DB2 para Desenvolvedores

-3-

DEFINIO DE VARIVEL HOST (CONT .)..................................................................................................................................155 DEFINIO DE VARIVEL HOST (CONT .)..................................................................................................................................156 DEFINIO DE VARIVEL HOST (CONT .)..................................................................................................................................157 COMMIT /ROLLBACK ....................................................................................................................................................................158 COMMIT /ROLLBACK (CONT .) .....................................................................................................................................................159 LUW ................................................................................................................................................................................................160 LUW (CONT .).................................................................................................................................................................................161 COMMIT /ROLLBACK ....................................................................................................................................................................162 SQLCA..........................................................................................................................................................................................163 SQLCA (CONT .)...........................................................................................................................................................................164 SQLCA (CONT .)...........................................................................................................................................................................165 FORMATO SQLCA .......................................................................................................................................................................166 SQL WARNING .............................................................................................................................................................................167 SQL WARNING (CONT .) ..............................................................................................................................................................168 AUXLIO CODIFICAO............................................................................................................................................................169 INSTRUO WHENEVER..............................................................................................................................................................170 INSTRUO WHENEVER (CONT .)...............................................................................................................................................171 DCLGEN ......................................................................................................................................................................................172 DCLGEN (CONT .)........................................................................................................................................................................173 INSTRUO INCLUDE ...................................................................................................................................................................174 PREPARAO DE PROGRAMA COM SQL ................................................................................................................... 175 PREPARAO DE PROGRAMA COM SQL ...................................................................................................................................176 PREPARAO DE PROGRAMA COM SQL (CONT .)....................................................................................................................177 PRECOMPILADOR..........................................................................................................................................................................178 COMPILADOR / LINKAGE EDITOR / BIND ..................................................................................................................................179 VISO GERAL BIND .................................................................................................................................................................180 VISO GERAL BIND (CONT .)...................................................................................................................................................181 VISO GERAL BIND (CONT .)...................................................................................................................................................182 PACKAGE ...................................................................................................................................................................................183 COLLECTION ............................................................................................................................................................................184 TOKEN DE CONSISTNCIA - P REP . DO P ROGRAMA ..........................................................................................185 PLANO - LIGAO ENTRE O PACKAGE E O LOAD MODULO.....................................................................................................186 PLANOS E PACKAGES...........................................................................................................................................................187 ERRO DE TIMESTAMP...........................................................................................................................................................188 BIND - OPO QUALIFIER.....................................................................................................................................................189 CURSOR..........................................................................................................................................................................................190 CURSOR (CONT .)...........................................................................................................................................................................191 SELECT COM FETCH.....................................................................................................................................................................192 PROCURE DEFINIR........................................................................................................................................................................193 PROCURE DEFINIR (CONT .).........................................................................................................................................................194 DELETE VIA CURSOR ...................................................................................................................................................................195 DELETE VIA CURSOR (CONT .)....................................................................................................................................................196 UPDATE VIA CURSOR ..................................................................................................................................................................197 UPDATE VIA CURSOR (CONT .) ...................................................................................................................................................198 MANIPULAO DE CURSOR ........................................................................................................................................................199 MANIPULAO DE CURSOR (CONT .) .........................................................................................................................................200 VARIVEL INDICADORA..............................................................................................................................................................201 VARIVEL INDICADORA (CONT .)...............................................................................................................................................202 VETOR DE VAR. INDICADORAS ..................................................................................................................................................203 VETOR DE VAR. INDICADORAS (CONT .)....................................................................................................................................204 OUTROS USOS DA VARIVEL INDICADORA..............................................................................................................................205

Domini Treinamento DB2 para Desenvolvedores

-4-

ERROS DE A RITMTICA E CONVERSO - EXEMPLO................................................................................................................206 USO DA VARIVEL INDICADORA - RESUMO ............................................................................................................................207 ESTRATGIA DE A CESSO .............................................................................................................................................................208 ESTRATGIA DE A CESSO (CONT.) ..............................................................................................................................................209 EXECUO DO PROGRAMA .........................................................................................................................................................210 EXECUO DO PROGRAMA (CONT .)..........................................................................................................................................211 CONSIDERAES SOBRE PROGRAMAO ............................................................................................................... 212 RECOMENDAES DML .............................................................................................................................................................213 RECOMENDAES DML (CONT.)...............................................................................................................................................214 RECOMENDAES DML (CONT.)...............................................................................................................................................215 RECOMENDAES DML (CONT.)...............................................................................................................................................216 USO DO NDICE .............................................................................................................................................................................217 EXPRESSES A RITMTICAS ........................................................................................................................................................218 CONDIES NOT ...........................................................................................................................................................................219 USO DO LIKE .............................................................................................................................................................................220 SUBQUERIES..................................................................................................................................................................................221 EXPLAIN.........................................................................................................................................................................................222 EXPLAIN (CONT .)..........................................................................................................................................................................223 EXPLAIN (CONT .)..........................................................................................................................................................................224 PLAN_TABLE.................................................................................................................................................................................225 PLAN_TABLE (CONT .)..................................................................................................................................................................226 PLAN_TABLE (CONT .)..................................................................................................................................................................227 TPICOS ADICIONAIS ........................................................................................................................................................... 228 LOCKING ...................................................................................................................................................................................... 229 LOCKING ........................................................................................................................................................................................230 GRANULARIDADE - LOCKSIZE TABLESPACE..........................................................................................................................231 GRANULARIDADE - LOCKSIZE TABLE......................................................................................................................................232 GRANULARIDADE - LOCKSIZE PAGE/ ANY..............................................................................................................................233 GRANULARIDADE - LOCKSIZE ROW ........................................................................................................................................234 GRANULARIDADE DO LOCK ........................................................................................................................................................235 MODO DO LOCK............................................................................................................................................................................236 DURACO DO LOCK (CONT .) ......................................................................................................................................................237 DURACO DO LOCK (CONT .) ......................................................................................................................................................238 AUTORIZAES ........................................................................................................................................................................ 239 SEGURANA DO DB2...................................................................................................................................................................240 ITENS PROTEGIDOS......................................................................................................................................................................241 IDENTIFICAO DO USURIO DO DB2......................................................................................................................................242 COMANDO GRANT /REVOKE .......................................................................................................................................................243 UTILITRIOS.............................................................................................................................................................................. 244 UTILITRIOS DB2 ........................................................................................................................................................................245 UTILITRIOS DB2 (CONT.)..........................................................................................................................................................246 UTILITRIO 'LOAD'' .....................................................................................................................................................................247 EXECUTANDO O UTILITRIO ''LOAD''........................................................................................................................................248 EXECUTANDO O UTILITRIO ''LOAD'' (CONT.).........................................................................................................................249 LOAD - FASES DE EXECUO ...................................................................................................................................................250 LOAD - FASES DE EXECUO (CONT .) ....................................................................................................................................251 LOAD - CARTES DE CONTROLE ..............................................................................................................................................252 OPES RESUME E REPLACE......................................................................................................................................................253

Domini Treinamento DB2 para Desenvolvedores

-5-

EXERCCIO - LOAD......................................................................................................................................................................254 OPO LOG (YE S/NO).................................................................................................................................................................255 UTILITRIO 'CHECK DATA''.......................................................................................................................................................256 CHECK DATA - FASES DE EXECUO ...................................................................................................................................257 OPES DO CHECK DATA .......................................................................................................................................................258 UTILITRIO 'RUNSTATS''............................................................................................................................................................259 RUNSTATS - FASE DE EXECUO ..............................................................................................................................................260 OPES DO RUNSTATS................................................................................................................................................................261 OPES DO RUNSTATS (CONT .)..................................................................................................................................................262 CONSIDERAES SOBRE RUNSTATS..........................................................................................................................................263 UTILITRIO 'COPY'' ...................................................................................................................................................................264 COPY - FASES DE EXECUO....................................................................................................................................................265 OPES DO COPY.........................................................................................................................................................................266 COPY INCREMENTAL E MERGECOPY.........................................................................................................................................267 RECOVER .......................................................................................................................................................................................268 RECOVER - FASES DE EXECUO...........................................................................................................................................269 RECOVER - A GILIZAO DO PROCESSO .................................................................................................................................270 RECOVER - PARA UM PONTO NO TEMP O................................................................................................................................271 RECOVER - PARA UM PONTO NO TEMP O................................................................................................................................272 DSNTIAUL PROGRAMA SAMPLE PARA UNLOAD.........................................................................................................273 DSNTIAUL - DATA SETS E PARMETRO ........................................................................................................................274 DSNTIAUL - EXEMPLOS............................................................................................................................................................275 DSNTIAUL - EXEMPLOS............................................................................................................................................................276 STORED PROCEDURES INTRODUO.......................................................................................................................... 277 O QUE SO E PARA QUE SERVEM AS STORED PROCEDURES .............................................................................277 CALL SINTAXE .......................................................................................................................................................................... 279 CREATE PROCEDURE............................................................................................................................................................ 281 EXEMPLOS.................................................................................................................................................................................282 PARMETROS ..........................................................................................................................................................................283 PROGRAMAO DE SP.......................................................................................................................................................... 284 REGRAS GERAIS......................................................................................................................................................................285 COMMIT E ROLLBACK..........................................................................................................................................................286

Domini Treinamento DB2 para Desenvolvedores

-6-

Introduo ao DB2Parte 1

Domini Treinamento DB2 para Desenvolvedores

-7-

O que um Banco de Dados Relacional?

Um Banco de Dados Relacional aquele que pode ser percebido externamente como uma coleo de tabelas.COLUNA

Tabela DEPTDCODIGO DNOME GERENTE DSUPERIOR

A00 B01

SPIFFY COMP.SERVICE PLANNING MARKETING

000010 000020 000030 000030 A00 A00

LINHAD01

......

......

......

......

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

-8-

DB2 um DBMS Relacional

Sistema de Gerncia de Banco de Dados Integridade e Segurana de Dados Recuperao / Reinicio Integrados Definio Dinmica Operao Contnua

Modelo de Dados Relacional Dados vistos como Tabelas Projeto mais fcil

Linguagem Sql Definio, Manipulao e Controle dos Dados

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

-9-

Estrutura de Dados do DB2- A Tabela Relacional Tabela EMPMATR 000010 000020 000030 000050 000330 000340 NOME CHRISTINE MICHAEL SALLY JOHN WING JASON SOBRENOME HAAS THOMPSON KWAN GEYER LEE GOUNOT DEPARTAMENTO A00 S01 C01 E01 E21 E21 SALRIO 52750 41250 38250 40175 25370 23840

Todos os dados e relacionamento entre dados so representados por valores de campo.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 10 -

NOMENCLATURA

Toda tabela e toda coluna precisam ser nomeadas

O primeiro caracter precisa ser: A-Z, $, @, # Demais caracteres: A-Z, $, @, #, 0-9, _

O nome da tabela nico atravs do owner/creator/ schema

Nome da coluna unico na tabela

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 11 -

NOMENCLATURASchema/Owner/Creator da Tabela

Nome simples da Tabela

PRODNome da Tabela Qualificado(completo)

EMPL

PROD.EMPLNome da Tabela Nome da Coluna

EMPLNome da Coluna Qualificado

LASTNAME

EMPL.LASTNAME

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 12 -

Integridade de Referncia

CHAVE ESTRANGEIRA

CHAVE PRIMRIA

EMP ( D E P E N D E N T E ) NOME CARLOS MARIA DEPT Z13 A05 INT. REF.

D E P T (PAI) DEPTCOD Q3A Z13 Um depto. s pode ser excludo se no tiver nenhum dependente.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 13 -

Integridade de Referncia (cont.) Chave Primaria(PK) coluna(s) que garante(m) a unicidade das linhas. a chave principal de uma tabela. Uma tabela s pode ter uma Chave Primria. Chave Estrangeira(FK) coluna(s) de uma tabela que contm valores da PK de outra tabela. Uma tabela pode ter mais de uma Chave Estrangeira. implementado no DB2 via comandos 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

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 14 -

Integridade de Referncia (Cont.)

Na eliminao de uma linha da tabela PAI (PARENT TABLE), podem ocorrer situaes conforme a regra de deleo estabelecida para a chave estrangeira. regra CASCADE: todas as linhas dependentes so eliminadas. regra SET NULL: a chave estrangeira das linhas dependentes so atualizadas com valor nulo. regra RESTRICT: a eliminao impedida se ela possuir alguma linha dependente.

Todas as tabelas associadas entre si via regra de IR formam um conjunto chamado de estrutura referencial (reference structure).

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 15 -

Ambiente DB2

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 16 -

Coexistncia entre os Ambientes

TSO QMF SPUFI

BATCH UTILITY

TSO BATCH

IMS/TM

CICS DB2

BSDS

LOG

DB

CAT

DIR

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 17 -

Objetos DB2

TABLESPACE A TABELA 1 TABELA 2 INDEX 1 INDEX 2TS A IDX1 IDX2 IDX4

TABLESPACE B TABELA 3 TABELA 4 INDEX 3 INDEX 4 DATABASE X

NO DB2 TS B IDX3

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 18 -

Objetos DB2 (cont.)

STORAGE VOL1 NO DB2 TS IX VOL3 NO DB2 TS

GROUP1 VOL2

STORAGE GROUP2 VOLX NO DB2 TS VOL4 TS VOLY

TS IX

TS IX

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 19 -

Notas DATABASE (Banco de dados)

Conjunto de TABLESPACES e ndices agrupados sob um critrio administrativo. TABLE (Tabelas)

Conjunto de linhas com as mesmas colunas (atributos). TABLESPACE

Conjunto da data sets VSAM LDS (linear data set) que contm dados de uma ou mais tabelas Suas pginas podem ser de 4K, 8K, 16K ou 32 K.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 20 -

Notas (cont.)Tipos de TABLESPACE simples: as pginas de seus data sets podem conter dados de uma ou mais tabelas. segmentado: dividido em segmentos(conjuntos de pginas) . Cada segmento s pode conter dados de uma tabela. Utilizao recomendada pois permite ao DB2 uma administrao melhor de espao. particionado: recomendado para tabelas gigantes. dividido em parties( data set VSAM). Requer um ndice cluster com uma faixa de valores estabelecidos para cada partio. O DB2 se baseia nesta faixa para saber em qual partio gravar uma linha.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 21 -

Notas (cont.)

INDEX (NDICES) uma lista ordenada de valores que apontam para os dados nas tabelas. Utilizado para agilizar a leitura de dados. Pode ser utilizado t ambm para forar a unicidade dos dados. Tipos: UNIQUE NORMAL CLUSTER : fora a unidade dos dados : permite a duplicidade de dados : usado para manter a seqncia fsica dos dados no Tablespace

VIEW um subconjunto de uma ou mais tabelas. Sua utilizao, em princpio, nada difere de uma tabela normal. Conforme o caso uma VIEW pode ser somente leitura.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 22 -

Notas (cont.) STORAGE GROUP um conjunto de volumes (discos) aonde o s T A B L E S P A C E S ou ndices so armazenados. Os discos devem ter o mesmo device type (3375, 3380 etc). A utilizao dos STG poupa o usurio da codificao de AMS de VS AM para criar os data sets via DEFINE CLUSTER. Os discos de um STG no precisam ser dedicados ao DB2. SYNONYM (SINNIMO) um nome alternativo (apelido) para uma tabela ou view. Uma vez criado, sua utilizao restrita a um Auth-id. (Proprietrio ou usurio) LIAS um nome alternativo (apelido) para uma tabela ou view. Utilizado mais como nome local de uma tabela remota. Seu uso compartilhado.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 23 -

Estrutura do DB2

CAT LOGO

DIRETRIO

LOG ATIVA D BB 2 D 2

DATABASES LOG ARCHIVE BSDS

IMAGE COPY

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 24 -

Estrutura do DB2 (cont.)NOTAS: O catlogo um conjunto de tabelas do DB2 e pode ser acessado atravs da linguagem SQL. O BSDS um arquivo VSAM KSDS, que contm um histrico das Logs do DB2. O diretrio um conjunto de arquivos com informaes do DB2, no podendo ser acessado por nenhum usurio.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 25 -

Utilizao da Linguagem SQL

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 26 -

Utilizao da Linguagem SQL

TSO Attach DB2 I QMF

DB2 IMS Attach PROGRAMA PROGRAMA

CICS Attach PROGRAMA

USURIO

USURIO

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 27 -

Utilizao da Linguagem SQL (cont.)

SQL STRUCTURED QUERY LANGUAGE

DDL DATA DEFINITION LANGUAGE

DML DATA MANIPULATION LANGUAGE

DCL DATA CONTROL LANGUAGE

PROGRAMA SQL ESTTICO PROGRAMA SQL DINAMICO INTERATIVO DB2

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 28 -

Utilizao da Linguagem SQL (cont.) DML (Data Manipulation Language) (Desenvolvimento) SELECT UPDATE DELETE INSERT : pesquisa de dados (READ) : atualizao de dados : eliminao de dados : insero de dados

DDL (Data Definition Language) (Suporte) CREATE ALTER DROP : definio de um objeto (tabela, ndice) : alterao de um objeto : eliminao de um objeto

D C L (Data Control Language) (Suporte/Desenvolvimento) GRANT REVOKE : fornecer um privilgio : tirar um privilgio

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 29 -

Linguagem SQL Qualquer acesso ao DB2 feito atravs da linguagem SQL. O usurio ao emitir um comando SQL deve estar autorizado para a execuo do mesmo. A linguagem SQL : NO PROCEDURAL T E M O CONCEITO DE TEORIA DOS CONJUNTOS S I MP L E S

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 30 -

Linguagem SQL (cont.) No procedural . Para cada dada pesquisa no precisamos informar os procedimentos necessrios como: 1. zere o contador 2. abra o arquivo 3. leia um registro 4. verifique se satisfaz o critrio 5. incremente o contador 6. etc. Com a instruo SELECT basta dizer: 1. quero os dados que satisfazem a condio X. O SQL trabalha com conjuntos e permite a execuo dos operadores que so familiares para ns da matemtica elementar. Quem no conhece os operadores Unio e Interseco? Com uma instruo SELECT podemos implementar os seguintes operadores:

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 31 -

Linguagem SQL (cont.)..Unio A B UNION

..Interseco

A

B

JOIN

..Diferena

A

-

B

OUTER JOIN

..Produto Cartesiano

A X B = {(x.y):x A e y B }

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 32 -

DDL - Data Definition Language

CREATE

DEFINIO DE OBJETOS

ALTER

ALTERAO DE UM OBJETO

DROP

ELIMINAO DE UM OBJETO PREVIAMENTE DEFINIDO

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 33 -

Create Table CREATE TABLE ORG (DEPTCOD CHAR(3) DEPTNOME VARCHAR(36) GERENTE CHAR(6), DIVISAO CHAR(8) PRIMARY KEY(DEPTCOD)) IN DBXX.TSXX CREATE TABLE STAFF (ID CHAR(6) NOME VARCHAR(12) . . . DEPT CHAR(3), NOT NULL, NOT NULL,

NOT NULL, NOT NULL, NOT NULL WITH DEFAULT,

PRIMARY KEY(ID), FOREIGN KEY(DEPT) REFERENCES ORG ON DELETE CASCADE) IN DBYY.TSYY ALTER TABLE STAFF ADD COLX DECIMAL (8,2)

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 34 -

Dados Numricos

Definio para Colunas Definio para ColunasTIPO DE DADO SMALLINT INTEGER INT DECIMAL (X,Y) DESCRIO Inteiros Inteiros Decimais FAIXA -32.768 + 32.767 -2.147.483.648 +2.147.483.647 X=total de dgitos Y=casas decimais X < 31 = 5.4e-79 to 7.2e+75 5.4e-79 to 7.2e+75

FLOAT (m) REAL FLOAT FLOAT (n) DOUBLE PRECISION ** 1 GER

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 50 -

Exemplos de Where 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

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 51 -

Seleo de Nulos Valor nulo como critrio de SELECT SELECT NOME, CARGO, COMIS FROM X.STAFF WHERE COMIS Resultado: NOME SANTANA DANTAS SOUZA PLOTZ CARGO GER GER GER GER COMIS IS NULL

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 52 -

Seleo de Nulos (cont.) Valor no nulo como critrio de SELECT SELECT NOME, CARGO, COMIS FROM X.STAFF WHERE COMIS Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES CARGO VENDAS VENDAS VENDAS VENDAS ATEND COMIS 612.45 846.55 650.25 1152.00 128.20 IS NOT NULL

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 53 -

Mltiplas Condies Operadores para mltiplas condies AND OR Dadas duas condies CARGO = VENDAS SALRIO < 17000

Para ter ambas satisfeitas: AND WHERE CARGO = VENDAS AND SALRIO < 17000 Resultado: NOME SUZUKI ALMEIDA CARGO VENDAS VENDAS SALRIO 16808.30 16502.83

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 54 -

Mltiplas Condies (cont.)Para ter qualquer uma satisfeitas: OR

WHERE CARGO Resultado: NOME ORSINI OBRIEN SUZUKI ALMEIDA JAMES

=

VENDAS OR SALRIO < 17000

CARGO VENDAS VENDAS VENDAS VENDAS ATEND

SALRIO 18171.25 18006.00 16808.30 16502.83 13504.60

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 55 -

Mltiplas Condies (cont.)

Usar parnteses para separar as condies AND, OR WHERE (CARGO = VENDAS AND COM > 1200)

OR ANOS > 10 Resultado: NOME KOONITZ JONES GRAHAM VIEIRA CARGO VENDAS GER VENDAS VENDAS ANOS 6 12 13 7 COMIS 1386.70 1200.30 1285.00

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 56 -

Mltiplas Condies (cont.)no eqivale a: WHERE CARGO = VENDAS

AND (COMIS > 1200 OR ANOS > 10)

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

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 57 -

IN Valor deve coincidir com algum elemento da lista

WHERE DEPT IN (38, 20, 42) equivale a: Mltiplos O R s para a mesma coluna:

WHERE DEPT = 38 OR DEPT = 20 OR DEPT = 42 NEGAO: NOT IN

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 58 -

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 20000 Resultado: NOME OLIVEIRA GRAHAM COL1 20094.15 21200.30

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 69 -

Order By Por Valor CalculadoEXEMPLO 1: SELECT NOME, SALRIO + COMIS FROM X.STAFF WHERE SALARIO + COMIS > 20000 ORDER BY 2 DESC Resultado: NOME GRAHAM OLIVEIRA EXEMPLO 2: SELECT CARGO, SALRIO + COMIS FROM X. STAFF ORDER BY CARGO, 2 COL1 21200.30 20094.15

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 70 -

Operador de Concatenaostring1 || string2 ABC || XYZ string1string2 ABCXYZ

TABELA X SNOME JONES MAR Q U E S

(COLUNAS varchar : snome nome) NOME MID JOHN P FRANCO X

SELECT SNOME || , || NOME || || MID || . FROM TABELA X Resultado : JONES, JONES P. MARQUES, FRANCO X.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 71 -

Funes de Coluna (Column Functions)Transforma dados de uma coluna em um nico valor. Dados numricos SUM AVG - Total dos valores de uma coluna - Mdia dos valores de uma coluna

Quaisquer tipos de dados MIN MAX - Menor valor de uma coluna - Maior valor de uma coluna

COUNT - Nmero de ocorrncias

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 72 -

Sum Avg Max MinEXEMPLO SELECT SUM(SALRIO), MIN(COMIS), MAX(COMIS) FROM X.STAFF WHERE DEPT = 56 Resultado: COL1 86076,20 COL2 17245,89 COL3 550844,60

OBS.: Valor nulo no so considerados em funes de coluna, EXCETO para a funo COUNT(*).

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 73 -

Sum Avg Max Min (cont.) Gera um nico valor a partir de um conjunto de valores de uma n ica coluna. O resultado no contm detalhes de linhas individuais. Podem ser pedidas mais de uma 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 (15,15-p+ s). Expresses do seguinte tipo tambm podem ser utilizadas. AVG(SALRIO + COMIS)

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 74 -

CountNmero de linhas que satisfazem a condio where. Nulos so contados . COUNT (DISTINCT nome-coluna) - Nmero de valores distintos na coluna. Nulos no so contados . COUNT (*)

Contar as pessoas cujo salrio exceda $ 18.000 e seus respectivos departamentos. Mostre a mdia salarial. SELECT COUNT(DISTINCT DEPT),COUNT(*),AVG(SALRIO) FROM X.STAFF WHERE SALARIO>18000 Resultado: COL1 8 COL2 COL3 16 19604.190625000

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 75 -

Cuidado com NulosSUM(SALARY)+ SUM(BONUS)+ SUM(COMM) VERSUS SUM(SALARY+ BONUS+ COMM)

EMPNO 000010 000020 000030 000040 -----Sum:

SALARY 1000 2000 2500 1500 -----7000 ======

BONUS 500 NULL 400 100 ----1000 =====

COMM 100 300 NULL 400 ---800 ====

SALARY+BONUS+COMM 1600 NULL NULL 2000 ------------------> 8800 3600 ====

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 76 -

Cuidado com NulosA 2 4 B 5 3 -

SUM (A) SUM (B)

=... =...

SUM (A +B ) = ... AVG (A) = ...

SUM (A) =... COUNT(*)

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 77 -

Literais Literais podem ser mostradas no resultado de um SELECT. Podem ser teis quando usadas com funes de coluna que no exibem cabealhos. Podemos selecionar apenas uma cadeia de caracteres conforme exemplo a seguir: SELECT TESTE XYZ FROM TABELAZ ( necessrio que a tabela exista).

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 78 -

LiteraisSELECT AVG(COMIS), SUM(COMIS) FROM X.STAFF COL1 513.31 COL2 12319.45

SELECT MED: , AVG(COMIS), SOMA: , SUM(COMIS) FROM X.STAFF COL1 MED: COL2 513.31 COL3 SOMA: COL4 12319.45

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 79 -

Group ByAgrupa um conjunto de linhas. Com GROUP BY, a funo de coluna calcula um valor para cada agrupamento. SELECT SUM(SALRIO), SUM(COMIS) FROM X.STAFF WHERE CARGO GER SELECT SUM(SALRIO), SUM(COMIS) FROM X.STAFF WHERE CARGO GER GROUP BY DEPT COL1 41269.53 45928.60 59778.80 . . . COL2 1468.70 867.15 1913.30 . . .

COL1 146976.93

COL2 4249.15

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 80 -

Group By (cont)SELECT DEPT, SUM(SALRIO), SUM(COMIS) FROM X.STAFF WHERE CARGO GER GROUP BY DEPT Resultado: DEPT 15 20 38 . . . COL1 41269.53 45928.60 59778.80 . . . COL2 1468.70 867.15 1913.30 . . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 81 -

Group By (cont.)NOTAS: Podemos fazer GROUP BY sobre mltiplas colunas. GROUP BY DEPT, CARGO As colunas referenciadas pelo SELECT que no sejam funo precisam ser agrupadas pelo GROUP BY(ver pagina anterior). O no agrupamento neste caso gera erro. O resultado contm uma linha sumrio para cada grupo. Todos os valores nulos so considerados como um grupo.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 82 -

Group By ... Order By Para garantir a ordem de classificao necessrio usar Order B y SELECT DEPT, SUM(SALRIO), SUM(COMIS) FROM X.STAFF WHERE CARGO GER GROUP BY DEPT ORDER BY 3 Resultado: DEPT 20 . . 15 . . 38 COL1 45928.60 . . 41269.53 . . 59778.80 COL2 867.15 . . 1468.70 . . 1913.30

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 83 -

Group By ... HavingCONDIES SOBRE GRUPOS S E L E C T . . . F R O M.. WHERE..... FILTROS GROUP BY... HAVING....

WHERE - escolhe linhas HAVING - escolhe grupos executado sempre aps GROUP BY

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 84 -

Exemplo de Having

SELECT DEPT, SUM(SALRIO) FROM X.STAFF GROUP BY DEPT DEPT 10 15 20 38 42 . . . COL1 83643.45 61929.33 64286.10 77285.55 58369.05 . . . SELECT DEPT, SUM(SALRIO) FROM X.STAFF GROUP BY DEPT HAVING SUM(SALRIO) > 65000 DEPT 10 38 . . . COL1 83643.45 77285.55 . . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 85 -

Select - 6 Clusulas

SELECT DEP, JOB, AVG(SAL) FROM EMPL

WHERE JOB 'M' GROUP BY DEP, JOB HAVING AVG(SAL) > 28000 ORDER BY 3 DESC

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 86 -

Execuo conceitual do Select

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 87 -

Execuo conceitual do Select (cont.)

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 88 -

Exemplos de Having (cont.)Mdia salarial por departamento apenas dos no-gerentes dos departamentos com mais de 3 pessoas. SELECT DEPT, AVG(SALRIO) FROM STAFF WHERE CARGO GER GROUP BY DEPT HAVING COUNT(*) > 3 Mdia salarial dos no -gerentes por departamento, que tenham somente pessoas com no mnimo 5 anos de experincia. Listar em ordem descendente por mdia. SELECT DEPT, AVG(SALRIO) FROM STAFF WHERE CARGO GER GROUP BY DEPT HAVING MIN(ANOS) >= 5 ORDER BY 2 DESC Os exemplos mostram que o SELECT e o HAVING podem usar funes diferentes.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 89 -

Sumrio Funes de Coluna Funes de Coluna s podem ser especificadas em: SELECT HAVING SELECT pode especificar somente Funes de Coluna Colunas especificadas no GROUP BY HAVING pode especificar Funes de Coluna sobre qualquer coluna contida numa tabela especificada no FROM Funes de Coluna no podem ser embutida uma dentro da outra.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 90 -

Funes Escalares (Scalar Functions)

Transforma um nico valor em outro valor.

Funes STRING

Funes de Converso

Funes Date/Time

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 91 -

Funes Escalares Ao contrrio das funes de coluna 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 dentro da outra. Ex.: SUBSTR (SUBSTR (...)...)

Funes de Coluna podem ser argumento de uma funo escalar. Ex.: SUBSTR (MAX(...)...)

Funes Escalares podem ser argumento de uma funo de coluna. Ex.: MAX (SUBSTR(...)).

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 92 -

Substr (string, incio, comprimento)

Se o comprimento no for especificado, a funo pega todo o resto.

Se a posio do incio ultrapassar o final do string teremos erro.

S e o incio +comprimento ultrapassar o final do string teremos erro.

Substring de nulo nulo

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 93 -

Substr (string, incio, comprimento) (cont.)

SELECT DEPTNOME, SUBSTR(DEPTNOME, 1, 4) FROM X.ORG Resultado:

DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA

COL1 MATR CAMP RIO MINA BAHI

SELECT DEPTCOD, DIVISAO FROM X.ORG WHERE SUBSTR(DIVISAO, 3) =EAS

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 94 -

Length (argumento) Fornece o tamanho de uma coluna do tipo caracter.

Se o argumento nulo, o resultado tambm ser nulo.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 95 -

Length (argumento)

(cont.)

SELECT NOME, LENGTH(NOME), CARGO, LENGTH(CARGO) FROM X.STAFF Obs: NOME tem tamanho varivel CARGO tem tamanho fixo Resultado: NOME SANTANA SILVAl DANTAS . . COL1 7 6 6 . . CARGO GER VENDAS GER . . COL2 6 6 6 . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 96 -

Value (arg1, arg2, ..., argn) 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 ser do mesmo tipo de dado (todos numricos ou todos caracteres).

Se todos os argumentos forem nulos, o resultado ser nulo.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 97 -

Value (arg1, arg2, ..., argn)

(cont.)

Dada uma lista de argumentos, mostra o primeiro no nulo.

SELECT ID, COMIS, BONUS, VALUE(COMIS, BONUS, 0) FROM X.STAFF

Resultado : ID 10 20 30 40 COMIS 612.45 846.55 BONUS 534.25 345.89 COL1 0.00 612.45 345.89 846.55

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 98 -

Funes de Converso

Converte um tipo de representao em outro. DECIMAL, FLOAT, INTEGER DIGITS HEX : converte nmero em nmero : converte nmero em alfa : converte alfa / nmero em hexa

SELECT DECIMAL(SALARIO, 9, 1),INTEGER(SALARIO) FROM.STAFF WHERE ID = 55 se coluna SALARIO (DEC (7,2)) : Resultado: COL1 17506.7 COL2 17506 17506.75

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 99 -

Dados Date/TimeDATE, TIME, TIMESTAMP armazenados como decimal compactado sem sinal. TIPO DE DADO DATE TIME TIMESTAMP FORMATO INTERNO aaaammdd hhmmss aaaammddhhmmssnnnnnn

Programas lidam s com FORMATO EXTERNO: string de caracteres

PADRO Formato TIME ISO hh.mm.ss USA hh: mm AM hh: mm PM EUR hh.mm.ss JIS 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 26 bytes

Timestamp: aaaa-mm -dd-hh.mm.ss.nnnnnn

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 100 -

Aritmtica Date/Time

Somente subtrao horrio - horrio = = > durao em hhmmss (packed decimal (6,0))

data - data ===== durao em aaaammdd (packed decimal (8,0)) > Na adio necessrio usar DURAO ROTULADA: Nmero n seguido da palavra chave: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MICROSECONDS horrio durao rotulada ==>horrio data durao rotulada ====>data Pode usar MIN, MAX, COUNT No pode usar SUM e AVG

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 101 -

Aritmtica de Date/Time (cont) Somando/Subtraindo durao data + ou - durao (data) DATACOL1 + 3 MONTHS - - Resulta em data

horrio +or - durao (tempo) - - Resulta em horrio TEMPCOL1 - 30 MINUTES - 20 SECONDS timestamp +or - durao (data) timestamp +or - durao (tempo) T S T C O L +2 DAYS - 3 HOURS T M S R C O L +50000 MICROSECONDS Subtraindo datas e horas data - data DATACOL1 - DATACOL2 DATACOL1 - 1984-12-20 Horrio - Horrio TEMPCOL1 - T E M P C O L 2 11:30 PM- TEMPCOL1 - - Resulta em durao - - Resulta em TIMESTAMP

- - Resulta em durao

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 102 -

Exemplos Date/TimeTABLE DT PRJDOC AX001 AX002 AX003

DATAINI 19900131 19880228 19870201

DATAFIM 20050331 19880831 19870201

HRINI 000000 000000 160000

HRFIM 153000 000000 234159

SELECT PRJCOD, DATAINI + 1 YEAR, DATAFIM - 2 MONTHS .... Resultado : PRJCOD AX001 AX002 AX003 SELECT PRJCOD, Resultado: COL1 31.01.1991 28.02.1989 01.02.1988 COL2 31.01.2005 30.06.1988 01.12.1986 HRFIM - HRINI .... COL2 153000 000000 074159

DATAFIM - DATAINI, COL1 00150200 00000602 00000000

PRJCOD AX001 AX002 AX003

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 103 -

Funes Escalares Date/Time CHAR: controla formato externo de dados date/time

SELECT CHAR(HRFIM, ISO), CHAR(HRFIM, USA) FROM DT WHERE PRJCOD = AX001

Resultado : COL1 15.30.00 COL2 03.30 PM

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 104 -

Funes Escalares Date/Time (cont.) DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, MICROSECOND - E X T R A I parte de uma data, horrio ou timestamp - Resulta num inteiro binrio

SELECT DAY(DATAINI), MONTH(DATAINI), YEAR (DATAINI) FROM DT WHERE YEAR(DATAINI) > 1988

Resultado: COL1 31 COL2 1 COL3 1990

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 105 -

Funes Escalares Date/Time (cont.) DAYS Nmero de dias desde 01/01/0001 SELECT DATAFIM - DATAINI, DAYS(DATAFIM) - DAYS(DATAINI) FROM DT WHERE PRJCOD = AX001 Resultado: COL1 00150200 COL2 5538 (n.dias)

DATE, TIME Extrai data ou horrio de um timestamp

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 106 -

Valores CorrentesCURRENT DATE Data de hoje C U R R E N T TIME Horrio corrente C U R R E N T TIMESTAMP Data e horrio corrente convertido para timestamp

SELECT * FROM DT WHERE DATAINI < CURRENT DATE - 90 DAYS

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 107 -

Join de Tabelas

D E P T C O D DEPTONOME G E R E N T E 10 MATRIZ 160 15 CAMPINAS 50 20 RIO 10 38 MINAS 30 42 BAHIA 100 Tabelas so relacionadas via dados comuns (domnios) J o i n implementado pela clusula FROM ou WHERE No faa J OIN de tabelas sem o predicado de join, o resultado um produto cartesiano entre as tabelas

ID 10 20 30 40 50 70 80 90 . .

NOME SANTANA ORSINI DANTAS OBRIEN SOUZA ALMEIDA JAMES KOONITZ . .

DEPT 20 20 38 38 15 15 20 42 . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 108 -

Join de Tabelas - Inner JoinListar o nome dos departamentos e seus respectivos gerentes SELECT DEPTNOME, NOME FROM X.STAFF, X.ORG WHERE GERENTE = ID X.ORG DEPTNOME RIO MINAS BAHIA . X.STAFF ID 30 10 100 . NOME DANTAS SANTANA PLOTZ .

GERENTE 10 30 100 .

DIVISO . WESTERN . .

Resultado: DEPTNOME RIO MINAS BAHIA NOME SANTANA DANTAS PLOTZ

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 109 -

Join de Tabelas - Inner Join

(cont.)

Listar o nome dos departamentos da diviso Western e seus gerentes SELECT DEPTNOME, NOME FROM X.STAFF, X.ORG WHERE DIVISO = WESTERN AND GERENTE = ID Resultado: DEPTNOME MINAS NOME DANTAS

Outra maneira de escrever o Inner Join SELECT DEPTNOME, NOME FROM X.STAFF INNER JOIN X.ORG ON GERENTE = ID WHERE DIVISO = WESTERN

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 110 -

Outer Join

Listar todos empregados, ee para os gerentes, o depto que eles gerenciam Listar todos empregados, para os gerentes, o depto que eles gerenciam SELECT DEPTNOME, NOME FROM X.STAFF LEFT OUTER JOIN ON GERENTE = ID X. ORG DEPTNOME G E R E N T E SO PAULO . MINAS 30 BAHIA 100 RIO 10 X. STAFF ID 10 20 30 40 100 NOME SANTANA ORSINI DANTAS OBRIEN PLOTZ DIVISO . WESTERN CPC WESTERN X.ORG

Resultado: DEPTNOME RIO MINAS BAHIA NOME SANTANA ORSINI DANTAS OBRIEN PLOTZ

OPES: LEFT JOIN, RIGHT JOIN e FULL JOIN

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 111 -

Join com Mais de Duas Tabelas

Listar os empregados, o nome do departamento aonde trabalham eesseus Listar os empregados, o nome do departamento aonde trabalham eus respectivos pedidos de vendas. respectivos pedidos de vendas. 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 CODPEDIDO 3456 6667 3580 7010 4567

REGRA: o nmero de predicados join igual ao nmero de tabelas menos 1

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 112 -

QualificadoresX.STAFF CODIGO 20 20 . .

NOME SANTANA ORSINI . .

DEPT 20 20 . .

CARGO GER VENDAS . .

X.ORG CODIGO DEPTNOME 10 MATRIZ 10 . . RIO . .

GERENTE 160 10 . .

SELECT NOME,DEPTNOME,CODIGO FROM X.STAFF, X.ORG WHERE CARGO = GER AND DEPT = CODIGO

Listar o nome dos gerentes, e respectivos nome e cdigo de departamentos

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 113 -

Qualificadores (cont.)SOLUO Qualificar com nome de tabela SELECT NOME, X.ORG.CODIGO, DEPTNOME FROM X.STAFF, X.ORG WHERE CARGO = GER AND DEPT = X.ORG.CDIGO Qualificador correlacionado

SELECT NOME, O.CODIGO, DEPTNOME FROM X.STAFF, X.ORG O WHERE CARGO = GER AND DEPT = O.CODIGO

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 114 -

Join de uma Tabela com ela mesmaListe os empregados que ganham mais que os seus gerentes 1. Obter informaes do empregado na X.STAFF (E) ID 80 NOME J A ME S ... SALRIO 19456.50 ... DEPT 20

2. Obter informaes do departamento na X.ORG DEPTCOD 20 DEPTNOME RIO ... GERENTE 10 ...

3. Obter informaes do gerente na X.STAFF (G) ID 10 NOME SANTANA ... SALRIO 18357.50 ... DEPT 20

4. Comparar o salrio dos dois 5. Se a condio satisfeita, colocar a linha na tabela resultante e partir para o prximo empregado.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 115 -

Join de uma Tabela com ela mesma (cont.)SOLUO: SELECT E.NOME, E.SALARIO, G.NOME, G.SALARIO FROM STAFF E, ORG D, STAFF G WHERE E.DEPT = D.DEPTCOD AND D.GERENTE = G.ID AND E.SALARIO > G.SALARIO Resultado: NOME OLIVEIRA . . SALARIO 19456.50 . NOME SANTANA . SALARIO 18357.50

Qualificadores so necessrios porque existe uma necessidade de tratar duas linhas da mesma tabela como se fossem pertencentes a tabelas distintas.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 116 -

UnioUNION faz a unio de tabelas resultados SELECT A1, A4 FROM TBLA WHERE A2 = Z Resultado

UNION SELECT B1, B4 FROM TBLA WHERE B1 > = N

. .

. .

Resultado

. . .

. . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 117 -

Unio

(cont.)

Queries so executadas serialmente.

A quantidade de colunas deve ser a mesma em todos os S E L E C T s .

Os tipos de dados das colunas correspondente devem ser iguais.

O operador union une as tabelas resultantes e elimina as linhas duplicadas, que implica num SORT.

O operador UNION ALL tambm une tabelas mas no elimina linhas duplicadas. No chama o sort portanto.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 118 -

Unio - ExemploA faixa de salrios dos atendentes atingiria a faixa de vendas se fosse dado um aumento de 17% e 2% respectivamente? SELECT CARGO, SALRIO * 1.17 FROM X.STAFF WHERE CARGO = ATEND UNION SELECT CARGO, SALRIO * 1.02 FROM X.STAFF WHERE CARGO = VENDAS ORDER BY 2 DESC CARGO VENDAS . VENDAS ATEND VENDAS . . COL1 21420.0000 17144.4660 16918.2000 16832.8866

Resultado:

.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 119 -

Union All Vs. UnionSELECT NOME FROM X.CANDIDATOS WHERE ENDEREO LIKE %SP UNION ALL SELECT SOBRENOME FROM X.ENTREVISTADOS WHERE SIT = REP NOME JACOBS MAR Q U E S ARANTES SILVA MAR Q U E S JACOBS UNION ALL - No faz classificao - No elimina duplicados NOME ARANTES JACOBS MAR Q U E S SILVA UNION - Classifica - Elimina duplicados = >do primeiro SELECT = UNION

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 120 -

Subquery

UM SELECT EMBUTIDO DENTRO DE UM S E L E C T

R E S U L T A D O D E U M A S U B Q U E R Y U S A D O P E L O S E L E C T E X T E R N O

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 121 -

Exemplo de SubqueryListar os funcionrios com salrio superior mdia da companhia X. STAFF NOME SALARIO

Encontrar a mdia salarial da companhia (SUBQUERY) SELECT AVG(SALARIO) FROM X.STAFF 16675.64

Comparar o salrio de cada funcionrio com o resultado SELECT NOME, SALRIO FROM X.STAFF WHERE SALARIO > (SELECT AVG(SALARIO) FROM X.STAFF)R EE S ULLTTA D O SS O M E N T E R SU ADO OMENTE D O SS E L E C T D EE N V E L DO ELECT D NVEL MAIS ALTO MAIS ALTO

R EE S U L T A D O D A SS U B Q U E R Y R SULTADO DA UBQUERY R EE T O R N AD O PP A R A O N I I V E L R TORNA DO ARA O NVEL SS U P E R O RR UPERI IO

Resultado: NOME SALARIO SANTANA 18357.50 ORSINI 18171.25

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 122 -

Consideraes Subquery Pode ser usado no WHERE ou no HAVING Pode ser encadeado Deve estar direita do operador na condio de seleo Deve ser colocado entre parnteses. Antes da Verso 7 do DB2, o subquery deve selecionar apenas uma coluna. O subquery pode retornar uma ou mais linhas e isto acaba determinando o operador a ser usado na condio de busca. NO pode conter UNION, UNION ALL ou O R D E R B Y Muitas vezes citado como SUBSELECT. Prefira SUBQUERY.

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 123 -

Subquery com uma Linha

Mostrar o funcionrio com o maior salrio da empresa

SELECT NOME, SALARIO FROM X.STAFF WHERE SALARIO = (SELECT MAX(SALARIO) FROM X.STAFF)

Resultado : NOME MOLINARI SALARIO 22959.20

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 124 -

Subquery C/Vrias Linhas: ALLLista classificada dos funcionrios com salrio superior a toda e qualquer mdia salarial departamental.

Encontrar mdia salarial para cada departamento. SELECT AVG (SALRIO) FROM X.STAFF GROUP BY DEPT Resultado: 20865.862500000 20865.862500000 15482.332500000 15482.332500000 16000.000000000 16000.000000000

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 125 -

Subquery C/Vrias Linhas: ALL (cont.)

Compare o salrio de cada funcionrio com a lista devolvida pela SUBQUERY SELECT NOME, SALRIO FROM X.STAFF WHERE SALRIO > ALL (SELECT AVG(SALRIO) FROM X.STAFF GROUP BY DEPT) ORDER BY NOME Resultado : NOME FRAYE GRHAM JONES MOLINARE SALARIO 21150.00 21000.00 21234.00 22959.20

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 126 -

Subquery C/Vrias Linhas: Any ou Some

Lista classificada dos funcionrios com salrio maior que aa Lista classificada dos funcionrios com salrio maior que mdia salarial de algum departamento mdia salarial de algum departamento

Encontrar mdia salarial para cada departamento . SELECT AVG (SALRIO) FROM X.STAFF GROUP BY DEPT Resultado: 20865.862500000 20865.862500000 15482.332500000 15482.332500000

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 127 -

Subquery C/Vrias Linhas: Any ou Some (cont.) Compare o salrio de cada funcionrio com a lista devolvida pela SUBQUERY

SELECT NOME, SALRIO FROM X.STAFF WHERE SALRIO > ANY (SELECT AVG (SALRIO) FROM X.STAFF GROUP BY DEPT) ORDER BY NOME Resultado: NOME DANIEL DAVIS EDWARDS . . SALRIO 19260.25 15484.50 17844.00 . .

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 128 -

IN

Lista de gerentes da diviso Sul

SELECT DEPT, NOME FROM X.STAFF WHERE CARGO = GER AND DEPT IN (SELECT DEPTCOD FROM X.ORG WHERE DIVISO = SUL) SUBQUERY resulta numa lista de D E P T C O D s da diviso Sul (66 e 84). IN eqivale a uma srie de OR...= sobre uma coluna = ANY pode substituir IN

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 129 -

IN (cont.)

SELECT DEPT, NOME FROM X.STAFF WHERE CARGO = GER AND DEPT = ANY (SELECT DEPTCOD FROM X.ORG WHERE DIVISO = SUL)

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 130 -

Subquery Num HavingListe os departamentos cuja mdia salarial inferior media da Liste os departamentos cuja mdia salarial inferior media da companhia, com as suas respectivas mdias. O salrio dos gerentess companhia, com as suas respectivas mdias. O salrio dos gerente no deve ser considerado. Ordene pela mdia. no deve ser considerado. Ordene pela mdia. SELECT DEPT, AVG(SALRIO) FROM X.STAFF WHERE CARGO GER GROUP BY DEPT HAVING AVG(SALRIO) < (SELECT AVG(SALRIO) FROM X.STAFF WHERE CARGO GER) ORDER BY 2 DESC Resultado: DEPT 66 51 84 20 COL1 16880.175000000 16235.200000000 15443.000000000 15309.530000000

Anotaes:

Domini Treinamento DB2 para Desenvolvedores

- 131 -