Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Firebird - Apostilas - Informática Part1, Notas de estudo de Informática

Apostilas de Informática sobre Firebird, O que é o Firebird, IBConsole, SQL – Structured Query Language, Comandos e Funções, O que é Dialect, Segurança com os usuários, Tipos de Dados do Firebird.

Tipologia: Notas de estudo

2013

Compartilhado em 27/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 15

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Apostila de Firebird 1.0
Acesso Nativo com o InterBase Express “IBX”
Autor : Anderson Haertel Rodrigues
Colaboração : Marcus Boi
Título Original: Apostila de Firebird 1.0
Adaptação de Interbase para Firebird por um colaborador da CFLP
Todas as marcas citadas pertencem aos seus respectivos proprietários
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Firebird - Apostilas - Informática Part1 e outras Notas de estudo em PDF para Informática, somente na Docsity!

Apostila de Firebird 1.

Acesso Nativo com o InterBase Express “IBX”

Autor : Anderson Haertel Rodrigues

Colaboração : Marcus Boi

Título Original: Apostila de Firebird 1. Adaptação de Interbase para Firebird por um colaborador da CFLP

Todas as marcas citadas pertencem aos seus respectivos proprietários

O Que Veremos :

Uma Visão Geral do Firebird.

!" O que é o Firebird?

!" IBConsole

!" SQL – Structured Query Language

!" Comandos e Funções

!" O que é Dialect?

!" Segurança com os usuários

!" Tipos de Dados do Firebird

!" Join´s

!" Transação

Acesso nativo ao Firebird, através dos componentes “IBX”.

!" O que é acesso nativo.

!" O que é o InterBase® Express “IBX”.

!" Explicação dos 12 componentes da palheta InterBase®.

!" Explicação dos Componentes da palheta IB ADmin

IBConsole

O que é? e pra que serve?

O IBConsole é o gerenciador de Dados que acompanhava o InterBase, e que pode ser utilizado com o Firebird 1. A grande vantagem dele é o fato, de não ser uma ferramenta de criação de Tabelas. No IBConsole, você realmente aprende a linguagem SQL, pois, toda e qualquer criação, relacionamento, manutenção, é feito no ISQL, tudo via Linha de Comando. Existem outras ferramentas no mercado, como Quick Desk, IB Admin, Maratho, IBExpert´s, todas muito boas e de fácil aprendizado e, com criação automática da grande maioria dos Comandos de DML “Linguagem de manipulação de Dados”.

No IBConsole o usuário máster é “SYSDBA” e a sua senha é “masterkey”, o seu uso é bastante simples, inicialmente você precisa se “logar” no IBConsole para isso clique com o botão direito sobre a opção “Local Server” e escolha “login” em USERNAME você informa o usuário máster e a sua senha acima descrita. Na opção Databases você pode registrar ou criar um novo banco de dados, para fazer o registro o banco já deve existir, clique com o botão direito sobre a opção “Register”, em Files você informa o nome do banco e o seu caminho se preferir pode procurar com o botão de atalho que esta localizado a sua direita, o Alias Name é o nome do Alias para esse banco, User Name / Password você deve informar o usuário e a sua senha, clicando no botão de OK para finalizar o registro.

Para criarmos um Banco de Dados em ambiente Client/Server via IBConsole deve escolher a opção “interactive SQL” no menu Tools ou clicar no ícone SQL. Com ela, podemos enviar comandos SQL para o servidor Firebird administrar nossos dados. Ao carregarmos o Windows ISQL, veremos uma tela dividida em duas partes, a parte superior aceita comandos SQL e os resultados aparecerão na parte inferior. Devemos observar que o ISQL não enviará nenhum comando SQL até logarmos com um usuário e senha correta e nos conectarmos a um banco de dados.

Ex: Vamos mostrar todos os dados da tabela Employee, esta tabela é uma tabela de exemplo que é instalada juntamente com o Firebird, não esqueça de se conectar a essa banco antes.

Select * from employee

Depois disso pressionamos o botão Execute Query ou Ctrl + Enter e teremos o resultado mostrado na parte inferior da tela.

SQL – Structured Query Language

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas várias linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para o sistema de Banco de Dados relacional denominado SYSTEM R, no inicio dos anos 70. Em 1986 o American National Standard Institute (ANSI), publicou um padrão SQL e ela se estabeleceu como linguagem padrão de Banco de Dados Relacional.

A SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language – Definição de Dados Declarados), composta entre outros pelos comandos Create, que é destinado à criação do Banco de Dados, das tabelas que o compõe, além das relações existentes entre as tabelas. Como exemplo da classe DDL temos os comandos Create, Alter, Drop e Rename.

