Escolar Documentos
Profissional Documentos
Cultura Documentos
DB2
IBM DATABASE For COBOL
Comandos, Sintaxe, Regras e Procedimentos
Exemplos de programas e Pensamentos
Segunda edição
São Paulo
2013
Carlos J E de campos, 2013
Capa: Alexandra Hardt Carlini
Diagramação: Carlos J E de Campos
Revisão: Neusa Pallione
É proibida a reprodução total ou parcial desta obra, de qualquer forma ou por qualquer meio
sem a autorização prévia e por escrito do autor. A violação dos Direitos Autorais (Lei n.º
9610/98) é crime estabelecido pelo artigo 184 do Código Penal.
2013
Todos os direitos desta obra pertencem a
Carlos J E de Campos
www.carloscamposinfo.com
DB2
Agradecimentos
Agradeço à minha filhota, Vanessa Soares de Campos, por ser a minha fonte de esperança e
por mostrar compreensão e paciência em muitos momentos da nossa vida.
Agradeço ao amigo Roberto Azem, que sempre esteve por perto, nos momentos de estudo e
naqueles em que precisava de ouvidos e conselhos.
Agradeço aos meus pais Alice de Assunção Esteves Costa e José Manuel Lopes Moreira de
Campos, por terem-me dado a vida, educação, formação moral e muito apoio.
Agradeço ao companheiro Benedito Aparecido Alves, pelo apoio que tem me dado nesta
segunda fase dos meus livros, acompanhando-me no dia a dia do trabalho, ouvindo-me e
apoiando-me com o seu conhecimento e sabedoria. Benê, como é conhecido, tem sido um
grande conselheiro.
Reflexão
“Para adquirir conhecimento é preciso estudar, para adquirir sabedoria é preciso observar.”
Autor: William Arthur Ward
www.carloscamposinfo.com Página 3
Não estamos aqui para pagar nem
sobreviver, mas sim, para vencer,
adquirindo saber.
&
Usemos o conhecimento com ética e moral.
DB2
Introdução
O DB2 (IBM DATABASE 2) é um Sistema Gerenciador de Banco de Dados (DBMS) Relacional,
desenvolvido pela IBM, que permite aos usuários acessarem as Bases de Dados relacionais,
através de uma liguagem, padrão, chamada SQL (“STRUCTURED QUERY LANGUAGE”). As
tabelas do DB2 podem ser acessadas pelo ambiente ON-LINE, através dos ambientes IMS,
CICS e TSO e pelo ambiente BATCH, através do JCL (Job Control Langue) e, ainda, podem ser
acessadas de forma interativa com o próprio banco de dados, isto é, executar o comando
diretamente no DB2 e, tudo isto, simultaneamente. Existe DB2 para os mais variados
sistemas operacionais. A IBM fornece, gratuitamente, através do seu site, versões atualizadas
para serem usadas.
DB2 é um Banco de dados relacional com a finalidade de tornar mais eficiente a manipulação
dos dados que estão armazenados nas tabelas; fornecendo maior Independência dos dados,
facilidade na sua utilização e maior segurança de acesso e na integridade dos seus dados. No
DB2, os dados são armazenados em tabelas que só podem ser criadas e acessadas através de
comandos específicos.
História
A primeira versão da linguagem SQL (Structured Query English Language) surgiu, em 1974,
nos laboratórios da IBM (Califórnia). Entre 1976 e 1977, ela foi revisada e ampliada, tendo,
então, o seu nome alterado para SQL. Devido ao sucesso da nova forma de consulta e
manipulação de dados dentro de um ambiente de banco de dados, sua utilização tornou-se
cada vez maior. Em 1982, o American National Standard Institute (ANSI) tornou a SQL a
linguagem padrão para a manipulação de dados, em ambiente relacional e, desde então,
vários Sistemas Gerenciadores de Bancos de Dados (SGBD) utilizam o SQL, como a linguagem
padrão para o acesso às bases de dados.
Esta obra
Esta obra tem como objetivo alcançar as pessoas que desejam conhecer o banco de dados e
como utilizá-la na linguagem de programação COBOL, especificamente para ambiente
Mainframe IBM com ênfase no COBOL Enterprise utilizada em ambientes z/OS e OS/390.
Oferece uma base teórica e prática, suficientemente boa, para que o leitor domine a criação,
manutenção e utilização em programas COBOL. A abordagem segue uma sequência, de
forma que o leitor possa compreender como os dados podem ser incluídos, lidos, alterados,
excluídos e listados.e, como cada comando trabalha.
Reflexão
“E conhecereis a verdade e a verdade vos libertará.”
João 8:32
www.carloscamposinfo.com Página 5
Os comandos são apresentados com a sua sintaxe básica e explicados a partir de pequenos
programas apresentados especificamente e criados para esse fim, que podem ser usados
para praticar e realizar testes.
Público-Alvo
As informações contidas neste livro podem ser aprendidas e aplicadas por qualquer pessoa
que deseje conhecer e programar em COBOL com o Banco de Dados DB2.
Os conceitos, o método estruturado e as lógicas são apresentados numa ordem, como forma
de melhorar a compreensão e são acompanhados por figuras para ilustrar e aumentar a
clareza das informações. Com a finalidade de reforçar e consolidar o aprendizado, cada
comando é apresentado com a sua sintaxe básica e com um exemplo da sua aplicação e uso
na programação COBOL.
Pré-Requisitos
Para desenvolver sistemas comerciais em COBOL que utilizem o banco de dados DB2, é
necessário conhecer a sua linguagem, a sua sintaxe e as suas regras, mas, para elaborar
programas nesta linguagem ou em outra, é preciso ter conhecimento sobre lógica de
programação. É somente com a lógica de programação que se conseguem elaborar
programas que atendam a algum propósito de negócio, com eficiência.
Para que o leitor possa tirar maior proveito dos conhecimentos apresentados neste livro, é
aconselhável que conheça:
✔Lógica de programação estruturada
✔Linguagem COBOL
É aconselhada a leitura do livro de “LÓGICA” do mesmo autor que explica, passo a passo, a
construção de algoritmos e de lógicas de programação. E, depois, o livro de COBOL.
Esta obra está aderente ao programa de formação de Especialista em Desenvolvimento de
Programação COBOL Mainframe, CMCPDS - Certified Mainframe COBOL Program
Development Specialist, fornecido pelo instituto ICPDUG - INTERNATIONAL COBOL
PROGRAM DEVELOPER USERS GROUP.
Para mais informações, visite o site www.carloscamposinfo.com, ou entre em contato
através do e-mail do autor: carlosjec@hotmail.com.
Reflexão
“Muitos homens iniciaram uma nova era na sua vida a partir da leitura de um livro”.
Autor: Henry Thoreau
DB2
Resenha
Li este livro e pude comparar com outros da mesma área, e observei a maneira como está
organizado o ensino do DB2. Gostei muito da forma simples e objetiva de como os comandos
são apresentados. Todos os comandos apresentados são a forma básica de utilizar o DB2 no
programa COBOL.
O conteúdo está organizado, de forma que o leitor possa conhecer a linguagem SLQ, e o que
é banco de dados relacional. Mostra como criar um banco de dados com massa de testes
para os comandos. Os comandos são apresentados com a sua sintaxe, exemplo de utilização
e outros ainda que possuem programas para treinar o comando.
O livro de DB2 atingiu o seu objetivo, que é o de apresentar a linguagem de forma prática, de
modo a ser fácilmente utilizado pelo programador.
O autor, assim como fez no livro de lógica e de COBOL, tem a preocupação de fornecer um
material didático e, ao mesmo, tempo um treinamento com uma metodologia que leva a
uma boa formação básica para ser um bom programador, utilizando uma boa lógica com
bons princípios de DB2, na linguagem COBOL.
www.carloscamposinfo.com Página 7
Página deixada em branco
DB2
www.carloscamposinfo.com Página 9
Metodologia dos cursos
O assunto novo é
apresentado ao aluno, Apresentar
através da apresentação de Conceito
SLIDES animados e coloridos
e tiradas as dúvidas sobre o
tópico. Para praticar o Rever Tirar
conhecimento novo, o aluno conceitos dúvidas
é solicitado a realizar o
exercício, no caso: criar
algoritmo ou programa. Consolidar Praticar
Após o tempo para criar a Exercícios exercícios
primeira solução, é
apresentado; via SLIDES
animados e coloridos, a Apresentar
solução do exercício, tirando Solução
todas as dúvidas possíveis.
Para consolidar e poder tirar novas dúvidas do tópico do conhecimento, são solicitados, em
média de dois a quatro exercícios na aula. A solução dos exercícios propostos é apresentada,
via SLIDES animados e coloridos. E para tentar consagrar o conhecimento, é solicitado, em
média de três a seis exercícios extras para o aluno fazer fora as horas das aulas. E, para tentar
tirar possíveis dúvidas remanescentes, são reservados os primeiros minutos de cada aula,
para tirar dúvidas.
Objetivo do método
Este método tem como objetivo alcançar os mais diversos indivíduos (visual, auditivo ou
cinestésico) para que tomem consciência dos conceitos. Todo o método está baseado na
indução do raciocínio, para que se crie a lógica necessária. Com isto, a energia necessária
gasta com o esforço para criar a lógica é gasta durante o treinamento. Depois de formado, o
individuo passa a raciocinar automaticamente com muito menor esforço. Por exemplo,
quando houver uma solicitação que seja necessária à criação de duas quebras, uma dentro
da outra, o raciocínio vem automaticamente e, à medida que vai elaborando a lógica, o seu
formato já vem no padrão aprendido.
Benefícios do método
Os benefícios do método aplicado podem se resumir no seguinte:
Ampliação das possibilidades de aprendizagem
Aumento do desempenho no raciocínio lógico
Acomodação crescente do conhecimento
Consolidação das estruturas lógicas
Facilidade de criar a solução lógica
DB2
Certificação para
desenvolvedor Mainframe
O instituto ICPDUG (INTERNATIONAL COBOL PROGRAM DEVELOPER USERS GROUP), para
valorizar a área de desenvolvimento de sistema, fornece o exame de certificação para
desenvolvedor COBOL Mainframe, com o objetivo de identificar o especialista em
desenvolvimento de sistemas COBOL Mainframe.
Objetivo da certificação
A certificação vem agregar valor para a empresa, na medida em que vai avaliar o
conhecimento para a necessidade específica que o profissional precisa ter, possibilitando a
criação de um quadro de profissionais altamente qualificados e nivelados com o objetivo de
planejar, definir e criar sistemas e programas com eficiência e qualidade.
E para o profissional, vem para valorizar a sua capacitação, a sua formação, diferenciando-o
dos demais profissionais, fornecendo-lhe as credencias de um profissional especialista,
aderente com as necessidades de conhecimento específico.
Como é a certificação
O certificado de Especialista em COBOL Mainframe, CMCPDS - Certified Mainframe COBOL
Program Development Specialist (Especialista em Desenvolvimento de Programação COBOL
Mainframe). O especialista máster recebe o título, após ter obtido todas as certificações para
as seguintes especialidades:
LÕGICA - Programação estruturada
COBOL - Linguagem de programação
DB2 - Sistema Gerenciador de Banco de Dados Relacional
CICS - Sistema Gerenciador de ambiente ONLINE
JCL - Linguagem de controle Batch
Reflexão
“Em algum lugar, algo incrível está esperando para ser descoberto.”
Autor: Carl Seagan
www.carloscamposinfo.com Página 11
Página deixada em branco
DB2
Sumário
Agradecimentos ...................................................................................3
Introdução ..........................................................................................5
Resenha .............................................................................................7
Formação de especialista COBOL ...............................................................9
Metodologia dos cursos ..................................................................... 10
Objetivo do método ......................................................................... 10
Benefícios do método ....................................................................... 10
Certificação para desenvolvedor Mainframe ............................................... 11
Objetivo da certificação .................................................................... 11
Como é a certificação ....................................................................... 11
Sumário ........................................................................................... 13
Notação utilizada ............................................................................ 25
Como codificar subparâmetros ............................................................... 27
áreadecomunicação ......................................................................... 27
chavearquivo.................................................................................. 27
chavearquivoalternada ...................................................................... 27
classeorganizaçãonomearquivo ............................................................ 27
expressãoaritmética ......................................................................... 27
inteiro .......................................................................................... 27
índice .......................................................................................... 28
literal .......................................................................................... 28
mnemônico .................................................................................... 28
nível ............................................................................................ 28
nome ........................................................................................... 28
nomearquivo .................................................................................. 28
nomeáreadedados ........................................................................... 28
www.carloscamposinfo.com Página 13
nomecampo ................................................................................... 28
nomeparágrafoinício ........................................................................ 29
nomeparágrafofim ........................................................................... 29
nomeredefinido .............................................................................. 29
nomefilestatus ................................................................................ 29
nomeindice .................................................................................... 29
nomeiteminicial .............................................................................. 29
nomeitemfinal ................................................................................ 29
nomeregistro .................................................................................. 30
posição ......................................................................................... 30
senhaarquivo .................................................................................. 30
sentença ....................................................................................... 30
quantidade .................................................................................... 30
tamanho ....................................................................................... 30
tipo ............................................................................................. 30
tipodeacesso .................................................................................. 31
tipodeorganização ........................................................................... 31
valor ............................................................................................ 31
Introdução ao banco de dados ................................................................ 33
Banco de dados ............................................................................... 33
Modelo relacional ............................................................................ 34
Características de um DBMS Relacional .................................................. 34
Tabela .......................................................................................... 35
Coluna .......................................................................................... 35
Linha ........................................................................................... 35
Índice .......................................................................................... 35
VIEW ............................................................................................ 36
ALIAS ........................................................................................... 36
Chaves de uma tabela ....................................................................... 36
Chave primária ............................................................................ 36
Chave estrangeira ........................................................................ 36
Linguagem SQL ............................................................................... 37
DB2
www.carloscamposinfo.com Página 15
Comando DDL - ALTER ...................................................................... 50
Comando ALTER STOGROUP ................................................................ 50
Sintaxe do comando ALTER STOGROUP ............................................... 50
Cláusula ADD VOLUMES .................................................................. 50
Cláusula REMOVE VOLUMES ............................................................. 50
Exemplificação do comando ALTER STOGROUP ..................................... 50
Comando ALTER DATABASE ................................................................ 51
Sintaxe do comando ALTER DATABASE ................................................ 51
Comando ALTER TABLESPACE .............................................................. 51
Sintaxe do comando ALTER TABLESPACE ............................................. 51
Exemplificação do comando ALTER TABLESPACE ................................... 51
Comando ALTER TABLE ..................................................................... 52
Sintaxe do comando ALTER TABLE..................................................... 52
Exemplificação do comando ALTER TABLE ........................................... 52
Comando DDL - DROP ....................................................................... 53
Comando DROP ............................................................................... 53
Sintaxe do comando DROP .............................................................. 53
Exemplificação do comando DROP - DATABASE ..................................... 53
Exemplificação do comando DROP - TABLE .......................................... 53
Exemplificação do comando DROP - INDEX .......................................... 53
DATA CONTROL LANGUAGE .................................................................... 55
Comandos – DCL .............................................................................. 55
Comandos de privilégios .................................................................... 55
Comandos de efetivação .................................................................... 55
Comando GRANT ............................................................................. 56
Sintaxe Geral do comando GRANT ..................................................... 56
lista-de-privilégios ........................................................................ 56
nome-do-objeto ........................................................................... 56
Cláusula TO ................................................................................ 56
Cláusula ON DATABASE .................................................................. 57
Cláusula ON TABLE ....................................................................... 58
Cláusula WITH GRANT OPTION ......................................................... 58
DB2
www.carloscamposinfo.com Página 17
Formato de TIMESTAMP no DB2 ........................................................ 73
Variável HOST ................................................................................ 73
Características da variável HOST ...................................................... 74
Formatos compatíveis entre COBOL e DB2 ........................................... 74
Tamanho máximo de coluna por tipo ................................................. 75
NULL (Nulo) ................................................................................... 75
Área de comunicação de erro do DB2 .................................................... 75
SQLCA (SQL Communication Área) ..................................................... 75
Formato de utilização do SQLCA dentro do COBOL ................................. 75
Estrutura da SQLCA dentro do COBOL ................................................ 76
Área de comunicação do DB2 com o programa ......................................... 77
DCLGEN ..................................................................................... 77
Como incluir DCLGEN no programa .................................................... 77
Questionário .................................................................................. 78
Massa de teste para os comandos DB2 ....................................................... 79
MER - Modelo de Entidade Relacional para testes ..................................... 80
Definição das tabelas do MER .......................................................... 80
Massa de testes para as tabelas ........................................................... 80
Scripts para criar as tabelas ............................................................... 81
Programa DB2 para criar a tabela de cliente ........................................ 81
Programa DB2 para criar a tabela de saldo .......................................... 81
DCLGEN das tabelas ......................................................................... 82
DCLGEN da Tabela de Cliente .......................................................... 82
DCLGEN da Tabela de Saldo ............................................................ 82
Scripts para incluir dados nas tabelas .................................................... 83
Programa DB2 para incluir na Tabela de Cliente ................................... 83
Programa DB2 para incluir na Tabela de Saldo ...................................... 84
Comandos para Manipulação de Dados ...................................................... 85
Comando INSERT (Incluir) .................................................................. 86
Sintaxe do comando INSERT ............................................................ 86
Cláusula INTO ............................................................................. 86
Cláusula VALUES .......................................................................... 86
DB2
www.carloscamposinfo.com Página 19
Programa exemplo do comando UPDATE ............................................ 106
Comando DELETE (Excluir) ................................................................ 108
Sintaxe do comando DELETE ........................................................... 108
Cláusula FROM ............................................................................ 108
Cláusula WHERE .......................................................................... 108
Cláusula CURRENT OF ................................................................... 108
Exemplificação do comando DELETE - Básico ...................................... 108
Lógica do programa do comando DELETE ........................................... 109
Programa exemplo do comando DELETE............................................. 110
Questionário ................................................................................. 113
Comandos para cursor (BROWSE) ............................................................ 115
Comando DECLARE (Declarar) ............................................................ 116
Sintaxe do comando DECLARE ......................................................... 116
Cláusula WITH HOLD .................................................................... 116
Exemplificação do comando DECLARE ............................................... 116
Como excluir ou alterar dentro do cursor ........................................... 117
Comando OPEN (Abrir) ..................................................................... 118
Sintaxe do comando OPEN ............................................................. 118
Exemplificação do comando OPEN ................................................... 118
Comando FETCH (Ler o próximo)......................................................... 118
Sintaxe do comando FETCH ............................................................ 118
Cláusula INTO ............................................................................ 118
Exemplificação do comando FETCH .................................................. 119
Comando CLOSE (Fechar) .................................................................. 119
Sintaxe do comando CLOSE ............................................................ 119
Exemplificação do comando CLOSE .................................................. 119
Exemplificação da utilização do cursor ................................................. 120
Lógica do programa para montar CURSOR .......................................... 121
Programa exemplo para CURSOR ..................................................... 123
Como atualizar linhas via cursor ......................................................... 125
Procedimentos para atualizar linha via cursor ..................................... 125
Sintaxe do comando DECLARE com FOR UPDATE OF .............................. 125
DB2
www.carloscamposinfo.com Página 21
Função LENGTH .......................................................................... 150
Função VALUE ............................................................................ 151
Funções de conversão de formato ....................................................... 152
Função DECIMAL ......................................................................... 152
Função INTEGER ......................................................................... 153
Função DIGITS ............................................................................ 154
Função CHAR ............................................................................. 155
Funções de tratamento de data e hora ................................................. 156
Função DATE .............................................................................. 156
Função YEAR .............................................................................. 157
Função MONTH ........................................................................... 157
Função DAY ............................................................................... 158
Função CURRENT DATE ................................................................. 159
Função CURRENT TIME .................................................................. 160
Função CURRENT TIMESTAMP .......................................................... 160
Como efetuar operações com data ...................................................... 161
Regras de aritmética para data e hora .............................................. 161
Subtraindo datas ......................................................................... 162
Aumentando e diminuindo datas...................................................... 164
Questionário ................................................................................. 167
Boas práticas .................................................................................... 169
Introdução .................................................................................... 169
Escreva o melhor código SQL ............................................................. 170
Escrever QUERY estruturada ........................................................... 170
Especificar somente colunas necessárias ............................................ 171
Limitar o número de linhas recuperadas ............................................ 171
Especificar a sequência correta das colunas da chave ............................ 173
Quando desejar alterar dados num cursor (FOR UPDATE) ........................ 173
Evitar conversão de dados numéricos ................................................ 175
Considerações sobre uso de tipo de dados .......................................... 176
Minimizar a concorrência .................................................................. 177
Executar INSERT, UPDATE e DELETE ao final da UOW ............................ 177
DB2
www.carloscamposinfo.com Página 23
Página deixada em branco
DB2
Notação utilizada
[ ] Opcional
{ } Optar por um, sendo que as opções estão separadas pelo símbolo “|” que significa
“ou”
< > Substituir por um nome
| Operador lógico "OU". Significa que pode ser substituído por um dos parâmetros.
... Existem procedimentos não mencionados
....|....1....|....2....|....3....|....4....|....5....|....6....|....7..
A linha acima representa a régua do exemplo em questão para ajudar a mostrar a posição do
caracteres, muito importante para a linguagem COBOL.
Reflexão
“Só é lutador quem sabe lutar consigo mesmo.”
Autor: Carlos Drummond de Andrade
www.carloscamposinfo.com Página 25
Página deixada em branco
DB2
áreadecomunicação
Representa uma área da LINKAGE SECTION. Pode ser o nome de uma variável alfanumérica
ou numérica ou de um item de grupo.
chavearquivo
O nome do item elementar ou item de grupo que é a chave primária do arquivo. Pode ser o
nome de uma variável alfanumérica ou numérica ou de um item de grupo.
chavearquivoalternada
O nome do item elementar ou item de grupo utilizado como índice alternativo à chave
primária. Pode ser o nome de uma variável alfanumérica ou numérica ou de um item de
grupo.
classeorganizaçãonomearquivo
Representa o nome externo do arquivo pelo qual é reconhecido pelo sistema operacional. O
nome externo será utilizado no comando DD de JCL como DDNAME quando da execução do
programa e pode ser formado por palavra com até oito (8) caracteres. Este nome não pode
ser uma palavra reservada do JCL (SYSIN, SYSOUT) e não pode estar entre aspas ou em
variável.
expressãoaritmética
Representa uma expressão aritmética, como as utilizadas na matemática.
inteiro
Representa um número inteiro.
www.carloscamposinfo.com Página 27
índice
Número inteiro que representa a posição do elemento dentro de uma tabela.
literal
Literal é uma constante, um valor fixo, inteiro, passado como parâmetro para o comando. As
constantes podem ser classificadas em: numérica, alfanumérica e lógica. A constante
alfanumérica também é conhecida como STRING e deve ser definida entre aspas.
mnemônico
Identificar uma saída específica, o mesmo deve estar definido no programa a ser executado,
na SPECIAL-NAMES com a cláusula PRINTER IS <mnemônico>.
nível
O “nível” representa o nível do item de dado ou de grupo em relação a outro item e segue as
considerações colocadas no tópico “Número de nível” que fala sobre o nível do item.
nome
O “nome” representa o nome do item (variável, campo) e segue as considerações colocadas
no tópico “Regras para formação de nomes e literais” que fala sobre a criação de nomes.
nomearquivo
Representa o nome com que o arquivo deverá ser identificado no programa.
Quando utilizado na cláusula SELECT, o nome pode ser formado por palavra com até 30
caracteres e não pode estar entre aspas ou em variável.
nomeáreadedados
O nome da área de dados identificada por uma variável definida na WORKING-STORAGE.
nomecampo
Representa o nome de um campo, e sua criação, segue as regras de criação de um item
elementar.
Quando utilizado pelo parâmetro DEPENDING ON, deve ser definido na WORKING-STORAGE
como inteiro, positivo e com o formato de USAGE COMP. Exemplo:
Quando utilizado pelos parâmetros: ASCENDING KEY e DESCENDING KEY, deve ter a sua
definição segundo as regras de criação de um item elementar.
DB2
nomeparágrafoinício
Nome do parágrafo por onde o comando PERFORM vai iniciar a sua execução.
nomeparágrafofim
Nome do parágrafo até onde o comando PERFORM vai a sua execução finalizar.
nomeredefinido
Representa o nome da nova estrutura de dados (variável, campo) e segue as considerações
colocadas no tópico “Regras para formação de nomes e literais” que fala sobre a criação de
nomes.
nomefilestatus
Representa o nome da variável ou, item de grupo, que recebe o código de retorno
proveniente de um acesso ao arquivo. O código possui tamanho de dois dígitos onde cada
um deles possui seu significado. Exemplo de utilização:
nomeindice
Representa o nome de um campo utilizado como índice da tabela indexada através o
parâmetro INDEXED BY. O campo não pode ser definido no programa, o compilador o cria e
assume como USAGE COMP.
nomeiteminicial
Representa o nome da nova estrutura de dados (variável, campo) e segue as considerações
colocadas no tópico “Regras para formação de nomes e literais” que fala sobre a criação de
nomes.
nomeitemfinal
Representa o nome da nova estrutura de dados (variável, campo) e segue as considerações
colocadas no tópico “Regras para formação de nomes e literais” que fala sobre a criação de
nomes.
www.carloscamposinfo.com Página 29
nomeregistro
Representa o nome com que o registro do arquivo deverá ser identificado no programa para
leitura e gravação.
Quando utilizado na cláusula FD, o nome pode ser formado por palavra com até 30
caracteres e não pode estar entre aspas ou em variável.
posição
Número inteiro que representa a posição.
senhaarquivo
A senha do arquivo deve ser uma variável definida na WORKING-STORAGE e poder ser dos
tipos: alfabético ou alfanumérico.
A senha é um conjunto único de caracteres que um programa, operador de computador, ou
o usuário deve fornecer para atender aos requisitos de segurança antes de obter acesso aos
dados.
sentença
Sentença, representa um ou mais nomes de comandos ou parágrafos que devem ser
executados.
quantidade
Número inteiro que representa.
tamanho
Representa o tamanho do campo que vai receber os dados e segue as considerações
colocadas no tópico “Tamanho do dado”.
tipo
Representa o tipo de dados que o campo vai receber e segue os tipos definidos no tópico
“Tipo do dado”.
DB2
tipodeacesso
Indica o tipo de acesso aos dados do arquivo, possui e depende do tipo de organização. O
tipo de acesso do arquivo pode ser um dos tipos, conforme definido no tópico “Tipos de
acesso” do livro de lógica. Pode ser uma das seguintes:
SEQUENTIAL
RANDOM
DYNAMIC
tipodeorganização
Indica o tipo de organização de dados que o arquivo possui. A organização do arquivo pode
ser um dos tipos, conforme definido no tópico “Estruturas de armazenamento de dados” do
livro de lógica. Pode ser uma das seguintes:
SEQUENTIAL
LINE SEQUENTIAL
INDEXED
RELATIVE
valor
O “valor” representa um valor específico que pode ser atribuído ao campo no momento da
sua definição, isto é, valor inicial da variável. O valor pode assumir um valor segundo o tipo
do dado. Se o dado for do tipo alfanumérico ou caractere, então o valor deve estar entre
parênteses. Por exemplo:
Valor numérico: 1962
Valor alfanumérico ou caractere: “VANESSA”
Reflexão
“Só é livre o homem que sabe dar ordens a si mesmo.”
Autor: Pitágoras
www.carloscamposinfo.com Página 31
Página deixada em branco
DB2
Introdução ao banco de 1
dados
Este capítulo tem como finalidade apresentar os conceitos de banco de dados e o seu
modelo relacional para contextualizar o banco de dados DB2. As informações apresentadas
são uma compilação do que se entende como informações básicas, necessárias para o
entendimento do funcionamento de um banco de dados.
Banco de dados
Banco de dados é um conjunto de tabelas (arquivos) de
Banco de dados Convencional
uma forma estruturada para armazenar informações,
com a finalidade de tornar mais eficiente a sua Tabela Arquivo
manipulação. No ambiente banco de dados, existem Linha Registro
termos próprios que são importantes conhecer e Coluna Campo
TABLESPACE1
Indice1 TABELA1
TABLESPACE2
www.carloscamposinfo.com Página 33
Modelo relacional
Para manipular os dados de forma mais eficiente num banco de dados relacional, existe um
sistema (software) chamado DATA BASE MANAGEMENT SYSTEM (DBMS), traduzindo,
Sistema Gerenciador de Banco de Dados (SGBD). O modelo relacional possui características
como:
Independência dos dados.
Acesso fácil aos dados, através de uma liguagem específica.
Acesso interativo.
Acesso via programas de aplicação.
Fácil manutenção das bases de dados.
Maior autonomia ao usuário.
Aumento de produtividade.
Maior flexibilidade no tratamento dos dados.
Aumento da segurança e integridade das informações.
Tabela
Tabela é uma estrutura fundamental em um banco de dados relacional. É na tabela que
ficam armazenados os dados que são Tabela de Cliente
agrupados por categorias de
Código Nome Endereço Cidade
interesse do negócio. A tabela é
organizada por linhas (registros) e 2001 ROBERTO RUA A SÃO PAULO
colunas (campos). Uma tabela possui 2005 VANESSA RUA B RIO DE JANEIRO
um número fixo de colunas e pode
2019 SUSETE RUA C VALPAÇOS
possuir um ilimitado número de
linhas.
Coluna
Coluna é a menor unidade de informação, também conhecida como atributo. Por exemplo:
na tabela de clientes, existe uma
coluna chamada “NOME” que Tabela de Cliente
armazena o nome do cliente. Uma Código Nome Endereço Cidade
coluna contém o mesmo tipo de 2001 ROBERTO RUA A SÃO PAULO
dado (por exemplo: numérico ou
2005 VANESSA RUA B RIO DE JANEIRO
alfanumérico) e tamanho em todas
as linhas e possui um nome único na 2019 SUSETE RUA C VALPAÇOS
tabela.
Linha
Linha é uma coleção de dados sobre
uma pessoa, um lugar, um evento ou Tabela de Cliente
algum outro item. Uma linha
Código Nome Endereço Cidade
(registro) é formada por várias
colunas. Uma linha é a menor 2001 ROBERTO RUA A SÃO PAULO
unidade para inserção e remoção 2005 VANESSA RUA B RIO DE JANEIRO
numa tabela e pode conter colunas 2019 SUSETE RUA C VALPAÇOS
com diferentes tipos de dados, e não
possui nome.
Índice
Sua criação é basicamente por questão de performance.
Pode ser formado por mais de uma coluna.
Estes são armazenados separadamente das Tabelas e o usuário não tem acesso a eles.
Quando o índice é único, ele força a unicidade dos dados, através dos valores de uma ou
mais colunas escolhidas como chave única.
www.carloscamposinfo.com Página 35
VIEW
É uma visão lógica. Permite a representação de dados de uma ou mais tabelas como sendo
uma outra tabela, onde podemos inserir determinadas linhas e colunas de uma ou mais
tabelas. Sua utilização em nada difere da de uma tabela.
Conforme o caso, uma VIEW não pode ser utilizada para inserção de linhas.
ALIAS
ALIAS é um nome alternativo (Apelido) que se dá a uma tabela ou VIEW. Um ALIAS é de uso
compartilhado. É utilizado mais como apelido para uma tabela remota e é válido a nível de
um subsistema DB2.
Chave primária
A chave primária serve para identificar uma única linha de uma tabela. Pode ser composta
por uma ou mais colunas. É o índice principal para uma tabela. Embora não obrigatória, a
chave primária é altamente recomendada, porque aumenta a velocidade de execução da
recuperação de dados. A chave primária não pode possuir valores repetidos, não pode ser
atualizada nem possuir um valor NULO.
Chave estrangeira
A chave estrangeira numa tabela é uma chave primária em outra tabela. Serve para criar um
relacionamento entre duas tabelas. Pode ser composta por uma ou mais colunas.
Reflexão
“A pessoa sábia está sempre ansiosa e pronta para aprender.”
Autor: Provérbios 18:15
DB2
Linguagem SQL
A linguagem SQL (STRUCTURED
QUERY LANGUAGE) serve para
definir e manipular dados das
SQL
tabelas. É uma linguagem de ação STRUCTURED QUERY
interativa com os dados do banco de LANGUAGE
dados e é utilizada por vários
Sistemas de Gerenciamento de
Banco de Dados (SGBD). DML DDL DCL
Os comandos SQL terminam com um SELECT CREATE GRANT
ponto e vírgula (;). UPDATE ALTER REVOKE
Para que o comando possa ter a sua DELETE DROP COMMIT
ação efetuada, deve-se executar o INSERT ROLLBACK
comando COMMIT.
É formada por três grupos de comandos. São eles:
DDL (DATA DEFINITION LANGUAGE). O grupo Data Definition Language possui
comandos que são utilizados para criação, alteração e eliminação das tabelas.
Podem ser utilizados para criar e alterar a estrutura física da tabela.
DCL (DATA CONTROL LANGUAGE). O grupo Data Control Language possui
comandos que são utilizados para criação, alteração e eliminação da segurança dos
acessos às tabelas.
DML (DATA MANIPULATION LANGUAGE). O grupo Data Manipulation Language
possui comandos que são utilizados para efetuar a manipulação dos dados nas
tabelas. Podem ser utilizados para efetuar consultas e manutenções dos dados.
Reflexão
“As riquezas e os bens podem ser herdados, mas os sentimentos de respeito precisam ser aprendidos.”
Autor: Nancy Van Pelt em filhos vencedores
www.carloscamposinfo.com Página 37
Integridade no banco de dados
Os comandos SQL; INSERT, DELETE e UPDATE modificam as informações em um banco de
dados existente e, toda vez que os dados são alterados, existe a possibilidade que a
integridade lógica possa ser afetada.
Por exemplo: A inclusão de um produto inexistente em um pedido de cliente. E, ainda, um
cliente pode ser eliminado, mesmo tendo pedidos pendentes em seu nome. Em ambos os
casos, houve perda da integridade das informações.
Quando bem definido um banco de dados, provavelmente, estes quatro conceitos de
integridade serão aplicados:
Integridade semântica: O dado de uma coluna sempre será do tipo de dado,
definido na criação da coluna.
Integridade de domínio: Domínio é um conjunto de valores previamente definido,
no qual uma coluna só poderá conter valores pertencentes a esse domínio.
Integridade de entidade: Cada linha de uma tabela possui um indicador que garanta
a unicidade da mesma.
Integridade referencial: Os relacionamentos lógicos entre as entidades serão
forçados pelos SGBD.
Integridade semântica
O dado de uma coluna sempre será do tipo de dado definido na criação da coluna.
A integridade semântica garante que o dado inserido em uma linha da tabela tenha um valor
válido. Para que este valor possa ser válido, deve ser do mesmo tipo de dados, definido na
especificação da coluna.
Por exemplo: Um atributo de uma determinada entidade definido como numérico, só
conterá dados relativos a números, ou um atributo definido como DATA, só conterá dados
relativos a DATA. É a certeza de que no campo DATA_DE_ENTREGA só terá datas válidas.
Caso um SGBD permita a inclusão de um outro tipo de dado diferente do definido, a
integridade semântica será violada.
A integridade semântica em um SGBD é aplicada com a utilização de constraints (termo em
inglês).
DB2
Integridade de domínio
Neste tipo de integridade, as validações ocorrem em cada coluna de nossa tabela (ou
entidade), do tipo: Se um campo deve aceitar valores NULL ou apenas uma faixa de valores.
Por exemplo: Uma tabela possui a coluna “Sexo”, que só deve aceitar valores do tipo M ou F
e, independente do programa da aplicação, não deverá aceitar outros valores.
Integridade de entidade
Toda entidade tem um identificador único para cada linha da tabela. Este identificador é
composto de uma ou mais colunas; é chamado de chave primária da tabela.
Integridade referencial
São regras de inserção, exclusão e atualização, definidas no próprio modelo de entidade
relacional (MER). A Integridade referencial garante que qualquer valor da chave estrangeira
possui um valor correspondente na chave primária à qual está associada; é implementada no
DB2 via comandos DDL (Instruções de definição de objetos da linguagem SQL). A Integridade
referencial é executada na inclusão ou alteração de linhas da tabela e obedece às seguintes
regras:
Uma chave primária tem valor único e não nulo.
Uma chave estrangeira é nula ou tem valor correspondente na chave primária.
www.carloscamposinfo.com Página 39
Tipos de integridade referencial
Cascade (em cascata): Ao excluir pedido, excluir itens do pedido correspondente.
Restrict (restrito): Ao excluir fornecedor, não o excluir, caso exista pedido para o
mesmo.
Set Null (Preencher com nulos): Ao excluir fornecedor, inserir nulo na respectiva
coluna dos pedidos correspondentes.
Reflexão
“Há pessoas que transformam o SOL numa simples mancha amarela, mas há aquelas que fazem de uma
simples mancha amarela o próprio sol.”
Autor: Pablo Picasso
DB2
Questionário
Introdução ao banco de dados
www.carloscamposinfo.com Página 41
5. A menor unidade de informação, também conhecida como atributo, é a:
A. Linha.
B. Coluna.
C. Tabela.
D. Nenhuma das opções.
6. Que nome se dá à menor unidade utilizada para inserir, remover dados em uma
tabela?
A. VIEW.
B. Chave primária.
C. Linha.
D. Nenhuma das opções.
8. Que grupo de comandos SQL é utilizado para efetuar consultas e manipulação dos
dados nas tabelas?
A. DDL – DATA DEFINITION LANGUAGE.
B. DML –DATA MANIPULATION LANGUAGE.
C. DCL – DATA CONTROL LANGUAGE.
D. DBA – Data Base Administrator.
9. Que regra de integridade avalia se uma coluna de uma tabela deve aceitar valores
NULL ou apenas uma faixa de valores?
A. Semântica.
B. Se Entidade.
C. De Domínio.
D. Referencial.