Академический Документы
Профессиональный Документы
Культура Документы
0
com IBExpert
1
Criando o banco de dados no IbExpert
Um novo banco de dados pode ser criado simplesmente usando o menu Database/Create
DataBase ou usando o respectivo ícone na barra de ferramentas. A tela para criar o banco de
dados aparecerá:
(1) Server - Aqui você indica onde o banco de dados será armazenado:
1. Remote – indica uma conexão remota
2. Local – indica que o banco de dados será armazenado localmente.
(2) Server name - precisa ser conhecido caso o acesso seja remoto. As seguinte sintaxes
podem ser usadas:
1. Windows – SERVER_NAME:C:\path\database.fdb
2. Linux – SERVER_NAME:/path/database.fdb
(3) Protocol - o protocolo usado na conexão com o servidor: TCP/IP, NetBEUI ou SPX
(4) Database - Caminho e nome do arquivo de banco de dados no servidor
(5) Username - Nome do usuário. Padrão: SYSDBA
(6) Password - Senha do usuário. Padrão: masterkey
(7) SQL Dialect - Dialeto do banco. Padrão: 3
(8) Page Size - Especifica o tamanho de pagina do banco de dados em bytes
(9) Charset - Conjunto de caracteres. Brasil – ISO8859_1
(10) Marque para registra o banco de dados após cria-lo.
(11) Client Library File – Informa a API cliente para acesso ao banco de dados. Para o
firebird iremos usar o fbclient.dll
2
Registrando o banco de dados
Registrar o banco de dados é necessário para que o IBExpert reconheça o banco. É possível
especificar certas configurações durante o registro. O Editor de Registro de Banco de dados
pode ser aberto usando o menu Database/Register Database.
3
Tipos de Dados do Firebird
O Firebird Dialect 3, suporta a maioria dos tipos de Dados do SQL. O Firebird, apenas não tem
como tipo de dado, o tipo Boolean. Mas, isto não é uma falha do Firebird, outro SGDB´s
também não tem este tipo de dado. Apesar de não ter este tipo de dado, podemos criar o
nosso “tipo boolean” através de DOMAINS.
BLOB
O tipo de Dado BLOB, tem o tamanho variável, isto é, não sabemos na hora da criação do
campo BLOB qual será o seu tamanho realmente, mas, o limite do campo Blob que está na
documentação do Firebird, é de 64k por segmento.
Este tipo de campo é o tipo indicado para armazenar Textos Grandes “Memos”, Fotos,
Gráficos, Ícones, isto é, aparentemente não tem um tipo de dado que não possa ser
armazenado no Campo Blob. Campos Blob´s não podem ser indexados.
Saber qual o sub-tipo correto utilizar é essencial para criar aplicativos que se utilizem dos
campos BLOBs. Os BLOBs se apresentam em 3 versões :
Além dos 2 Sub-tipos pré-definidos, também existem os Sub-tipos definidos pelo usuário.
Esses tipos são determinados com o uso de valores negativos logo após a palavra SUB_TYPE.
O número utilizado é um inteiro determinado arbitrariamente pelo usuário de acordo com sua
preferência, desde que seja negativo.
A única consideração que deve ser tomada é a de se certificar de sempre armazenar o tipo pré-
determinado de informação no respectivo sub-tipo de BLOB. O Firebird não faz nenhuma
análise dos dados que estão sendo gravados, portanto essa é uma responsabilidade do
aplicativo. Nenhum erro será retornado pelo Firebird se um tipo errado de dado for inserido em
um BLOB de sub-tipo incorreto, mas um aplicativo pode ser prejudicado se ao recuperar as
informações do BLOB, a mesma não corresponder ao formato esperado.
Sintaxe :
Ex :
Dica :
4
freqüentemente utilizam segmentos de tamanho 80. O pré-processador e outros programas
utilitários usam o tamanho do segmento para determinar o tamanho de buffers que são
necessários para transferência de dados para e do Blob.
CHAR(n)
O tipo de Dado CHAR, tem o seu tamanho definido na hora da criação da tabela. Seu tamanho
máximo é de 32767, 32k. Este tipo tem o seu tamanho fixo.
Ex :
CREATE TABLE FUNCIONARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
NOME VARCHAR(50) NOT NULL,
...
SEXO CHAR(01)
)
Este tipo de dado é usado quando você realmente souber o tamanho da coluna/campo a ser
criada. Outro exemplo, é criar o coluna de DOMAIN BOLLEAN.
VARCHAR(n)
O tipo de Dado VARCHAR, tem o seu tamanho definido na hora da criação da tabela. Seu
tamanho máximo é de 32767, 32k. Este tipo tem o seu tamanho variado na tabela. Isto é, se
você criar uma coluna de 45 Caracteres, mas, a coluna tenha apenas 20 Caracteres gravados,
o restante, os 25 Caracteres são descartados.
Ex :
CREATE TABLE FUNCIONARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
NOME VARCHAR(50) NOT NULL
)
Este tipo de dado é usado quando você realmente não souber o tamanho da coluna/campo a
ser criada.
DATE
O tipo de Dado DATE, no DIALECT 3, armazena a Data, e seu tamanho é de 32 bits inteiros
longos.
Ex :
CREATE TABLE FUNCIONARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
NOME VARCHAR(50) NOT NULL,
...,
DATA_ADMISSAO DATE
)
TIME
O tipo de Dado TIME, no DIALECT 3, armazena a hora, e seu tamanho é de 32 bits inteiros
longos.
5
Ex :
CREATE TABLE FUNCIONARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
NOME VARCHAR(50) NOT NULL,
...,
HORA_ENTRADA TIME,
HORA_SAIDA TIME
)
TIMESTAMP
Ex :
CREATE TABLE PRODUTOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...,
DATA_HORA_MOVIMENTACAO TIMESTAMP
)
DECIMAL
Ex :
CREATE TABLE FUNCIOARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...,
SALARIO DECIMAL(15,02)
)
NUMERIC
Ex :
CREATE TABLE FUNCIOARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...,
SALARIO NUMERIC(15,02)
)
SMALLINT
O tipo de Dado SMALLINT, armazena dígitos a serem gravados, mas, com o limite de : -32768
a 32767.
6
Ex :
CREATE TABLE FUNCIOARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...,
ALTURA SMALLINT
)
INTEGER
O tipo de Dado INTEGER, armazena dígitos a serem gravados, mas, diferente do SMALLINT,
não existe um limite aparentemente, este tipo é de 32 bits, tem a escala de valores em :
-2.147.483.648 até 2.147.483.648
Ex :
CREATE TABLE FUNCIOARIOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...)
BIGINT
O tipo de Dado BIGINT, armazena dígitos a serem gravados, não existe um limite
aparentemente, este tipo é de 64 bits.
Ex :
CREATE TABLE FUNCIOARIOS (
ID BIGINT NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
...)
FLOAT
O tipo de Dado FLOAT, armazena dígitos a serem gravados, mas, com precisão simples de 7
dígitos.
Ex :
CREATE TABLE PRODUTOS (
ID INTEGER NOT NULL PRIMARY KEY,
DESCRICAO VARCHAR(50) NOT NULL,
VLR_ULT_CMP_ITEM FLOAT
...)
DOUBLE PRECISION
Este é o tipo de campo no qual eu recomenda para uso monetário/valores no Firebird, Dialect
3. Sua precisão é de 64 bits, na documentação fala em usar apenas para valores científicos,
mas, eu o uso em todos os sistemas, e obtenho sempre o arredondamento e precisão
desejada.
Ex :
CREATE TABLE MOV_FINANCEIRA (
IDCODMOEDA CHAR(03) NOT NULL PRIMARY KEY,
DATA_MOVIMENTACAO DATE NOT NULL PRIMARY KEY,
VALOR_TOTAL_MOVIMENTACAO_DIA DOUBLE PRECISION
);
7
Domínios
Cria uma definição de um “novo tipo de dado”. Onde pode ser feito também, checagem de
valor, isto é, regras para o dado ser gravado neste “novo tipo de dado”. Quando falo em novo
tipo de dado, não é possível no Firebird “sem alterar os fontes do mesmo”, criar um novo tipo
de dado, mas, com DOMAINS, nós usamos dados já existentes, mas, especificando o tamanho
e a regra a ser seguida.
Usando DDL:
CREATE DOMAIN domain [AS] ALTER DOMAIN <domain_name> DROP DOMAIN <domain_name>;
<datatype> SET DEFAULT <default_value>
[DEFAULT { literal | NULL | | NULL | USER
USER}] DROP DEFAULT
[NOT NULL] [CHECK ADD CHECK
( <dom_search_condition>)] <domain_search_condition>
[COLLATE collation]; DROP CONSTRAINT;
Exemplo:
Usando IBExpert
Um novo domínio pode ser criado para o banco de dados conectado, usando o menu
Database/New Domain, ou clicando com o botão direito do mouse no DB Explorer –
Domains/New Domain.
8
(4) Scale – Número de lugares decimais que pode ser especificado para todos campos
numéricos
(5) Not Null – Determina se o campo poderá ter nulo ou não
(6) SubType – Precisa ser especificado para campos tipo BLOB
(7) Charset – Especificando um charset ele sobrescreverá o charset default do banco de
dados. Use ISO8859_1
(8) Collate – Determina o collate para o charset especificado. Use PT_BR
(9) Default Source – Valor que será armazenado caso o campo esteja como nulo.
(10) Check – Verifica a integridade do domínio
Ex: VALUE > 0, VALUE IN ('ES','RJ')
(11) Array – Determina um campo como array, digite aqui a faixa para o array.
Ex: 1:100
(12) Description – Descrição para o domínio
9
Tabelas
Estrutura composta por linhas e colunas que serve para armazenar os dados em um banco de
dados relacional. A linha indica uma ocorrência do objeto do mundo real, e a coluna serve para
qualificar o objeto. Dessa forma, se imaginarmos uma tabela PESSOA, ela teria em cada linha
uma pessoa e em cada coluna as informações relevantes dessa pessoa, como nome, peso,
altura, data de nascimento, documento de identidade etc. A idéia central é que as
características do objeto permitam identificar uma única pessoa em cada linha da tabela
Usando DDL:
CREATE TABLE TABLE_NAME ( ALTER TABLE <table_name> DROP TABLE
COLUMN_NAME1 <COLUMN_DEFINITION>, ADD <field_name> <field_definition> <table_name>;
COLUMN_NAME2 <COLUMN_DEFINITION>, ADD CONSTRAINT <constraint_name>
... <constraint_definition>
COLUMN_NAMEn <COLUMN_DEFINITION>; DROP CONSTRAINT <constraint_name>
TABLE_CONSTRAINT1,TABLE_CONSTRAINT2, DROP <field_name>;
...
TABLE_CONSTRAINTn);
Exemplo:
Usando IBExpert
Uma nova tabela pode ser criada para o banco de dados conectado, usando o menu
Database/New Table, ou clicando com o botão direito do mouse no DB Explorer – Tables/New
Table.
10
(8) SubType – Precisa ser especificado para campos tipo BLOB
(9) Array – Determina um campo como array, digite aqui a faixa para o array.
Ex: 1:100
(10)Not Null – Determina se o campo poderá ter nulo ou não
(11) Charset – Especificando um charset ele sobrescreverá o charset default do banco de
dados. Use ISO8859_1
(12) Collate – Determina o collate para o charset especificado. Use PT_BR
(13) Description – Descrição para o domínio
(14) AutoInc – Usando a barra de espaço ou um duplo clique, uma caixa de diálogo
aparecerá para definir o campo auto-incremento.
11
Seqüência ou Generator
O valor default é Zero, mas, é atualizado toda vez que é chamado a função GEN_ID(). O
Generator pode ser usado para incrementar ou decrementar valores. Para se saber o código
atual do Generator você passa o valor Zero "0 para o Gen_ID().
Usando DDL:
DDL Retorna o próximo valor da Exibe seqüências
Seqüência
CREATE SEQUENCE <name>; SELECT NEXT VALUE FOR SHOW SEQUENCE
ALTER SEQUENCE <name> RESTART WITH <SequenceName> FROM RDB$DATABASE; <SequenceName>;
<value>; SHOW SEQUENCES;
DROP SEQUENCE <name>; NEXT VALUE FOR GEN_CLIENTE;
Usando IBExpert
Um novo GENERATOR ou SEQUENCE pode ser criado para o banco de dados conectado,
usando o menu Database/New Generator, ou clicando com o botão direito do mouse no DB
Explorer – Tables/New Generator.
12
Visões - Views
Uma visão, na terminologia SQL, é uma tabela única derivada de outra tabela, que pode ser
uma tabela básica ou uma visão previamente definida. Uma visão não existe de forma física,
ela é considerada uma tabela virtual, em contraste com as tabelas básicas, cujas tuplas são
realmente armazenadas no banco de dados. Isso limita as operações de atualização possíveis
para as visões, embora não imponha nenhuma limitação para as consultas.
– Uma visão de uma única tabela de definição é atualizável se a visão contiver, entre seus
atributos, a chave primária da relação básica, bem como todos os atributos com restrição
NOT NULL que não contiverem valores default especificados.
– As visões definidas a partir de diversas tabelas utilizando-se as junções, em geral, não são
atualizáveis.
– As visões definidas usando-se as funções de agrupamento e agregadas não são
atualizáveis.
Usando DDL:
Usando IBExpert
Um nova VIEW pode ser criada para o banco de dados conectado, usando o menu
Database/New View, ou clicando com o botão direito do mouse no DB Explorer – Tables/New
View.
13
Exception
É uma mensagem de erro definida pelo usuário, escrita especificamente para um banco de
dados e armazenada no banco, e só pode ser usada em Stored Procedure e ou Trigger.
Usando DDL:
Usando IBExpert
Um nova Exception pode ser definida para o banco de dados conectado, usando o menu
Database/New Exception, ou clicando com o botão direito do mouse no DB Explorer –
Tables/New Exception.
14
15
16
Referências Bibliográficas
C. J. Date. Introdução a Sistemas de Banco de Dados, 8ª Edição, Editora Campus, 2004
Elmasri, R.; Navath, S. B. Sistemas de Banco de Dados, 4ª Edição, Editora Pearson, 2005.
17