Os comandos da série DML (Data Manipulation Language – Manipulação de Dados Declarados), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. Como exemplo de comandos da classe DML temos os comandos Select, Insert, UpDate, Delete, Commit e Rollback.

Uma subclasse de comandos DML, é a DCL (Data Control Language – Controle de dados Declarados), que dispõe de comandos de controle como Grant, Revoke e Lock.

A Linguagem SQL tem como grande virtude a sua capacidade de gerenciar índices, sem a necessidade de controle individualizado de índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo registro a registro. Outra característica muito importante disponível em SQL é sua capacidade de construção de visões, que são formas de visualizarmos os dados, como listagens independentes das tabelas e organização lógica dados dados.

Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações ou de as gravarmos, depois de iniciarmos uma seqüência de atualizações. Os comandos Commit e Rollback são responsáveis por estas facilidades.

Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices.

Comandos e Funções:

A seguir serão listados alguns comandos e funções mais utilizadas do Firebird, com parâmetros mais comuns. Não serão abordados todos os comandos, mas o essencial para se obter um bom conhecimento e conseguir usufruir do potencial desse banco de dados.

ALTER DATABASE CREATE EXCEPTION DROP PROCEDURE ALTER DOMAIN CREATE GENERATOR DROP TABLE ALTER EXCEPTION CREATE INDEX DROP TRIGGER ALTER INDEX CREATE PROCEDURE DROP VIEW ALTER PROCEDURE CREATE TABLE EXECUTE PROCEDURE ALTER TABLE CREATE TRIGGER GEN_ID( ) ALTER TRIGGER CREATE VIEW INSERT AVG( ) DECLARE EXTERNAL FUNCTION MAX( ) / MIN( ) CAST( ) DELETE ROLLBACK CLOSE DROP DATABASE SELECT COMMIT DROP DOMAIN SET GENERATOR COUNT( ) DROP EXCEPTION SUM( ) CREATE DATABASE DROP EXTERNAL FUNCTION UPDATE CREATE DOMAIN DROP INDEX UPPER( )

ALTER INDEX

Torna um índice ativo e ou inativo. Este comando está relacionado diretamente na performance do índice no seu Banco de Dados. Em certos momentos, o índice no Firebird pode ficar desbalanceado, desta forma, este comando recria o índice do Firebird.

Sintaxe :

ALTER INDEX name {ACTIVE | INACTIVE};

Ex : CREATE INDEX INDEX_NOME_TABELAX ON CLIENTES(NOME); ALTER INDEX INDEX_NOME_TABELAX INACTIVE; ALTER INDEX INDEX_NOME_TABELEX ACTIVE;

ALTER PROCEDURE

Altera uma Stored Procedure existente no Firebird. A sintaxe é a mesma da Create Procedure, se muda apenas o CREATE por ALTER. A sintaxe ALTER PROCEDURE, só não pode ser usada para alterar o nome da Stored Procedure. Mas, todos os seus itens, Parâmetros e o Corpo da Procedure pode ser alterada.

Sintaxe : ALTER PROCEDURE name[( var datatype [, var datatype …])] [RETURNS ( var datatype [, var datatype …])] AS Begin //Linguagem da Procedure. end; Ex : ALTER PROCEDURE SOMA_VENDAS_NO_MES ( PMES SMALLINT ) RETURNS ( SOMA NUMERIC(18,02) ) AS BEGIN SELECT SUM(VALOR_VENDA) FROM VENDAS WHERE MES :PMES INTO SOMA END

ALTER TABLE

Altera a estrutura de uma tabela e ou a integridade da mesma.

Sintaxe :

