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:

CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISONS;

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:

CREATE TABLE pessoa (
nome    VARCHAR(30),
peso      KILOGRAM NOT NULL
);

Exemplo 3:

Na comparação com função:

SELECT nome FROM pessoa  WHERE  peso > kilogram(80);

– Tipos de Dados Compatíveis com BD Oracle

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:

db2set DB2_COMPATIBILITY_VECTOR=FF
db2stop
db2start

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:

CREATE TABLE staff (
             ID             SMALLINT NOT NULL,
             NAME       VARCHAR (9),
             DEPT      SMALLINT NOT NULL with default 10,
             JOB         CHAR (10) NOT NULL
                                     );

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:

CREATE TABLE fila (
                 filaID        INTEGER GENERATED ALWAYS AS IDENTITY(START WITH 1  INCREMENT BY 2),
                 nome       VARCHAR(50),
                 descricao VARCHAR (100)                                 );

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:

CREATE SEQUENCE myseq
     START WITH 10
     INCREMENT BY 1
     NO CYCLE;

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