style="WIDTH: 199px; HEIGHT: 263px" alt="" hspace=0 src="/loja/img/Capa_SQL45_G.gif" align=bottom border=0>

Clique aqui para ler todos os artigos desta edição

Desenvolvimento em SQL PL para o IBM DB2 – Parte 1

 

Após o lançamento da versão gratuita Express-C, o IBM DB2 tem se popularizado por estes lados. Após a matéria introdutória publicada na edição 37 da SQL Magazine, vamos agora nos aprofundar um pouco neste banco de dados. Neste artigo vamos aprender a desenvolver para o IBM DB2 usando a sua linguagem nativa, a SQL PL (Structured Query Language Procedural Language). A SQL PL é baseada no ANSI SQL.

A linguagem SQL PL possui semelhanças com outras extensões procedurais de SQL que você pode já conhecer, como o PL/SQL do Oracle, Transact-SQL do Sybase e Microsoft SQL Server etc.

A SQL PL é uma poderosa linguagem que permite aos desenvolvedores escreverem rotinas avançadas para manter as regras de negócios ou parte delas no banco de dados.

 

Objetos do DB2

Antes de iniciarmos nossos estudos em SQL PL, vamos conhecer alguns dos principais objetos do IBM DB2 e vamos também criar um banco de dados DB2 que utilizaremos em nossos exemplos. Os principais objetos do DB2 são:

·         Buffer Pool: é uma área em memória utilizada para gerenciamento do banco de dados. Funciona como cache de informações, índices e páginas. A correta utilização do buffer pool é muito importante, pois é um item de extrema importância na otimização da performance do banco de dados;

·         Tablespace: são objetos lógicos no banco de dados utilizados para associar as tabelas lógicas e os índices ao dispositivo físico (Container) e à memória física (Buffer Pool). Todas as tabelas e índices residem em um tablespace. Existem dois tipos de tablespace: SMS (System Managed Space) e DMS (Database Managed Space). Os tablespaces SMS são gerenciados pelo sistema (o sistema de arquivos do sistema operacional é responsável por gerenciar e alocar o espaço onde as tabelas serão armazenadas) e requerem um mínimo de administração. Os tablespaces DMS são gerenciados pelo DB2 e requerem alguma administração manual;

·         Container: os containers são locais físicos onde ficam armazenadas as informações. Um container pode ser um arquivo ou um diretório. Quando criarmos um tablespace, devemos definir o container para esse tablespace determinando o local físico onde as informações contidas no tablespace serão armazenadas.

 

Criando banco de dados no DB2

Vamos agora criar um banco de dados utilizando para isso o Editor de comandos (ver Nota 1). Na Listagem 1 você pode ver uma instrução em SQL PL para criação do nosso banco de dados chamado SQLMAGAZ. Após alguns segundos você receberá uma mensagem do DB2 confirmando a criação do banco de dados. O símbolo @ na listagem indica final de instrução.

  

CREATE DATABASE SQLMAGAZ

@

Listagem 1. Criando o banco de dados SQLMAGAZ

Nota 1. O Editor de comandos do DB2

O Editor de Comandos é a ferramenta que utilizamos para enviar instruções SQL PL ao DB2. Esta ferramenta está embutida no Centro de Controle, a ferramenta disponível para administração de servidores DB2.

Instruções DML (Data Manipulation Language)

Instruções DML (linguagem para manipulação de dados) são instruções SQL PL utilizadas para inserir, alterar ou recuperar informações no banco de dados. As principais instruções DML são: INSERT, UPDATE, DELETE e SELECT.

Instruções DCL (Data Control Language)

Instruções DCL (linguagem para controle de dados) são instruções SQL PL utilizadas para conceder ou revogar privilégios ao usuário. As principais instruções DCL do DB2 são GRANT e REVOKE.

Instruções DDL (Data Definition Language)

Instruções DDL (linguagem para definição de dados) são instruções SQL PL utilizadas para definições de dados (criação de tabelas, constraints, índices, etc). Vamos utilizar algumas instruções DDL da SQL PL para criação de tabelas, índices e constraints em nosso banco de dados criado recentemente. Essas tabelas também serão usadas nos exemplos do artigo. Na Listagem 2 temos a instrução SQL PL para criação das tabelas TB_CLIENTE e TB_CLIENTE2. Você pode perceber que criamos duas tabelas simples, não definimos o buffer pool e nem mesmo a tablespace onde as tabelas serão armazenadas (pois não é o foco deste artigo). Neste caso o DB2 irá armazenar as duas tabelas em uma tablespace chamada USERSPACE1 e o buffer pool utilizado será o IBMDEFAULTBP, ambos são criados automaticamente quando criamos um banco de dados.

 

CONNECT TO SQLMAGAZ

@

CREATE TABLE TB_CLIENTE (

    CODIGO INT NOT NULL,

    NOME VARCHAR(50),

    TELEFONE VARCHAR(20),

    EMAIL VARCHAR(50))

@

CREATE TABLE TB_CLIENTE2 (

    CODIGO INT NOT NULL,

    NOME VARCHAR(50),

    TELEFONE VARCHAR(20),

    EMAIL VARCHAR(50))

@

Listagem 2. Criando as tabelas TB_CLIENTE e TB_CLIENTE2.

Agora que já temos nosso banco de dados IBM DB2 criado e temos também as tabelas TB_CLIENTE e TB_CLIENTE2, vamos criar duas constraints, uma para cada tabela definindo em ambas as tabelas a coluna CODIGO como chave primaria. Na Listagem 3 temos a instrução SQL PL para criação das constraints.

 

CONNECT TO SQLMAGAZ

@

ALTER TABLE TB_CLIENTE

ADD CONSTRAINT PK_CLIENTE PRIMARY KEY(CODIGO)

@

ALTER TABLE TB_CLIENTE2

ADD CONSTRAINT PK_CLIENTE PRIMARY KEY(CODIGO)

@

Listagem 3. Definindo constraints PK para as tabelas TB_CLIENTE e TB_CLIENTE2 ...

Quer ler esse conteúdo completo? Tenha acesso completo