ALTER TABLE table ADD <col_def> <col_def> = col { | [COMPUTED [BY] () | domain}[DEFAULT { literal | NULL | USER}][NOT NULL] [ <col_constraint>] [COLLATE collation]<col_constraint> = [CONSTRAINT constraint] <constraint_def> [ <col_constraint>]

Ex : ALTER TABLE FORNECEDORES ADD CGC CHAR(14), DROP TIPOFORNECEDOR, ADD CONSTRAINT E_MAIL CHECK ( E_MAIL CONTAINING ‘@’ OR E_MAIL IS NULL )

ALTER TRIGGER

Altera a definição de uma Trigger. Caso algum argumento for omitido, é assumido o valor definido no CREATE TRIGGER, ou no ALTER TRIGGER anteriormente usado.

Sintaxe :

ALTER TRIGGER name [ACTIVE | INACTIVE] [{BEFORE | AFTER} {DELETE | INSERT | UPDATE}] [POSITION number] AS < trigger_body>;

Ex : ALTER TRIGGER “BAIXA_ESTOQUE” INACTIVE; ALTER TRIGGER “EXCLUI_ITENS” FOR “TABELAVENDAS” BEFORE DELETE AS BEGIN DELETE FROM ITENS: WHERE NUM_VENDA = OLD.NUM_VENDA END

AVG()

Retorna a média de valores de uma coluna.

Ex: SELECT MES, AVG(VALOR_DA_VENDA) FROM VENDAS ORDER BY MES

CAST()

Usado em colunas, onde há a necessidade de se converter tipos de dados para outro formato.

Ex : SELECT CODIGO FROM FORNECEDORES WHERE DATA >= CAST(: DATA AS DATE)

SELECT CAST(CODIGO AS CHAR(10)) || ‘ – ‘ || NOME FROM VENDEDORES.

Neste exemplo foi usado para fazer a formatação e a “soma” entre dois campos. As barras verticais, foram usadas para concatenação, isto é, no Firebird e concatenação de campos, é através das barras ||, e não com o sinal de “+” como em outros SGDB´s.

Este são os “Type Casting” aceitos pelo Firebird :

Caracter em Numérica ou Data Numérico em Caracter ou Data Data em Caracter ou Numérico

CREATE DOMAIN

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.

Sintaxe :

CREATE DOMAIN domain [AS] [DEFAULT { literal | NULL | USER}] [NOT NULL] [CHECK ( <dom_search_condition>)] [COLLATE collation];

Ex : CREATE DOMAIN STRINGNOME AS VARCHAR(45);

CREATE DOMAIN IDCODIGO AS INTEGER DEFAULT 1000 CHECK ( VALUE > 1000 ) NOT NULL

CREATE TABLE “FORNECEDOR” (ID INTEGER NOT NULL PRIMARY KEY, NOME STRINGNOME, ---- Usamos o Domínio criado acima ----);

CREATE EXCEPTION

Cria uma mensagem de erro, armazenada no servidor, e só pode ser usado em Stored Procedure e ou Trigger

Sintaxe :

CREATE EXCEPTION “NOME_DA_EXCEPTION” ‘MENSAGEM’

Ex: CREATE EXCEPTION “NOME_INVALIDO” ‘O Valor informado para o campo, é inválido’

Este trecho de código, está contigo dentro de uma Trigger.

IF (NEW.NOME = ‘’) THEN EXCEPTION NOME_INVALIDO;

CREATE GENERATOR

Cria um Generator de número inteiros e seqüenciais. O Generator em conjunto com Trigger e ou Stored Procedure, é usado para simular o campo auto-incremento dos Bancos Desktop´s. Serve também para evitar chaves duplicadas em campos numéricos.

O Valor inicial é 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().

Sintaxe :

CREATE GENERATOR “NOME_DO_GENERATOR”

Ex : Vamos simular neste exemplo, um auto numérico seqüencial da tabela de fornecedores da coluna ID.

CREATE GENERATOR COD_FORNECEDOR; CREATE TRIGGER “COD_AUTO_FORNECEDOR” FOR “FORNECEDORES” BEFORE INSERT POSITION 0 AS BEGIN NEW.ID := Gen_ID(“COD_FORNECEDOR”,1); END

Para excluir um GENERATOR, ele tem que ser excluído direto da tabela de sistema do Firebird “RDB$GENERATORS”.

Ex : DELETE FROM RDB$GENERATORS WHERE RDB$GENARATOR_NAME = ‘NOME_DO_SEU_GENERATOR’;

CREATE INDEX

Cria um índice para uma ou mais colunas especificas da tabela. O índice está ligado diretamente a performance do seu banco de dados. O conceito de índices em ambientes Desktop´s “xBase, Access, Paradox” é muito diferente do conceito de índices em ambiente Client/Server. Um índice em ambiente Client/Server “Firebird, Oracle, DB2”, não tem a função de organizar a tabela, pois, você tem o mesmo efeito com ORDER BY. A função de um índice em ambiente Client/Server, é de performance em primeiro lugar, caso o índice seja um PK “Primary Key”, tem a função de manter a integridade da tabela, caso o índice seja um FK “Foreign Key”, tem a função de relacionamento e integridade da tabela, caso o índice seja UNIQUE, tem a função de não deixar valores iguais serem incluídos.

As cláusulas ASCENDING e DESCENDING, tem a função de organizar da maneira desejada o índice. O valor default é ASC

Sintaxe :

CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]] INDEX index ON table ( col [, col ...]);

