DB2 - Conceitos e Utilização
-
Upload
vrmgodoy6599 -
Category
Documents
-
view
340 -
download
10
description
Transcript of DB2 - Conceitos e Utilização
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
DBMS RELACIONAL..............................................................................................................................3DB2 um DBMS Relacional....................................................................................................................5OBJETOS DO DB2...................................................................................................................................7ENTIDADE RELACIONAMENTO.......................................................................................................10RELACIONAMENTO............................................................................................................................11LINGUAGEM SQL.................................................................................................................................17
INSTRUO SELECT.......................................................................................................................18QUERY............................................................................................................................................21SELECT DE TODAS AS COLUNAS............................................................................................23CONTROLE DE LINHAS..............................................................................................................24NULIDADE.....................................................................................................................................26MTIPLAS CONDIES..............................................................................................................28IN.....................................................................................................................................................30PESQUISAS PARCIAIS.................................................................................................................31MANIPULANDO TABELA RESULTANTE................................................................................33ORDER BY.....................................................................................................................................33SELECT DISTINCT.......................................................................................................................35SELECT DE VALORES CALCULADOS.....................................................................................37ORDER BY POR VALOR CALCULADO....................................................................................38SELECT AVANADO...................................................................................................................40JOIN DE TABELAS.......................................................................................................................57INNER JOIN....................................................................................................................................62OUTER JOIN...................................................................................................................................63EXPRESSES CASE......................................................................................................................64UNION.............................................................................................................................................65SUBQUERY....................................................................................................................................67
MANUTENO DE DADOS - INSERT.........................................................................................72MANUTENO DE DADOS - UPDATE........................................................................................73MANUTENO DE DADOS - DELETE........................................................................................74
DATA DEFINITION LANGUAGE.......................................................................................................75DDL.....................................................................................................................................................76STORAGE GROUP.............................................................................................................................77DATABASE........................................................................................................................................78TABLESPACE....................................................................................................................................79TABLE.................................................................................................................................................81NDICE................................................................................................................................................83VIEW...................................................................................................................................................84
DROP.......................................................................................................................................................85SQL ESTTICO vs. SQL DINMICO..................................................................................................86COMMIT / ROLLBACK........................................................................................................................91BIND........................................................................................................................................................92SEGURANA INTERNA DO DB2.......................................................................................................97UTLITRIOS DO DB2...........................................................................................................................99
SYSIBM.SYSUTILX........................................................................................................................100LOAD.................................................................................................................................................101
LOAD JCL..................................................................................................................................102FASES DO LOAD.........................................................................................................................105
CHECK DATA..................................................................................................................................109FASES DO CHECK DATA..........................................................................................................110
CHECK INDEX.................................................................................................................................112FASES DO CHECK INDEX.........................................................................................................112
REORG..............................................................................................................................................113FASES DO REORG......................................................................................................................113
COPY.................................................................................................................................................116MERGECOPY...................................................................................................................................117RECOVERY......................................................................................................................................118QUIESCE...........................................................................................................................................120REPORT............................................................................................................................................120INDEX RECOVERY........................................................................................................................121RECOVERY PENDING...................................................................................................................122MODIFY............................................................................................................................................123DIAGNOSE.......................................................................................................................................123
#59585 1
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 STOSPACE........................................................................................................................................123RUNSTATS.......................................................................................................................................124REPAIR.............................................................................................................................................124DSNTIAUL........................................................................................................................................125COMANDOS DB2............................................................................................................................126
#595852
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
DBMS RELACIONAL
QUANDO UM DBMS PODE SER CONSIDERADO RELACIONAL ??
1. Independncia dos Dados2. Estrutura Tabular3. Operadores de Tabelas4. Uniformidade e Integridade dos Dados.
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.
#59585 3
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
Tabela Empregados
Matricula Nome Cargo Depto Salrio
000010 Christiane D01 001 260000 000020 Karina R01 002 270010 000030 Jlio S01 003 300010 Linhas 000040 Ingrid P01 004 250500 000050 Juan P02 004 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.
#595854
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
DB2 um DBMS Relacional
SISTEMA DE GERENCIA DE BANCO DE DADOS
Integridade e Segurana de Dados Recuperao e Reinicio Integrados Definio Dinmica Operao Contnua
Modelo de Dados Linguagem SQL Relacional - Os dados vistos - Definio
como Tabelas Manipulao e - Projeto mais fcil Controle de dados
#59585 5
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 AMBIENTE 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).
#595856
IMS TM CICS Qmf/Spffi BATCH
IMS DM DB2DPROP
DXT
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
OBJETOS DO DB2
DATA BASE
Tablespace1
Indice1 Tabela1
Tablespace2
Indice2 Tabela2
View X
Storage Group A Storage Group B
#59585 7
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 OBJETOS DO B2
Notas:
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:
SIMPLESAs 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.
PARTICIONADORecomendado 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:
UNIQUEFora a unicidade dos dados atravs dos valores de uma coluna escolhida como chave primaria.
#595858
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
OBJETOS DO B2 (Continuao)
CLUSTERA 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 9
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
ENTIDADE RELACIONAMENTO
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.
#5958510
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
RELACIONAMENTO
Matr Nome Depto EMPR
419 Maria A00003 Carlos Z13
Operador Relacional
DeptoCod DeptoNome DEPT
Z13 Reserva A00 Vendas
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
Chave Primria
Chave Estrangeira
CarlosTrabalhana Reserva
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TIPOS DE RELACIONAMETO
1 PARA MUITOS
Colocar a chave estrangeira aqui
EMPREGADO M : 1 DEPARTAMENTOCarlos ReservaPauloMaria Vendas
DEPTO DeptoCod DeptoNome
Z13Reserva A00 Vendas : :
EMPREGADO
Matr Nome Dept
419 Maria A00 003 Carlos Z13 087 Paulo Z13 : : :
#5958512
ChavePrimria
ChaveEstrangeira
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TIPOS DE RELACIONAMENTO
Notas:
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 19/11/98 TIPOS DE RELACIONAMENTO
MUITOS PARA MUITOS
EMPREGADO M : M PROJETOCarlos Ano 2.000PauloMaria Qualidade
Onde colocar a chave estrangeira ?
EMPREGADO EMP-PROJMatr Nome Mat Cod419 Maria 003 A2 PROJETO003 Carlos 087 A2 087 Paulo : : Pcod PNome
419 A2 A2 Projeto 2.000 : : QD Qualidade 419 QD
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.
#5958514
Chave Primria
Chave PrimriaChave Estrangeira
Chave Estrangeira
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 INTEGRIDADE DE REFERENCIA
EMPR DEPT(Dependet) (Parent)
Matr Nome Depto Dcod Dnome419 Maria A00 A00 Vendas003 Carlos Z13 V75 Contabilidade : : : Z13 Reserva
: :
IntegridadeReferencial
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 19/11/98 INTEGRIDADE DE REFERENCIA (Continuao).
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.
#5958516
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
LINGUAGEM SQL
SQL
STRUCTUREDQUERY
LANGUAGE
SELECT CREATE GRANTUPDATE ALTER REVOKEDELETE DROP COMMITINSERT ROLLBACK
DML DDL CONTROL
Notas:
A Linguagem SQL pode ser separada em trs grupos:
DMLData Manipulation Language, utilizado para fazer pesquisas e atualizaes nas tabelas DB2.
DDLData 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 19/11/98 INSTRUO SELECT
No procedural Conceito da teoria os conjuntos Fcil
Notas:
A instruo SELECT no procedural. Em outras palavras no precisamos fornecer todos os procedimentos necessrios para fazer uma pesquisa tais como:
1. Zere o contador2. Abra o arquivo3. Leia um registro4. Verifique se satisfaz o critrio de pesquisa5. Incremente o contador6. 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 A U B
A B INTERSECO A B
A B DIFERENA A - B
PRODUTO A X B = { (x, y) : x A e y B} CARTESIANO
#5958518
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TABELAS USADAS NOS EXEMPLOS
x.staff
ID NOME DEPT CARGO ANOS SALARIO COMIS10 SANTANA 20 GER 7 18357.50 -20 ORSINI 20 VENDAS 8 18171.25 612.4530 DANTAS 38 GER 5 17506.75 -40 OBRIEN 38 VENDAS 6 18006.00 846.5550 SOUZA 15 GER 10 20659.80 -60 SUZUKI 38 VENDAS - 16808.30 650.2570 ALMEIDA 15 VENDAS 7 16502.83 1152.0080 JAMES 20 ATEND - 13504.60 128.2090 KOONITZ 42 VENDAS 6 18001.75 1386.70
100 PLOTZ 42 GER 7 18352.80 -110 NGAN 15 ATEND 5 12508.20 206.60120 NAUGHTON 38 ATEND - 12954.75 180.00130 YAMAGUCHI 42 ATEND 6 10505.90 75.60140 FRAYE 51 GER 6 21150.00 -150 OLIVEIRA 51 VENDAS 6 19456.50 637.50160 MOLINARI 10 GER 7 22959,20 -170 KERMISCH 15 ATEND 4 12258.50 110.10180 ABRAHAMS 38 ATEND 3 12009.75 236.50190 SNEIDER 20 ATEND 8 14252.75 126.50200 SCOUTTEN 42 ATEND - 11508.60 84.20210 LU 10 GER 10 20010.00 -220 SMITH 51 VENDAS 7 17654.50 922.80230 LUNDQUIST 51 ATEND 3 13369.80 189.65240 DANIELS 10 GER 5 19260.25 -250 WHEELER 51 ATEND 6 14460.00 513.30260 JONES 10 GER 12 21234.00 -270 LEA 66 GER 9 18555.50 -280 WILSON 66 VENDAS 9 18674.50 811.50290 PINHO 84 GER 10 19818.00 -300 DAVIS 84 VENDAS 5 15454.50 806.10310 GRAHAM 66 VENDAS 13 21000.00 200.30320 GONZALES 66 VENDAS 4 16858.20 844.00330 BURKE 66 ATEND 1 10988.00 55.50340 VIEIRA 84 VENDAS 7 17844.00 1285.00350 GAFNEY 84 ATEND 5 13030.50 188.00TABELAS USADAS NOS EXEMPLOS (Continuao)
#59585 19
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
x.org
DEPTCOD DEPTNOME GERENTE DIVISO LOCAL10 MATRIZ 160 CENTRO SO PAULO15 CAMPINAS 50 SUDESTE CAMPINAS20 RIO 10 SUDESTE RIO DE JANEIRO38 MINAS 30 SUDESTE B. HORIZONTE42 BAHIA 100 NORDESTE SALVADOR51 RECIFE 140 NORDESTE RECIFE66 RIO GRANDE 270 SUL PORTO ALEGRE84 PARAN 290 SUL CURITIBA
#5958520
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
QUERY
Sequncia obrigatria:
SELECT NOME, ANOS, SALARIO - Diz quais as colunas mostrar
FROM x.staff - Diz de quais tabelas
WHERE DEPT = 38 - Diz quais linhas selecionar
ORDER BY NOME - 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 19/11/98
SELECT ... FROM
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, DEPTCODFROM x.org
Resultado:DEPTNOME DEPTCODMATRIZ 10CAMPINAS 15RIO 20MINAS 38: :
#5958522
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SELECT DE TODAS AS COLUNAS
Para selecionar todas as colunas de uma tabela na mesma sequncia em que foram definidas:
SELECT * FROM x.org
Resultado:
DEPTCOD DEPTNOME GERENTE DIVISO LOCAL10 MATRIZ 160 CENTRO SO PAULO15 CAMPINAS 50 SUDESTE CAMPINAS20 RIO 10 SUDESTE RIO DE JANEIRO38 MINAS 30 SUDESTE B. HORIZONTE
: : : : :
#59585 23
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
CONTROLE DE LINHAS
WHERE
Traz certas linhas Estabelece condies
Listar empregados do departamento 20
SELECT DEPT, NOME, CARGO, COMISFROM x.staffWHERE DEPT = 20
Resultado:
ID NOME DEPT CARGO ANOS SALARIO COMIS10 SANTANA 20 GER 7 18357.50 -20 ORSINI 20 VENDAS 8 18171.25 612.4580 JAMES 20 ATEND - 13504.60 128.20
190 SNEIDER 20 ATEND 8 14252.75 126.50
Selecionar linhas atravs de dado numrico
SELECT DEPT, NOME, CARGOFROM x.staffWHERE DEPT = 20
Selecionar linhas atravs de dado alfanumrico
SELECT NOME, CARGO, COMISFROM x.staffWHERE NOME = SANTANA
#5958524
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
OPERADORES DE COMPARAO
= Igual or = Diferente
> Maior>= Maior ou Igual< Menor No Maior< No Menor
SELECT MATR, COMISFROM x.staffWHERE COMIS >= 1000
SELECT NOME, DEPT, ANOSFROM x.staffWHERE CARGO GER
#59585 25
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
NULIDADE
Na insero de linha, uma coluna que :
NOT NULL O valor deve ser fornecido (ALLOW) NULL O valor pode ser omitido
Um valor NULO: No zeroNo Branco Desconhecido
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.
#5958526
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SELEO DE NULOS
Valor nulo como critrio de SELECT
SELECT NOME, CARGO, COMISFROM x.staffWHERE COMIS IS NULL
Resultado:
NOME CARGO COMISSANTANA GER -DANTAS GER -SOUZA GER -PLOTZ GER -FRAYE GER -: : :
Valor no nulo como critrio de SELECT
SELECT NOME, CARGO, COMISFROM x.staffWHERE COMIS IS NOT NULL
Resultado:
NOME CARGO COMISORSINI VENDAS 612.45OBRIEN VENDAS 846.55SUZUKI VENDAS 650.25ALMEIDA VENDAS 1152.00JAMES ATEND 128.20KOONITZ VENDAS 1386.70NGAN ATEND 206.60NAUGHTON ATEND 180.00YAMAGUCHI ATEND 75.60OLIVEIRA VENDAS 637.50KERMISCH ATEND 110.10: : :
#59585 27
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
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 CARGO SALARIOSUZUKI VENDAS 16808.30ALMEIDA VENDAS 16502.83: : :
Para ter qualquer uma satisfeitas: OR
WHERE CARGO VENDAS OR SALARIO < 17000
Resultado:
NOME CARGO SALARIOORSINI VENDAS 18171.25OBRIEN VENDAS 18006.00SUZUKI VENDAS 16808.30ALMEIDA VENDAS 16502.83JAMES ATEND 13504.60: : :
#5958528
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 MLTIPLAS CONDIES (Continuao)
WHERE (CARGO = VENDAS AND COMIS > 1200) OR ANOS > 10
Resultados:
NOME CARGO ANOS COMISKOONITZ VENDAS 6 1386.70JONES GER 12 -GRAHAM VENDAS 13 200.30VIEIRA VENDAS 7 1285.00: : : :: : : :
No equivale a:
WHERE CARGO = VENDAS AND (COMIS > 1200 OR ANOS > 10)
Resultados:
NOME CARGO ANOS COMISKOONITZ VENDAS 6 1386.70GRAHAM VENDAS 13 200.30VIEIRA VENDAS 7 1285.00
#59585 29
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
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, ANOSFROM x.staffWHERE ANOS BETWEEN 9 AND 11
Equivale a
SELECT NOME, CARGO, ANOS FROM x.staffWHERE ANOS >= 9 AND ANOS
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
PESQUISAS PARCIAIS
Para pesquisar um subconjunto de caracteres : LIKE
% Conjunto de caracteres quaisquer_ Um caracter qualquer
EXEMPLOS:
WHERE NOME LIKE G% Inclui: GRAHAMGONZALESGAFNEY
WHERE NOME LIKE %SON Inclui: WILSONJASON
WHERE NOME LIKE %M%N% Inclui: SAMANTAMOLINARI
WHERE NOME LIKE _ _ Inclui: LUWHERE NOME LIKE _R% Inclui: 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 19/11/98 NEGAO
Para reverter o teste:
WHERE NOME NOT LIKE G%
Exclui: GRAHAM, GONZALES, GAFNEY.
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
#5958532
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
MANIPULANDO TABELA RESULTANTE
Para classificar as linhas: ORDER BY
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.staffWHERE DEPT = 84 ORDER BY NOME
Resultado:
NOME CARGO ANOSDAVIS VENDAS 5GAFNEY ATEND 5PINHO GER 10VIEIRA VENDAS 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 19/11/98 ORDER BY (Continuao)
Para classificar pelas coluna(s) em ordem ASCendente (default) ou DESCendente.
SELECT NOME, CARGO, ANOSFROM x.staff WHERE DEPT = 84 ORDER BY CARGO, ANOS DESC
Resultado:NOME CARGO ANOSGAFNEY ATEND 5PINHO GER 10VIEIRA VENDAS 7DAVIS VENDAS 5
ORDER BY ANOS DESC, CARGO
Resultado:
NOME CARGO ANOSPINHO GER 10VIEIRA VENDAS 7GAFNEY ATEND 5DAVIS VENDAS 5
#5958534
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SELECT DISTINCT
SELECT DEPT FROM x.staffDEPT
20203838153810
.
.
Para eliminar linhas duplicadas:
SELECT DISTINCT DEPT FROM x.staffDEPT
20152038
.
Mltiplas colunas
SELECT DISTINCT DEPT, CARGO FROM x.staffDEPT CARGO
10 GER15 ATEND15 GER15 VENDAS20 ATEND20 GER20 VENDAS38 ATEND
: :SELECT DISTINCT (Continuao)
#59585 35
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
Notas:
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, CARGOFROM x.staffORDER BY CARGO
DEPT CARGO15 ATEND20 ATEND38 ATEND. .. .10 GER15 GER20 GER. .. .. .15 VENDAS20 VENDAS. .. .. .
#5958536
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SELECT DE VALORES CALCULADOS
+ SOMA * MULTIPLICAO- SUBTRAO / DIVISO
Ganho total de cada pessoa do DEPT 20
SELECT ID, SALARIO, COMIS, SALARIO + COMIS AS TOTALFROM x.staffWHERE DEPT = 20
Resultado: ID SALARIO COMIS TOTAL10 18357.50 - -20 18171.25 612.45 18783.7080 13504.60 128.20 13632.80
190 14252.75 126.50 14379.25
Pessoas cujo salrio mais comisso excede R$ 20.000
SELECT NOME, SALARIO + COMIS AS TOTALFROM x.staffWHERE SALARIO + COMIS > 20000
Resultado:NOME TOTALOLIVEIRA 20094.15GRAHAM 21200.30
#59585 37
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
ORDER BY POR VALOR CALCULADO
Exemplo 1:
SELECT NOME, SALARIO + COMISFROM x.staffWHERE SALARIO + COMIS > 20000ORDER BY 2 DESC
Resultado: NOME TOTALGRAHAM 21200.30OLIVEIRA 20094.15
Exemplo 2:
SELECT CARGO, SALARIO + COMISFROM x.staffORDER BY CARGO, 2
#5958538
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
OPERADORES DE CONCATENAO
string1 || string2 string1string2
ABC || XYZ ABCXYZ
TABELAX ( colunas varchar : SNOM e NOME )
SNOM NOME MIDJONES JOHN PMARQUES FRANCO X. . .
SELECT SNOM || , || NOME|| || MID || .FROM TABELAX
Resultado:JONES,JOHN P.MARQUES,FRANCO X.. . .
#59585 39
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
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 de dados MIN Menor valor de uma coluna MAX Maior valor de uma coluna COUNT Nmero de ocorrncias
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.
#5958540
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SUM AVG MAX MIN
Exemplo:
SELECT SUM(SALARIO), AVG(SALARIO), MIN(COMIS), MAX(COMIS)
FROM x.staffWHERE 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 19/11/98 COUNT
COUNT(*) Nmero de linhas que satisfazem a condio WHERE
COUNT(DISTINCT coluna) Nmero de valores diferentes na colunaNulos no so contados.
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.staffWHERE 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: 513.31 SOMA: 12319.45
Notas:
Literais podem ser mostradas no resultado de um SELECT So Particularmente teis quando usadas com funes de coluna que no exibem cabealhos.
GROUP BY
#5958542
-
DB2 - CONCEITOS E UTILIZAO 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.staffWHERE CARGO GERGROUP BY DEPT
Resultado:
DEPT TOTSAL TOTCOM15 41269.53 1468,7020 45928.60 867.1538 59778.80 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 19/11/98 GROUP BY ... ORDER BY
Podemos alterar a ordem de classificao
SELECT DEPT, SUM(SALARIO) AS TOTSAL,SUM(COMIS) AS TOTCOM
FROM x.staffWHERE CARGO GERGROUP BY DEPT ORDER BY 3
Resultado:DEPT TOTSAL TOTCOM
20 45928.60 867.15. . .
15 41269.53 1468.70. . .
38 59778.80 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 funoprecisam 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.
#5958544
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
GROUP BY ... HAVING
Condies sobre grupos
SELECT . . . FROM . . . WHERE . . .
GROUP BY . . . FILTROSHAVING . . .
WHERE - Escolhe linhasHAVING - Escolhe grupos
SELECT DEPT, SUM(SALARIO) AS TOTSALFROM x.staffGROUP BY DEPT
DEPT TOTSAL10 83463.4515 61929.3320 64286.1038 77285.5542 58369.05
: :
SELECT DEPT, SUM(SALARIO) AS TOTSALFROM x.staffGROUP BY DEPTHAVING SUM(SALARIO) > 65000
DEPT TOTSAL10 83463.4538 77285.55
: :
#59585 45
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 EXEMPLOS DE HAVING(Continuao)
Mdia salarial por departamento. Considerar apenas os no-gerentes dos departamentos com mais de 3 pessoas sem cargo gerencial.
SELECT DEPT, AVG(SALARIO) AS MEDIASALFROM x.staffWHERE CARGO GERHAVING 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 MEDIASALFROM x.staffWHERE CARGO GERGROUP BY DEPTHAVING MIN(ANOS) >= 5ORDER 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.
#5958546
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 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
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 19/11/98 SUBSTR(string, incio, comprimento)
SELECT DEPTNOME, SUBSTR(DEPTNOME,1,4) as NOMEPARCFROM x.org
Resultado:DEPTNOME NOMEPARCMATRIZ MATRCAMPINAS CAMPRIO RIOMINAS MINABAHIA BAHI
. .
SELECT DEPTCOD, DIVISOFROM x.orgWHERE SUBSTR(DIVISO,4) = ESTE
Resultado:DEPTCOD DIVISO
15 SUDESTE20 SUDESTE38 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.
#5958548
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 LENGTH
SELECT NOME, LENGTH(NOME) AS TAMNOME,CARGO, LENGTH(CARGO) AS TAMCAR
FROM x.staff
Resultado: NOME TAMNOME CARGO TAMCAR
SANTANA 7 GER 6ORSINI 6 VENDAS 6GONZALES 8 VENDAS 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 19/11/98 VALUE
Dada uma lista de argumentos, mostra o primeiro no nulo
SELECT ID, COMIS, VALUE(COMIS, 0) FROM x.staff
Resultado: ID COMIS
10 - 0.0020 612.45 612.4530 - 0.00
. . .
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.
#5958550
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 FUNES DE CONVERSO
Converte um tipo de representao em outro.
DECIMAL, FLOAT, INTEGER Nmero - NmeroDIGITS Nmero - AlfaHEX Hexadecimal - Alfa
SELECT DECIMAL(SAL,9,1), INTEGER(SAL)FROM EMPWHERE 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 19/11/98 DADOS DATE/TIME
DATE, TIME, TIMESTAMP armazenados como decimal compactado sem sinal
Data Types Formato InternoDATE aaaammddTIME hhmmssTIMESTAMP aaaammddhhmmssnnnnnn
Programas lidam s com FORMATO EXTERNO: string de caracteres
Formato Formato TIME Tamanho Formato Date TamanhoISO hh.mm.ss 8 bytes aaaa-mm-dd 10 bytesUSA hh.mm AM/PM 8 bytes mm/dd/aaaa 10 bytesEUR hh.mm.ss 8 bytes dd.mm.aaaa 10 bytesJIS hh:mm:ss 8 bytes aaaa.mm.dd 10 bytes
#5958552
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 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 Durao em hhmmss(packed decimal(8,0))
data + ou - data Durao em aaaammdd(packed decimal(8,0))
Durao Rotulada
Nmero n seguida da palavra chave: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, MICROSECONDS
Somando/Subtraindo duraoDATACOL1 + 3 MONTHS Resulta em DataTEMPCOL1 - 30 MINUTES - 20 SECONDS Resulta em tempoTSTCOL + 2 DAYS - 3 HOURSTMSTCOL + 50000 MICROSECONDS
Subtraindo datas e temposDATACOL1 - DATACOL2DATACOL1 - 25.12.1998TEMPCOL1 - TEMPCOL2TEMPCOL1 - 11.30.00
#59585 53
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 EXEMPLOS ARITMTICA DATE/TIME
Tabela DT
PROJCOD DATAINI DATAFIM HRINI HRFIMAX001 31.01.1990 31.03.2005 00:00:00 15:30:00AX002 29.02.1988 31.08.1988 00:00:00 00:00:00AX003 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 DATAINI DATAFIMAX001 31.01.1991 31.01.2005AX002 28.02.1989 30.06.1988AX003 01.02.1988 01.12.1986
SELECT PROJCOD, DATAFIM - DATAINI AS aaaammdd, HRFIM - HRINI AS hhmmss ...
Resultado:PROJCOD aaaammdd hhmmssAX001 00150200 153000AX002 00000602 000000AX003 00000000 074159
#5958554
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 FUNES ESCALARES DATE/TIME
CHAR: Controla formato externo de dados DATE/TIME
SELECT CHAR(HRFIM,ISO) AS HR_ISO, CHAR(HRFIM,USA) AS HR_USAFROM DT WHERE PROJCOD = AX001
Resultado:HR_ISO HR_USA15.30.00 03:30 PM
DAY, MONTH, YEAR HOURS, MINUTE, SECOND MICROSECOND
Extrai parte de uma data, horrio ou timestampResulta num inteiro binrio.
SELECT DAY(DATAINI) AS DIA, MONTH(DATAINI) AS MS, YEAR(DATAINI) AS ANO FROM DTWHERE YEAR(DATAINI) > 1988
Resultado:DIA MS ANO
31 1 1990
#59585 55
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 FUNES ESCALARES DATE/TIME(Continuao)
DAYS Nmero de dias desde 31/01/0000
SELECT DATAFIM - DATAIN AS DATAS, DAYS(DATAFIM) - DAYS(DATAIN) AS NU_DIAS FROM DTWHERE PROJCOD = AX001
Resultado: DATAS NU_DIAS
00150228 5538 aaaammdd (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.
#5958556
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
JOIN DE TABELAS
Mesmo domnio
ID NOME DEPT10 SANTANA 2020 ORSINI 2030 DANTAS 3840 OBRIEN 3850 SOUZA 1560 SUZUKI 38 DEPTCOD DEPTNOME GERENTE70 ALMEIDA 15 10 MATRIZ 16080 JAMES 20 15 CAMPINAS 5090 KOONITZ 42 20 RIO 10100 PLOTZ 42 38 MINAS 30
. . . 42 BAHIA 10051 RECIFE 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 19/11/98 JOIN DE TABELAS(Continuao)
Listar o nome dos departamentos e seus respectivos gerentes.
SELECT DEPTNOME, NOMEFROM x.staff, x.orgWHERE GERENTE = ID
Resultado:DEPTNOME NOMERIO SANTANAMINAS DANTASCAMPINAS SOUZA. .
Listar o nome dos departamentos da diviso Sudeste e seus respectivos gerentes.
SELECT DEPTNOME, NOMEFROM x.staff, x.orgWHERE 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 A2 A3 R1 R2 B1 B2 B3A A X XB A Y YC B X
B YC XC Y
#5958558
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 JOIN COM MAIS DE DUAS TABELAS
SELECT ID, NOME, DEPT, DEPTNOME, CODPEDIDOFROM x.staff, x.org, x.vendasWHERE DEPT = DEPTCOD AND ID=COD_RVENDA
Resultado:ID NOME DEPT DEPTNOME CODPEDIDO20 ORSINI 20 RIO 345620 ORSINI 20 RIO 666720 ORSINI 20 RIO 358020 ORSINI 20 RIO 701040 OBRIEN 38 MINAS 4567. . . . .
QUALIFICADORES
COD NOME DEPT CARGO COD DEPTNOME GERENTE10 SANTANA 20 GER 10 MATRIZ 16020 ORSINI 20 VENDA . . .. . . . 10 RIO 10
Listar o nome dos gerentes, e respectivos nome e cdigo de departamentos.
SOLUO:
Qualificar com o nome da tabelaSELECT NOME, x.org.CODIGO, DEPTNOMEFROM x.staff, x.orgWHERE CARGO = GER AND DEPT = x.org.CODIGO
Qualificador correlacionado
SELECT NOME, Z.CODIGO, DEPTNOMEFROM x.staff, x.org ZWHERE CARGO = GER AND DEPT = Z.CODIGO
#59585 59
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 QUALIFICADORES
Notas:
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.
#5958560
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 JOIN DE UMA TABELA COM ELA MESMA
Liste os empregados que ganham mais que os seus gerentes
CONCEITUALMENTE:
1. Obter um empregado da VEMPRMATR NOME ... SALARIO ... GER
150 OLIVEIRA 19456.50 140
2. Obter informaes do gerente da VEMPRMATR NOME ... SALARIO ... GER
140 SANTANA 18357.50 050
3. Comparar o salrio dos dois
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.SALARIOFROM VEMPR E, VEMPR G WHERE E.GER = G.MATR AND E.SALARIO > G.SALARIO
Resultado:NOME SALARIO NOME SALARIOOLIVEIRA 19456.50 SANTANA 18357.50
. . . .
. . . .
#59585 61
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
INNER JOIN
Uma outra maneira de codificar o JOIN entre duas tabelas
SELECT DEPTNOME, NOMEFROM x.staff INNER JOIN x.orgON GERENTE = ID
Resultado:DEPTNOME NOMERIO SANTANAMINAS DANTASCAMPINAS SOUZA. .
Nota:
Quando utilizamos a clusulas JOIN deve mudar o predicado WHERE por ON.
TABELAS EXEMPLOS:EMPL DEPTOEMPNO NOME DEPTNOME CODEMP
10 HAAS SPIFFY COMPUTER 10150 ADAMSON DEVELOPMENT -20 THOMPSON SOFTWARE 100
250 SMITH ADMINISTRATION 700100 SPENSER BRANCH OFFICE -70 PILASKI
140 NATZ
#5958562
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
OUTER JOIN
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, DEPTNOMEFROM EMPL RIGHT OUTER JOIN DEPTOON EMPNO = CODEMP
SELECT NOME, DEPTNOMEFROM EMPL LEFT OUTER JOIN DEPTOON EMPNO = CODEMP
Resultados: RIGHT OUTER JOIN LEFT OUTER JOINNOME DEPTNOME NOME DEPTNOMEHAAS SPIFFY COMPUTER HAAS SPIFFY COMPUTER- DEVELOPMENT ADAMSON -SPENSER SOFTWARE THOMPSON -PULASKI ADMINISTRATION SMITH -- BRANCH OFFICE SPENSER SOFTWARE
PULASKI ADMINISTRATIONNATZ -
#59585 63
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
EXPRESSES CASE
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 MediumWHEN SIZE = L THEN LargeWHEN SIZE = X THEN XlargeELSE DESCONHECIDO END AS SIZE, QTY
FROM QTY .25
Usando em Funes de colunas
... MIN (CASE WHEN QTY > 0 THEN QTY ELSE NULL END)
#5958564
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
UNION
UNION junta as tabelas resultado
SELECT A1, A4 FROM TBLAWHERE A2 = Z
Resultado
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 19/11/98 UNION(Continuao)
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 = ATENDUNIONSELECT CARGO, SALARIO * 1.02 FROM x.staff WHERE CARGO = VENDASORDER BY 2 DESC
Resultado: CARGO SALARIOVENDAS 21420.0000. .. .VENDAS 17144.4660ATEND 16918.2000VENDAS 16832.8866
SELECT NOME FROM X.CANDIDATOS WHERE ENDERECO LIKE %SP
UNION ALL UNION SELECT SOBRENOME FROM X.ENTREVISTADOSWHERE SIT = REP
Resultado:NOME NOMEJACOBS ARANTESMARQUES JACOBSARANTES MARQUESSILVA SILVAMARQUESJACOBS
#5958566
Cabealho do primeiro SELECT
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SUBQUERY
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, DEPARTAMENTOFROM EMP WHERE DEPARTAMENTO IN (SELECT DCOD
FROM DEPTWHERE DSUPER = A00)
RESULTADO SOMENTE RESULTADO DA SUBQUERYDO SELECT DE NVEL RETORNADO PARA OMAIS ALTO NVEL SUPERIOR
Consideraes SUBQUERY:1. Pode ser usada no WHERE ou no HAVING2. Pode ser encadeado3. 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.9. SUBQUERY conhecido como SUBSELECT.
#59585 67
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SUBQUERY DE UMA LINHA
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 SALARIOSANTANA 18357.50ORSINI 18171.25
Mostrar o funcionrio com o maior salrio.
SELECT NOME, SALARIOFROM x.staff WHERE SALARIO = (SELECT MAX(SALARIO)
FROM x.staff)
Resultado:NOME SALARIOMOLINARI 22959.20
#5958568
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SUBQUERY COM VRIAS LINHAS: ALL
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.staffWHERE SALARIO > ALL (SELECT AVG(SALARIO)
FROM x.staff GROUP BY DEPT)ORDER BY NOME
Resultado: NOME SALARIOFRAYE 21150.00GRAHAM 21000.00JONES 21234.00MOLINARE 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.staffWHERE SALARIO > ANY(SELECT AVG(SALARIO)
FROM x.staff GROUP BY DEPT)ORDER BY NOME
Resultado: NOME SALARIODANIELS 19260.25DAVIS 15454.50EDWARDS 17844.00
#59585 69
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 IN
Lista de gerentes da diviso Sul
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.staffWHERE CARGO GER GROUP BY DEPTHAVING AVG(SALARIO) < (SELECT AVG(SALARIO)
FROM x.staff WHERE CARGO GER)
ORDER BY 2 DESC
Resultado: DEPT
66 16880.17500000051 16235.20000000084 15443.00000000020 15309.530000000
#5958570
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SUBQUERY CORRELACIONADA
Listar os empregados com salrio superior mdia de seus respectivos departamento.
SELECT NOME, SALARIO FROM x.staff CVWHERE 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.staffWHERE CARGO = GER AND SALARIO < 18000 AND EXISTS(SELECT * FROM x.staff
WHERE CARGO = GER AND SALARIO > 22000)
ID NOME SALARIO DEPT30 MARENGHI 17506.75 38
Verdadeiro/Falso no SELECT internoDetermina 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 19/11/98 MANUTENO DE DADOS - INSERT
Insert de uma linha
INSERT INTO PROJVALUES(MA2114, , B01, , NULL, CURRENT DATE, NULL)
OU INSERT INTO PROJ(DEPT, PCODIGO, PNOME, RESP, DATAINI) VALUES(B01, MA2114, , , CURRENT DATE)
Resultado: PCODIGO PNOME DEPT RESP EQUIPE DATAINI DATAFIM........... .............. ....... ........ ............. ................. ................OP2011 SUPORTE E21 320 001.00 25.12.1998 01.02.1999OP2012 APLICACAO E21 330 001.00 25.12.1998 01.02.1999OP2013 DB/DC E21 340 001.00 25.12.1998 01.02.1999MA2114 B01 ? 26.12.1998 ?
INSERT de mltiplas linhas
TESTPROJPCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
INSERT INTO TESTPROJ SELECT * FROM PROJ WHERE DEPT LIKE B%
OR DEPT IN (E11. E21, E31)
ResultadoPCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIMPL2100 ...... B01 20 001.00 01.01.1987 15.09.1987OP1010 OPERAO E11 90 005.00 01.01.1986 01.05.1988OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
#5958572
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 MANUTENO DE DADOS - UPDATE
Update de colunas
Antes:PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIMPL2100 ...... B01 20 001.00 01.01.1987 15.09.1987OP1010 OPERAO E11 90 005.00 01.01.1986 01.05.1988OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
UPDATE TESTPROJSET EQUIPE = EQUIPE*2, DATAFIM=NULL,
DATAINI=02.01.1999WHERE DEPT = B01
Depois:PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIMPL2100 ...... B01 20 002.00 02.01.1999 ?OP1010 OPERAO E11 90 005.00 01.01.1986 01.05.1988OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
Um subconjunto de linhas
UPDATE PESSOAL SET SALARIO = SALARIO + 300WHERE CARGO = ATEND
Todas as linhas:
UPDATE PESSOALSET ANOS = ANOS + 1
#59585 73
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 MANUTENO DE DADOS - DELETE
Antes: PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIMPL2100 ...... B01 20 002.00 02.01.1999 ?OP1010 OPERAO E11 90 005.00 01.01.1986 01.05.1988OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
DELETE FROM TESTPROJ WHERE DEPT = B01
Depois:PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIMOP1010 OPERAO E11 90 005.00 01.01.1986 01.05.1988OP2010 SUPORTE II E21 100 004.00 01.01.1982 01.02.1988OP2011 ..... E21 320 001.00 01.01.1982 01.02.1988OP2012 ..... E21 330 001.00 01.01.1982 01.02.1988OP2013 ..... E21 340 001.00 01.01.1982 01.02.1988
Eliminar todas as ocorrncias de uma tabela
DELETE FROM TESTPROJ
Depois:PCOD PROJNOME DEPT RESP EQUIPE DATAINI DATAFIM
#5958574
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
DDL
DATA DEFINITION LANGUAGE
#59585 75
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 DDL
A Data Definition Language(DDL) faz parte das instrues SQL e divide-se em trs grupos.
1. CREATE Definio de objetos2. ALTER Alterao da definio dos objetos3. DROP 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 auth-id, 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.
#5958576
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 STORAGE GROUP
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 CURXSG01VOLUMES(PRD510)VCAT DES;
COMMIT;
Alterao de um Storage Group:
ALTER STOGROUP CURXSG01ADD VOLUMES(PRD512, PRD513) REMOVE VOLUMES(PRD510);
COMMIT;
ALTER STOGROUP CURXSG01VCAT CUR;
COMMIT;
#59585 77
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 DATABASE
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 CREATEDBAPrivilgio de CREATEDBCAutoridade de SYSADM ou SYSCTRL
CREATE DATABASE CURXSG01BUFFERPOOL BP0STOGROUP 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.
#5958578
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TABLESPACE
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 CURXDB01USING STOGROUP CURXSG01PRIQTY 144SECQTY 48ERASE NOLOCKSIZE ANYBUFFERPOOL BP0CLOSE NOFREEPAGE 4PCTFREE 25SEGSIZE 8;
COMMIT;
ALTER TABLESPACE CURXDB01.CURXTS01PRIQTY 240USING STOGROUP CURXSG02;
COMMIT;
#59585 79
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TABLESPACE
Parmetros
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.
#5958580
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 TABLE
um conjunto de linhas coma as mesmas colunas. Os atributos das colunas dever ser do tipo:
NOT NULL Preenchimento obrigatrio NOT NULL WITH DEFAULT Quando no preenchido, assume o valor default NULL 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 19/11/98 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;
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.CURXTB01FUNCAOON 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.
#5958582
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 NDICE
utilizado para agilizar o acesso aos dados.
CREATE [ UNIQUE ] INDEX SICUR.CURXPX02 ON SICUR.CURXTB02CONCEITO(MATR ASC, ALUNO ASC)USING STOGROUP CURXSG02 PRIQTY 48SECQTY 48 ERASE NOBUFFERPOOL BP1 CLOSE YESFREEPAGE 4PCTFREE 15CLUSTER;
COMMIT;
ALTER INDEX CURXPX02 USING STOGROUP CURXPX02 PRIQTY 192CLOSE YES ;
COMMIT;
Parmetros:
UNIQUE Palavra chave que indica que o ndice no permite duplicidade nas colunas compostas neste ndice.
CLUSTER Indica que o dados devem estar clusterizado
pelo ndice
#59585 83
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 VIEW
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.
#5958584
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
DROP
Usado para eliminar qualquer objeto criado a partir de um comando CREATE no DB2.
DROP DATABASE CURXDB01Quando se elimina um Database, todos os objetos vinculados ele
tambm so eliminados, tais como TABLESPACE, TABLE, INDEX, VIEW, ALIAS e SYNONYM.
DROP TABLESPACE CURXDB01.CURXTS01A 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.CURXTB01FUNCAOA eliminao vem acompanhada da eliminao de Index, View, Alias,
Synonym e Relacionamento.
DROP INDEX SICUR.CURXPX01Elimina o ndice, inclusive o INDEXSPACE.
DROP VIEW SICUR.CURXVW01Elimina logicamente do DB2 o apontamento dos dados para a VIEW.
DROP SYNONYM/ALIAS CONCEITOElimina Sinnimo/Alias
DROP STOGROUP CURXSG01S podemos eliminar este objeto se o mesmo no estiver mais sendo referenciado por um outro objeto.
#59585 85
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SQL ESTTICO vs. SQL DINMICO
ESTTICO.......................................................................................................... Instruo SQL CompletaExec SQL Fixo
Delete from DeptEnd-Exec...................................................... Estratgia de acesso ..................................................... pr-estabelecida......................................................
DINMICO.....................................................Var . Instruo SQL fornecida durante a execuo. .....................................................Exec SQL Estratgia de acesso Execute Immediate : Var pr-estabelecida. End-Exec.....................................................
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
#5958586
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 PROGRAMAO EM SQL
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 19/11/98 VARIVEL HOST
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 EMPRSET SALARIO = SALARIO * :PERCENTWHERE CARGO = :CARGO
END-EXEC
EXEC SQL SELECT MATR, SOBRENOMEINTO :MATR, :SNOMEFROM EMPR WHERE CARGO = :CARGO
END-EXEC
#5958588
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 PROCESSAMENTO DE MLTIPLAS LINHAS
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 OPENMATR SOBRENOME
30 SILVA290 SANTOS300 ALMEIDA
FETCHMATR SOBRENOME
30 SILVA290 SANTOS300 ALMEIDA
FETCHMATR SOBRENOME
30 SILVA290 SANTOS300 ALMEIDA
#59585 89
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 SELECT COM FETCH
Definio de um CURSOR
EXEC SQL DECALRE CUR001 CURSOR FOR
SELECT MATR, SOBRENOMEFROM EMPRWHERE 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
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.
#5958590
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
COMMIT / ROLLBACK
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 19/11/98
BIND
Preparao de Programa
#5958592
Cdigo FonteSQL
Biblioteca deInclude
PRECOMPILAO
Cdigo FonteModificado
DBRMBiblioteca de Usurio
Compilao BIND
Mdulo Objeto
Linkedio
Mdulo de Carga
Language Interface
Descrio da tabela
Autorizao
DBRM
Plano/Package
Execuo
Catlogo DB2
Diretrio
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 BIND
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 19/11/98 BIND
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.
#5958594
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 BIND
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 ADDUtilizado para criar um novo Plano/Package
BIND REPLACEUtilizado quando a prpria instruo SQL foi alterada e queremos
refazer o Plano/Package existente.
REBINDUtilizado 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 19/11/98 BIND
BIND ADD REBIND BIND REPLACE
Adiciona Refaz Plano Refaz Plano Plano Novo (Ambiente alterado) (SQL Alterado)
OTIMIZADOR
DBRM CATLOGO DIRETRIO
#5958596
DBRMPLANOPACKAGE
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
SEGURANA INTERNA DO DB2
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 - Quem fez a solicitao?Privilgios - O que se deseja fazer com o recurso?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 SELECTVIEW UPDATE [Lista de colunas]
INSERT
PLANOS BINDPACKAGES EXECUTE
STOGROUP BUFFERPOOL USETABLESPACE
SYSADMDB2 RECOVER
TRACE, etc..
DBADM DATABASE CREATETS
LOAD, etc..
#59585 97
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 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
ATRIBUIO DE AUTORIDADE
Instruo SQL
+ + +
+ + +
Exemplo: GRANT SELECT ON EMPR TO PUBLIC REVOKE SELECT FROM EMPR FROM PUBLIC
#5958598
GRANTPrivilgioSobreRecurso
TO AUTH-ID
REVOKEPrivilgioSobreRecurso
FROM AUTH-ID
-
DB2 - CONCEITOS E UTILIZAO 19/11/98
UTLITRIOS DO DB2
Divididos em 3 grandes grupos:
ONLINE1. 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 Sequencial8. 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 Atualiza log datasets no BSDS.2. PRINT LOG MAP Listas dados de Log BSDS.
#59585 99
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 3. UTLITRIOS DO DB2(Continuao)
SERVICE AIDS
1. DSN1COPY Trata user data por data set2. DSN1PRNT Listas e formatas data set pages3. DSN1COMP Estimativas de espaos a ser arquivados(DB2)4. DSN1LOGP L o contedo da Log e formata para display.5. DSN1CHKR Verifica a Integridade dos diretrios e catlogo.6. DSNTIAUL Unload de tabelas para uma arquivo sequencial.7. DSNTEP2 Para emisso de SQL dinmico.8. DSNTIAD Para emisso de SQL dinmico exceto SELECT.
SYSIBM.SYSUTILX
Uma Tabela de Diretrio DB2.
JOB UTILITY CHECKPOINTUTILID NOME NOME INFORMAO....
Coluna inserida no Incio do Utility.Coluna atualizada em Pontos de Checkpoints e Parada de Utility.Coluna eliminada quando do termino do Utility.
#59585100
Identificadornico
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 LOAD
Faz carga de arquivo sequencial para um Tablespace
Pode se carregar mltiplas tabelas em um mesmo TablespaceConverso 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 19/11/98 LOAD
Definio da Tabela:
CREATE TABLE PROD.EMPRESA(NOME_EMPRESA CHAR(6) NOT NULL, PRIMEIRO_NOME VARCHA(12) NOT NULL, INTERM_NOME CHAR(1) NOT NULL, ULTIMO_NOME VARCHAR(15) NOT NULL, FONE CHAR(4) ,SALARIO DECIMAL(8,2) ,DEPTO CHAR(3) ,PRIMARY KEY(NOME_EMPRESA),FOREIGN KEY(DEPTO)
REFERNCES DEPTON DELETE SET NULL)
IN TESTEDB1.TESTTSP1;
Exemplo do Registo para o LOAD:....+.....1....+....2....+....3....+....4....+....5....+....6....+....7000010 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)
#59585102
-
DB2 - CONCEITOS E UTILIZAO 19/11/98 LOAD
Load Logging
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 compartilhadoCarga e em tabelas pequenasCarga com RESUME YES
Q