Antes de avançarmos no assunto sobre objetos de Banco de Dados no DB2 LUW, queria apresentar duas dicas que acho de muita valia:

A primeira: Alguns comandos principais podem ser consultados direto no  Command Window com a descrição de sua sintaxe:

Exemplo: db2 ? describe

A Segunda: Pode-se consultar a descrição das mensagens de erro do DB2 também direto no prompt do Command Window:

Exemplo: db2 ? SQL30081N

Obs.: O uso do pipe “|” é apenas para utilizar uma pausa na rolagem da janela.

– Tipos de Dados definidos pelo usuário

No DB2 é aberta a possibilidade de criação de data types, chamados UDTs, onde são baseados em tipos de dados internos:

Exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIERJU1RJTkNUIFRZUEUgS0lMT0dSQU0gQVMgSU5URUdFUiBXSVRIIENPTVBBUklTT05TOw==” hover_enabled=”0″]Q1JFQVRFIERJU1RJTkNUIFRZUEUgS0lMT0dSQU0gQVMgSU5URUdFUiBXSVRIIENPTVBBUklTT05TOw==[/et_pb_dmb_code_snippet]

Detalhando: é criado um tipo de dados kilogram baseado no tipo integer e que também pode ser utilizado em funções de conversão.

Exemplo 2:

Na utilização do create table:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIFRBQkxFIHBlc3NvYSAoCm5vbWUgICAgVkFSQ0hBUigzMCksCnBlc28gICAgICBLSUxPR1JBTSBOT1QgTlVMTAopOw==” hover_enabled=”0″]Q1JFQVRFIFRBQkxFIHBlc3NvYSAoCm5vbWUgICAgVkFSQ0hBUigzMCksCnBlc28gICAgICBLSUxPR1JBTSBOT1QgTlVMTAopOw==[/et_pb_dmb_code_snippet]

Exemplo 3:

Na comparação com função:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U0VMRUNUIG5vbWUgRlJPTSBwZXNzb2EgIFdIRVJFICBwZXNvID4ga2lsb2dyYW0oODApOwrigJMgVGlwb3MgZGUgRGFkb3MgQ29tcGF0w612ZWlzIGNvbSBCRCBPcmFjbGU=” hover_enabled=”0″]U0VMRUNUIG5vbWUgRlJPTSBwZXNzb2EgIFdIRVJFICBwZXNvID4ga2lsb2dyYW0oODApOwrigJMgVGlwb3MgZGUgRGFkb3MgQ29tcGF0w612ZWlzIGNvbSBCRCBPcmFjbGU=[/et_pb_dmb_code_snippet]

A partir da versão 9.7 os tipos de dados: NUMBER, VARCHAR2, TIMESTAMP(n), “DATE”, BOOLEAN, INDEX BY, VARRAY, Row Type, Ref Cursor foram disponibilizados no DB2.

Para ativar esta compatibilidade devemos alterar uma variável ambiente chamada DB2_COMPATIBILITY_VECTOR:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZGIyc2V0IERCMl9DT01QQVRJQklMSVRZX1ZFQ1RPUj1GRgpkYjJzdG9wCmRiMnN0YXJ0″ hover_enabled=”0″]ZGIyc2V0IERCMl9DT01QQVRJQklMSVRZX1ZFQ1RPUj1GRgpkYjJzdG9wCmRiMnN0YXJ0[/et_pb_dmb_code_snippet]

Onde FF é utilizado nas definições de SQL PL e FFF para, também, nas definições PL/SQL.

Depois é fazer a criação do Database.

Em breve detalharemos este tópico em um post dedicado exclusivamente ao PL/SQL no DB2.

– Valores Nulos

Representa um estado desconhecido.

Exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIFRBQkxFIHN0YWZmICgKICAgICAgICAgICAgIElEICAgICAgICAgICAgIFNNQUxMSU5UIE5PVCBOVUxMLAogICAgICAgICAgICAgTkFNRSAgICAgICBWQVJDSEFSICg5KSwKICAgICAgICAgICAgIERFUFQgICAgICBTTUFMTElOVCBOT1QgTlVMTCB3aXRoIGRlZmF1bHQgMTAsCiAgICAgICAgICAgICBKT0IgICAgICAgICBDSEFSICgxMCkgTk9UIE5VTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7″ hover_enabled=”0″]Q1JFQVRFIFRBQkxFIHN0YWZmICgKICAgICAgICAgICAgIElEICAgICAgICAgICAgIFNNQUxMSU5UIE5PVCBOVUxMLAogICAgICAgICAgICAgTkFNRSAgICAgICBWQVJDSEFSICg5KSwKICAgICAgICAgICAgIERFUFQgICAgICBTTUFMTElOVCBOT1QgTlVMTCB3aXRoIGRlZmF1bHQgMTAsCiAgICAgICAgICAgICBKT0IgICAgICAgICBDSEFSICgxMCkgTk9UIE5VTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7[/et_pb_dmb_code_snippet]

Detalhando: é a criação de uma tabela com nome staff, onde a coluna DEPT não pode ser nula e quando nula, será definido um número padrão 10. Já a coluna JOB sempre vai esperar um valor.

– Colunas de Identificação

O Identity é uma coluna, numérica, com função de contador. É atribuído para somente um objeto tabela.

Exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIFRBQkxFIGZpbGEgKAogICAgICAgICAgICAgICAgIGZpbGFJRCAgICAgICAgSU5URUdFUiBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZKFNUQVJUIFdJVEggMSAgSU5DUkVNRU5UIEJZIDIpLAogICAgICAgICAgICAgICAgIG5vbWUgICAgICAgVkFSQ0hBUig1MCksCiAgICAgICAgICAgICAgICAgZGVzY3JpY2FvIFZBUkNIQVIgKDEwMCkg” hover_enabled=”0″]Q1JFQVRFIFRBQkxFIGZpbGEgKAogICAgICAgICAgICAgICAgIGZpbGFJRCAgICAgICAgSU5URUdFUiBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZKFNUQVJUIFdJVEggMSAgSU5DUkVNRU5UIEJZIDIpLAogICAgICAgICAgICAgICAgIG5vbWUgICAgICAgVkFSQ0hBUig1MCksCiAgICAgICAgICAgICAgICAgZGVzY3JpY2FvIFZBUkNIQVIgKDEwMCkg[/et_pb_dmb_code_snippet]

Explicando: A tabela criada terá um contador (coluna filaID) onde o valor gerado começará em 1 e será incrementado de 2.

Os valores podem ser gerados sempre (generated always – controle do DB2) ou gerados como padrão (generated by default – controle externo ao DB2).

– Sequência

A Sequence atua também como um contador, só que difere do Identity por não está vinculado diretamente a um objeto.

Exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIFNFUVVFTkNFIG15c2VxCiAgICAgU1RBUlQgV0lUSCAxMAogICAgIElOQ1JFTUVOVCBCWSAxCiAgICAgTk8gQ1lDTEU7″ hover_enabled=”0″]Q1JFQVRFIFNFUVVFTkNFIG15c2VxCiAgICAgU1RBUlQgV0lUSCAxMAogICAgIElOQ1JFTUVOVCBCWSAxCiAgICAgTk8gQ1lDTEU7[/et_pb_dmb_code_snippet]

Explicando: é criado uma sequence que começa o contador em 10 e com incremento de 1 e sem repetição.

Este tópico é detalhando no post: [DB2 LUW] Sequences

==> O post  [DB2 LUW] Como Trabalhar com Objetos de Banco de Dados – Parte I  você pode acessar clicando aqui.

Continuaremos no próximo post, parte III