Ex : CREATE INDEX IND_DATA_VENDA ON “VENDAS” ( DATA_VENDA ); CREATE DESC INDEX IND_SALARIOS ON “FUNCIONARIOS” ( SALARIO ); CREATE UNIQUE INDEX IND_COD_PRODUTO ON “PRODUTOS” ( ID );

CREATE PROCEDURE

Cria uma Stored Procedure “SP” e, define seus parâmetros de entrada e saída e o corpo da procedure. Uma SP é escrita em “linguagem” Firebird, e armazenada no próprio Banco de Dados. Stored Procedure´s aceita todas as sentenças de manipulação de Dados e algumas extensões avançadas do Firebird, como :

IF..THEN..ELSE, WHILE...DO, FOR SELECT..DO, EXCEPTIONS ...

Existem dois tipos de SP :

<col_def> = col { | COMPUTED [BY] () | domain} [DEFAULT {literal | NULL | USER}] [NOT NULL] [<col_constraint>] [COLLATE collation] = {SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}[<array_dim>] | (DATE | TIME | TIMESTAMP} [<array_dim>] | {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>] | {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)] [<array_dim>] [CHARACTER SET charname] | {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR} [VARYING] [(int)] [<array_dim>] | BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int] [CHARACTER SET charname] | BLOB [(seglen [, subtype])]<array_dim> = [[x:]y [, [x:]y …]] = A valid SQL expression that results in a single value. <col_constraint> = [CONSTRAINT constraint] { UNIQUE | PRIMARY KEY | REFERENCES other_table [(other_col [, other_col …])] [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] | CHECK (<search_condition>)} = [CONSTRAINT constraint] {{PRIMARY KEY | UNIQUE} (col [, col …]) | FOREIGN KEY (col [, col …]) REFERENCES other_table [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}] | CHECK (<search_condition>)} <search_condition> = { | (<select_one>)} | [NOT] BETWEEN AND | [NOT] LIKE [ESCAPE ] | [NOT] IN ( [, …] | <select_list>) | IS [NOT] NULL | {>= | <=} | [NOT] {= | < | >} | {ALL | SOME | ANY} (<select_list>) | EXISTS (<select_expr>) | SINGULAR (<select_expr>) | [NOT] CONTAINING | [NOT] STARTING [WITH] | (<search_condition>) | NOT <search_condition> | <search_condition> OR <search_condition> | <search_condition> AND <search_condition> = { col [<array_dim>] | :variable | | | | udf ([ [, …]]) | NULL | USER | RDB$DB_KEY |? } [COLLATE collation]

= num | 'string' | charsetname 'string' = COUNT (* | [ALL] | DISTINCT ) | SUM ([ALL] | DISTINCT ) | AVG ([ALL] | DISTINCT ) | MAX ([ALL] | DISTINCT ) | MIN ([ALL] | DISTINCT ) | CAST ( AS ) | UPPER () | GEN_ID (generator, )

Ex : CREATE TABLE PRODUTOS ( ID INTEGER NOT NULL, NOME VARCHAR(50) NOT NULL, DATA DATE DEFAULT CURRENTE DATE NOT NULL, PRECO DOUBLE PRECISION ( CHECK PRECO > 0), ESTOQUE INTEGER ( CHECK ESTOQUE > 0), VALOR COMPUTED BY ( PRECO * ESTOQUE ), CONSTRAINT PK_PRODUTOS PRIMARY KEY(ID));

CREATE TRIGGER

Cria uma Trigger “Gatilho” para a tabela especificada. Trigger é um gatilho disparado após alguma ação ocorrida na tabela, isto é, podem existir Trigger de Insert, Update e Delete. As Trigger pode ser definidas como “Before-Antes” e “After-Depois”. Também pode ser definido um número onde indica qual a seqüência de tirareis a ser seguida. A Trigger só é disparada pela ação na tabela, não podendo ser disparada pela aplicação. Dentro da Trigger há duas formas de se referenciar as colunas das tabelas : OLD.Coluna e NEW.Coluna. Onde OLD. referencia o valor anterior da coluna e NEW. referencia o novo valor da coluna.

Sintaxe :

CREATE TRIGGER name FOR table [ACTIVE | INACTIVE] {BEFORE | AFTER} {DELETE | INSERT | UPDATE} [POSITION number] AS <trigger_body> terminator <trigger_body> = [<variable_declaration_list>] <variable_declaration_list> = DECLARE VARIABLE variable ; [DECLARE VARIABLE variable ; …] = BEGIN <compound_statement> [<compound_statement> …] END = SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION | {DECIMAL | NUMERIC} [(precision [, scale])]