Apostila Do FireBird 2.0

Download Apostila Do FireBird 2.0

Post on 13-Jun-2015

5.453 views

Category:

Documents

3 download

TRANSCRIPT

Apostila do FireBird 2.0 com IBExpert1Criando 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 conexo 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 conexo 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 usurio. Padro: SYSDBA (6) Password - Senha do usurio. Padro: masterkey (7) SQL Dialect - Dialeto do banco. Padro: 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 aps cria-lo. (11) Client Library File Informa a API cliente para acesso ao banco de dados. Para o firebird iremos usar o fbclient.dll2Registrando o banco de dados Registrar o banco de dados necessrio para que o IBExpert reconhea o banco. possvel especificar certas configuraes durante o registro. O Editor de Registro de Banco de dados pode ser aberto usando o menu Database/Register Database.3Tipos de Dados do Firebird O Firebird Dialect 3, suporta a maioria dos tipos de Dados do SQL. O Firebird, apenas no tem como tipo de dado, o tipo Boolean. Mas, isto no uma falha do Firebird, outro SGDBs tambm no tem este tipo de dado. Apesar de no ter este tipo de dado, podemos criar o nosso tipo boolean atravs de DOMAINS. BLOB O tipo de Dado BLOB, tem o tamanho varivel, isto , no sabemos na hora da criao do campo BLOB qual ser o seu tamanho realmente, mas, o limite do campo Blob que est na documentao do Firebird, de 64k por segmento. Este tipo de campo o tipo indicado para armazenar Textos Grandes Memos, Fotos, Grficos, cones, isto , aparentemente no tem um tipo de dado que no possa ser armazenado no Campo Blob. Campos Blobs no 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 verses : Sub-tipo 0 - Armazena dados em formato binrio Fotos, etc. Sub-tipo 1 - Armazena dados em formato texto Memos. Sub-tipos definidos pelo usurio. Alm dos 2 Sub-tipos pr-definidos, tambm existem os Sub-tipos definidos pelo usurio. Esses tipos so determinados com o uso de valores negativos logo aps a palavra SUB_TYPE. O nmero utilizado um inteiro determinado arbitrariamente pelo usurio de acordo com sua preferncia, desde que seja negativo. A nica considerao que deve ser tomada a de se certificar de sempre armazenar o tipo prdeterminado de informao no respectivo sub-tipo de BLOB. O Firebird no faz nenhuma anlise dos dados que esto 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 informaes do BLOB, a mesma no corresponder ao formato esperado. Sintaxe : Estas declaraes na criao da tabela : MEMO BLOB SUB_TYPE 1; FOTO BLOB SUB_TYPE 0; Ex : CREATE TABLE FUNCIONARIOS ( ID INTEGER NOT NULL PRIMARY KEY, NOME VARCHAR(50) NOT NULL, ...., FOTO BLOB SUB_TYPE 0, EXPERIENCIA BLOB SUB_TYPE 1 SEGMENT SIZE 80, ) Dica : O tamanho de segmento (Segment Size), um pequeno pedao de informao, tipo um conselho, que mantido com a definio de um Blob. Quando se abre um Blob, pode-se perguntar por segmentos de qualquer tamanho, mas para alguns Blobs um determinado tamanho mais conveniente que um outro. Blobs que armazenam texto, por exemplo, 4freqentemente utilizam segmentos de tamanho 80. O pr-processador e outros programas utilitrios usam o tamanho do segmento para determinar o tamanho de buffers que so necessrios para transferncia de dados para e do Blob. CHAR(n) O tipo de Dado CHAR, tem o seu tamanho definido na hora da criao da tabela. Seu tamanho mximo 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 criao da tabela. Seu tamanho mximo 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 so descartados. Ex : CREATE TABLE FUNCIONARIOS ( ID INTEGER NOT NULL PRIMARY KEY, NOME VARCHAR(50) NOT NULL ) Este tipo de dado usado quando voc realmente no souber o tamanho da coluna/campo a ser criada. Outros exemplos, so criar campos Descries, Inscries Estaduais. 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 ) O Tipo Date, no Dialect 1, armazena Data e Hora ao mesmo tempo. TIME O tipo de Dado TIME, no DIALECT 3, armazena a hora, e seu tamanho de 32 bits inteiros longos.5Ex : CREATE TABLE FUNCIONARIOS ( ID INTEGER NOT NULL PRIMARY KEY, NOME VARCHAR(50) NOT NULL, ..., HORA_ENTRADA TIME, HORA_SAIDA TIME ) O Tipo Time, no Dialect 1, no existia. TIMESTAMP O tipo de Dado TIMESTAMP, no DIALECT 3, armazena a Data e a hora ao mesmo tempo, e seu tamanho de 32 bits inteiros longos. Ex : CREATE TABLE PRODUTOS ( ID INTEGER NOT NULL PRIMARY KEY, DESCRICAO VARCHAR(50) NOT NULL, ..., DATA_HORA_MOVIMENTACAO TIMESTAMP ) O Tipo TimeStamp, no Dialect 1, no existia. DECIMAL O tipo de Dado DECIMAL, armazena dgitos a serem gravados na preciso especificada na criao da tabela. Ex : CREATE TABLE FUNCIOARIOS ( ID INTEGER NOT NULL PRIMARY KEY, DESCRICAO VARCHAR(50) NOT NULL, ..., SALARIO DECIMAL(15,02) ) NUMERIC O tipo de Dado NUMERIC, armazenas dgitos a serem gravados na preciso especificada na criao da tabela. 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 dgitos a serem gravados, mas, com o limite de : -32768 a 32767. Serve para armazenar dados numricos pequenos.6Ex : CREATE TABLE FUNCIOARIOS ( ID INTEGER NOT NULL PRIMARY KEY, DESCRICAO VARCHAR(50) NOT NULL, ..., ALTURA SMALLINT ) INTEGER O tipo de Dado INTEGER, armazena dgitos a serem gravados, mas, diferente do SMALLINT, no 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 dgitos a serem gravados, no 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 dgitos a serem gravados, mas, com preciso simples de 7 dgitos. 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 monetrio/valores no Firebird, Dialect 3. Sua preciso de 64 bits, na documentao fala em usar apenas para valores cientficos, mas, eu o uso em todos os sistemas, e obtenho sempre o arredondamento e preciso 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 );7Domnios Conjunto de valores permitidos para um dado. Cria uma definio de um novo tipo de dado. Onde pode ser feito tambm, checagem de valor, isto , regras para o dado ser gravado neste novo tipo de dado. Quando falo em novo tipo de dado, no possvel no Firebird sem alterar os fontes do mesmo, criar um novo tipo de dado, mas, com DOMAINS, ns usamos dados j existentes, mas, especificando o tamanho e a regra a ser seguida. Usando DDL:CREATE DOMAIN domain [AS] [DEFAULT { literal | NULL | USER}] [NOT NULL] [CHECK ( )] [COLLATE collation]; Exemplo: CREATE DOMAIN SEXO AS INTEGER DEFAULT 'M' NOT NULL CHECK (VALUE IN ('M','F'); CREATE DOMAIN QUANTIDADE AS NUMERIC (15,3) DEFAULT 0 NOT NULL CHECK (VALUE >= 0); ALTER DOMAIN SET DEFAULT | NULL | USER DROP DEFAULT ADD CHECK DROP CONSTRAINT; DROP DOMAIN ;Usando IBExpert Um novo domnio pode ser criado para o banco de dados conectado, usando o menu Database/New Domain, ou clicando com o boto direito do mouse no DB Explorer Domains/New Domain.(1) Name Nome do domnio (2) Field Type Tipo do campo (3) Size Tamanho do campo8(4) Scale Nmero de lugares decimais que pode ser especificado para todos campos numricos (5) Not Null Determina se o campo poder ter nulo ou no (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 domnio 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 Descrio para o domnio Depois de definido o domnio basta clicar no boto Compile na barra de ferramentas.Nome DOM_CEP DOM_CODIGO DOM_CPF DOM_DATA DOM_DATA_HORA DOM_DESCRICAO DOM_DINHEIRO DOM_DOCUMENTO DOM_EMAIL DOM_ENDERECO DOM_ESTADO DOM_HORA DOM_IDENTIDADE DOM_NOME DOM_TELEFONE DOM_TIPO_MOVIMENTOTipo de campo VARCHAR INTEGER VARCHAR DATE TIMESTAMP VARCHAR NUMERIC VARCHAR VARCHAR VARCHAR CHAR TIME VARCHAR VARCHAR VARCHAR CHARTamanho 10EscalaNo Nulo XCharset ISO8859_1 ISO8859_1Collate PT_BR PT_BRDefault SourceCheck15CURRENT _TIME40 15 20 100 40 2 15 60 20 1ISO8859_1 2 ISO8859_1 ISO8859_1 ISO8859_1PT_BR 0 PT_BR PT_BR PT_BRX XISO8859_1 ISO8859_1 ISO8859_1PT_BR PT_BR PT_BR VALUE IN ('E','S')9Tabelas Estrutura composta por linhas e colunas que serve para armazenar os dados em um banco de dados relacional. A linha indica uma ocorrncia 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 informaes relevantes dessa pessoa, como nome, peso, altura, data de nascimento, documento de identidade etc. A idia central que as caractersticas do objeto permitam identificar uma nica pessoa em cada linha da tabela Usando DDL:CREATE TABLE TABLE_NAME ( COLUMN_NAME1 , COLUMN_NAME2 , ... COLUMN_NAMEn ; TABLE_CONSTRAINT1,TABLE_CONSTRAINT2, ... TABLE_CONSTRAINTn); Exemplo: CREATE TABLE cliente ( codigo INTEGER, nome VARCHAR(30) NOT NULL, sexo VARCHAR(1), CPF VARCHAR(11) UNIQUE, endereco VARCHAR(40), cidade VARCHAR(20), dt_nascimento DATE, idade COMPUTED BY ((CURRENT_DATE dt_nascimento) / 360), primary key (codigo), CHECK ( (sexo = 'M') AND (idade > 18) ) ) ALTER TABLE ADD ADD CONSTRAINT DROP CONSTRAINT DROP ; DROP TABLE ;Usando IBExpert Uma nova tabela pode ser criada para o banco de dados conectado, usando o menu Database/New Table, ou clicando com o boto direito do mouse no DB Explorer Tables/New Table.(1) Name Nome da tabela (2) Primary e Foreing Key - Na primeira coluna PK um ou mais campos podem ser definidos como chave primria (duplo clique). Uma chave primria indica uma identificao nica para o conjunto de dados. (3) Field Name Nome do campo (4) Field Type Tipo do campo (5) Domain Aqui pode ser usado um domnio anteriormente cadastrado (6) Size Tamanho do campo (7) Scale Nmero de lugares decimais que pode ser especificado para todos campos numricos 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 no (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 Descrio para o domnio (14) AutoInc Usando a barra de espao ou um duplo clique, uma caixa de dilogo aparecer para definir o campo auto-incremento.(15) Check Verifica a integridade do domnio Ex: VALUE > 0, VALUE IN ('ES','RJ') (16) Computed Source Permite definir um campo calculado, a partir dos campos da tabela. Ex: NOME_COMPLETO = PRIMEIRO_NOME ||' '|| SEGUNDO_NOME TOTAL = QUANTIDADE * PRECO_UNITARIO (17) Computed Source Valor que ser armazenado caso o campo esteja como nulo Ex: 0 para campos numricos11Seqncia ou Generator Cria um Generator de nmero inteiros e seqenciais. O Generator em conjunto com Trigger e ou Stored Procedure, usado para simular um campo auto-incremento dos Bancos Desktop's. Serve tambm para evitar chaves duplicadas em campos numricos. O valor default Zero, mas, atualizado toda vez que chamado a funo GEN_ID(). O Generator pode ser usado para incrementar ou decrementar valores. Para se saber o cdigo atual do Generator voc passa o valor Zero "0 para o Gen_ID(). Usando DDL:DDLCREATE SEQUENCE ; ALTER SEQUENCE RESTART WITH ; DROP SEQUENCE ; CREATE GENERATOR ; SET GENERATOR TO ; DROP GENERATOR ;Retorna o prximo valor da SeqnciaSELECT NEXT VALUE FOR FROM RDB$DATABASE; NEXT VALUE FOR GEN_CLIENTE; = GEN_ID( , );Exibe seqnciasSHOW SEQUENCE ; SHOW SEQUENCES; SHOW GENERATOR ; SHOW GENERATORS;Ex: Simulando um auto-incremento para a tabela de CLIENTES na coluna CODIGO.CREATE GENERATOR GEN_CLIENTE; CREATE TRIGGER "TR_AUTO_INCREMENTO_CLIENTE" FOR "CLIENTE" BEFORE INSERT POSITION 0 AS BEGIN NEW.CODIGO = NEXT VALUE FOR GEN_CLIENTE; ENDUsando 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 boto direito do mouse no DB Explorer Tables/New Generator.12Vises - Views Uma viso, na terminologia SQL, uma tabela nica derivada de outra tabela, que pode ser uma tabela bsica ou uma viso previamente definida. Uma viso no existe de forma fsica, ela considerada uma tabela virtual, em contraste com as tabelas bsicas, cujas tuplas so realmente armazenadas no banco de dados. Isso limita as operaes de atualizao possveis para as vises, embora no imponha nenhuma limitao para as consultas. Existem apenas dois tipos de vises: Vises apenas para leitura quando seus dados no podem ser editados Vises de atualizao quando possvel a alterao do estado do banco de dados As vises so utilizadas para realizar tarefas como: Restringir o acesso dos usurios Mostrar apenas as colunas X Filtragem de dados j pr formatados Em resumo, podemos fazer as seguintes observaes: Uma viso de uma nica tabela de definio atualizvel se a viso contiver, entre seus atributos, a chave primria da relao bsica, bem como todos os atributos com restrio NOT NULL que no contiverem valores default especificados. As vises definidas a partir de diversas tabelas utilizando-se as junes, em geral, no so atualizveis. As vises definidas usando-se as funes de agrupamento e agregadas no so atualizveis.Usando DDL:CREATE VIEW name [(view_col [, view_col ])] AS [WITH CHECK OPTION]; Ex : CREATE VIEW TELEFONES ( NOME, TELEFONE ) AS SELECT NOME, TELEFONE FROM CLIENTES;Usando IBExpert Um nova VIEW pode ser criada para o banco de dados conectado, usando o menu Database/New View, ou clicando com o boto direito do mouse no DB Explorer Tables/New View.13Exception uma mensagem de erro definida pelo usurio, escrita especificamente para um banco de dados e armazenada no banco, e s pode ser usada em Stored Procedure e ou Trigger. Usando DDL: CREATE EXCEPTION "Exception_Text"; Usando IBExpert Um nova Exception pode ser definida para o banco de dados conectado, usando o menu Database/New Exception, ou clicando com o boto direito do mouse no DB Explorer Tables/New Exception.141516Referncias BibliogrficasC. J. Date. Introduo a Sistemas de Banco de Dados, 8 Edio, Editora Campus, 2004 Coleo Info 2006, Banco de dados. Elmasri, R.; Navath, S. B. Sistemas de Banco de Dados, 4 Edio, Editora Pearson, 2005. Rodrigues, A. H. Apostila de Firebird 1.0. Adaptao de Interbase para Firebird por um colaborador da CFLP. Traduo de informaes, IBExpert Documentation, disponvel atravs do endereo eletrnico: http://www.ibexpert.info/documentation/index.html, acessado em 15/04/2007.17