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


Interbase 6.0 - Apostilas - Informática Part2, Notas de estudo de Informática

Apostilas de Informática sobre Interbase 6.0, Acesso Nativo com o InterBase Express “IBX”, O que é o InterBase, IBConsole, SQL – Structured Query Language, Comandos e Funções, O que é Dialect, Segurança com os usuários.

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
DECLARE EXTERNAL FUNCTION
Declara uma função externa ao Banco de Dados InterBase. A função, mais conhecida como UDF. O
principio de criação de UDF, no Windows, é de construir a função em DLL “Delphi, C, C++, VB”, e após
isto, declarar a função no InterBase.
Sintaxe :
DECLARE EXTERNAL FUNCTION name [datatype | CSTRING (int)
[, datatype | CSTRING (int) …]]
RETURNS {datatype [BY VALUE] | CSTRING (int)} [FREE_IT]
ENTRY_POINT 'entryname'
MODULE_NAME 'modulename';
Ex : DECLARE EXTERNAL FUNCTION ABREVIAR_NOME CHAR(60) RETURNS CHAR(60) BY
VALUE ENTRY_POINT “MINHAUDF” MODULE_NAME “MINHADLL.DLL”
DELETE
Apaga um ou mais registros de uma tabela InterBase. Se não for utilizado a cláusula WHERE, será
apagado todos os registros da tabela.
Sintaxe :
DELETE [TRANSACTION transaciona] FROM table
{[WHERE <search_condition>] | WHERE CURRENT OF cursor};
Ex : DELETE FROM VENDAS WHERE DATA_VENDA <= ‘1-JAN-1999’;
DROP DATABASE
Apaga o Banco de Dados “.GDB” InterBase. O Banco de Dados, só pode ser deletado pelo seu
criador “Owner” e ou pelo SYSDBA do Banco de Dados.
Sintaxe :
DROP DATABASE;
Ex :
DROP DATABASE;
DROP DOMAIN
Deleta um domínio previamente criado no InterBase. Se o Domínio estiver em uso por alguma
tabela, para solucionar este problema, o campo tem que ser excluído e após isto apagar o Domínio.
Sintaxe :
DROP DOMAIN “name”
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Interbase 6.0 - Apostilas - Informática Part2 e outras Notas de estudo em PDF para Informática, somente na Docsity!

DECLARE EXTERNAL FUNCTION

Declara uma função externa ao Banco de Dados InterBase. A função, mais conhecida como UDF. O principio de criação de UDF, no Windows, é de construir a função em DLL “Delphi, C, C++, VB”, e após isto, declarar a função no InterBase.

Sintaxe :

DECLARE EXTERNAL FUNCTION name [datatype | CSTRING (int) [, datatype | CSTRING (int) …]] RETURNS {datatype [BY VALUE] | CSTRING (int)} [FREE_IT] ENTRY_POINT 'entryname' MODULE_NAME 'modulename';

Ex : DECLARE EXTERNAL FUNCTION ABREVIAR_NOME CHAR(60) RETURNS CHAR(60) BY VALUE ENTRY_POINT “MINHAUDF” MODULE_NAME “MINHADLL.DLL”

DELETE

Apaga um ou mais registros de uma tabela InterBase. Se não for utilizado a cláusula WHERE, será apagado todos os registros da tabela.

Sintaxe :

DELETE [TRANSACTION transaciona] FROM table {[WHERE <search_condition>] | WHERE CURRENT OF cursor};

Ex : DELETE FROM VENDAS WHERE DATA_VENDA <= ‘1-JAN-1999’;

DROP DATABASE

Apaga o Banco de Dados “.GDB” InterBase. O Banco de Dados, só pode ser deletado pelo seu criador “Owner” e ou pelo SYSDBA do Banco de Dados.

Sintaxe :

DROP DATABASE;

Ex : DROP DATABASE;

DROP DOMAIN

Deleta um domínio previamente criado no InterBase. Se o Domínio estiver em uso por alguma tabela, para solucionar este problema, o campo tem que ser excluído e após isto apagar o Domínio.

Sintaxe :

DROP DOMAIN “name”

Ex : DROP DOMAIN “STRINGNOME”;

DROP EXCEPTION

Deleta uma exceção previamente criada no seu Banco de Dados InterBase. Se a exceção estiver sendo usada por alguma Stored Procedure e ou Trigger, a exclusão falhará. Desta forma, o usuário precisa retirar a EXCEPTION da SP e ou Trigger e após isto executar novamente a EXCEPTION.

Sintaxe :

DROP EXCEPTION “name”

Ex : DROP EXCEPTION “ACABOU_ESTOQUE”;

DROP EXTERNAL FUNCTION

Deleta do Banco de Dados InterBase a declaração do uso da UDF. Este comando não exclui da DLL, mas, a torna inacessível ao Banco de Dados InterBase. Se alguma SP ou Trigger estiver usando a UDF, ocorrerá um erro na execução dos comandos.

Sintaxe :

DROP EXTERNAL FUNCTION “name”

Ex : DROP EXTERNAL FUNCTION “ABREVIAR_NOME”;

DROP INDEX

Deleta o índice definido pelo usuário do Banco de Dados InterBase.

Sintaxe :

DROP INDEX “name”

Ex : DROP INDEX IND_NOME;

DROP PROCEDURE

Deleta uma SP previamente criada pelo usuário. As SP que estão sendo referenciadas em Trigger, VIEW, não poderão ser excluídas.

Sintaxe :

DROP PROCEDURE “name”

Ex : DROP PROCEDURE RESUMO_VENDAS;

Sintaxe :

GEN_ID(“generator”,ID);

Ex : SELECT GEN_ID(“GEN_FORNECEDOR,0) FROM RDB$DATABASE;

INSERT

Comando responsável para adicionar um mais registros na tabela de Banco de Dados InterBase. Os campos que forem omitidos recebem valores NULOS “NULL”.

Sintaxe :

INSERT [TRANSACTION transaction] INTO [(col [, col …])] {VALUES ( [, …]) | <select_expr>};

= tablename | viewname = {:variable | | | | udf ([ [, …]]) | NULL | USER | RDB$DB_KEY |? } [COLLATE collation] = num | 'string' | charsetname 'string' = CAST ( AS ) | UPPER () | GEN_ID (generator, )

Ex : INSERT INTO CLIENTES (ID,NOME) VALUES (1,’Nome do Cliente’); INSERT INTO VENDAS_OLD SELECT * FROM VENDAS WHERE DATA_VENDA = CURRENTE DATE;

MAX( )

Função que agrega e retorna o valor máximo de uma coluna.

Sintaxe :

MAX([ALL | DISTINCT )

Ex : SELECT MAX(SALARIO) FROM FUNCIONARIOS;

MIN( )

Função que agrega e retorna o valor mínimo de uma coluna.

Sintaxe :

MIN([ALL | DISTINCT )

Ex : SELECT MIN(SALARIO) FROM FUNCIONARIOS;

ROLLBACK

Desfaz as mudanças ocorridas até o exato momento no Banco de Dados InterBase, sem que o comando COMMIT tenha sido executado. Este comando e o Commit fecham a transação aberta pela aplicação e ou ferramenta de gerenciamento as tabelas.

Sintaxe :

ROLLBACK

Ex : ROLLBACK;

SELECT

Este é o comando responsável pela obtenção dos dados da tabela, view´s e ou Stored Procedures.

Sintaxe :

SELECT [TRANSACTION transaction] [DISTINCT | ALL] {* | [, …]} [INTO :var [, :var …]] FROM [, …] [WHERE <search_condition>] [GROUP BY col [COLLATE collation] [, col [COLLATE collation] …] [HAVING <search_condition>] [UNION <select_expr> [ALL]] [PLAN <plan_expr>] [ORDER BY <order_list>] [FOR UPDATE [OF col [, col …]]]; = { col [<array_dim>] | :variable | | | | udf ([ [, …]]) | NULL | USER | RDB$DB_KEY |? } [COLLATE collation] [AS alias] <array_dim> = [[x:]y [, [x:]y …]] = 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, ) = <joined_table> | table | view | procedure [( [, …])] [alias] <joined_table> = <join_type> JOIN ON <search_condition> | (<joined_table>)

Literal e String - No InterBase, você pode preencher colunas com valores Literais e ou String´s para colunas virtuais e ou colunas fixas da tabela de dados. Mostraremos para este exemplo, o que seria o preenchimento de uma literal em uma coluna virtual ou coluna fixa por literal e ou String.

Ex. Literal : SELECT 1 FROM TabFuncionarios

SELECT 1 as ID TabFuncionarios

Ex. String : SELECT ‘InterBase Brasil’ FROM TabFuncionarios

SELECT ‘InterBase Brasil’ as Nome FROM TabFuncionarios

Expressão || – A expressão conhecida para concatenação no InterBase é ||. Desta forma, você pode usa-la para concatenar colunas virtuais e ou colunas fixas. O operador "+" para o InterBase, é usado para cálculos matemáticos, desta forma, se precisar concatenar colunas, use o ||.

DISTINCT – Prevê a exclusão de linhas semelhantes do Result Set.

INTO:var[,:var.]] – Cláusula que transfere o valor de uma coluna para a variável indicada ao SELECT. Se o Result Set retornar mais de uma linha de dados, ocorrerá um erro, indicando que está clausula apenas poderá retornar uma linha de dados.

UDF([ [, ...]]) – O InterBase permite você criar funções definidas pelo usuário. E desta forma, você pode chamar está função em instruções SELECT

USER – Variável de ambiente do InterBase, indicando o ID do usuário de conexão com o InterBase.

Operadores que fazem parte da cláusula WHERE

BETWEEN – Este operador testa se o valor da coluna encontra-se no intervalo declarado.

IN – Verifica se valor está contido no Sub-Conjunto de dados na coluna declarada.

ALL – Verifica se uma valor é igual a todos os valores retornados em um SubQuery(*).

ANY e SOME – Verifica se um valor está contido em qualquer valor retornado num SubQuery(*).

EXISTS – Verifica se um valor existe e ou está presente em pelo menos uma linha no retorno do SubQuery(*). Está clausula pode conter também NOT EXISTS.

SINGULAR – Opera com semelhança ao EXISTS, com a diferença de que o valor tem que existir exatamente em uma ocorrência do SubQuery(*).

CONTAINING – Testa se o valor passado a coluna, contém em uma parte da string. Está clausula é CASE-SENSITIVE.

STARTING WITH- Testa se a coluna inicia exatamente como indicado pelo valor passado.

Clausula UNION

Executa a união de uma mais tabelas com o mesmo nome de colunas.

SUM( )

Função de Agregação que retorna a soma dos valores da coluna

Sintaxe :

SUM( [ALL | DISTINCT )

Ex : SELECT SUM(VALOR) FROM VENDAS;

UPDATE

Comando responsável pela atualização da tabela no Banco de Dados InterBase. Update trabalha de forma semelhante ao DELETE “é claro, com sua enorme diferença”, se não passarmos a cláusula WHERE, toda a coluna da tabela será atualizada.

Sintaxe :

UPDATE [TRANSACTION transaction] {table | view} SET col = [, col = …] [WHERE <search_condition> | WHERE CURRENT OF cursor];

Ex : UPDATE CLIENTE SET DATA_INCLUSAO = CURRENT DATE;

UPPER( )

Função que retorna uma string com todos os caracteres em maiúsculo.

Sintaxe :

UPPER();

Ex : CREATE DOMAIM SEXO AS CHAR(01) ( CHECK VALUE = UPPER(VALUE));

SELECT UPPER(NOME) FROM CLIENTES;

encontram aspas duplas, tipos DATE, ou campos NUMERIC/DECIMAL com precisão maior que 9. Esse dialeto é utilizado para alertar o desenvolvedor para potenciais problemas durante a migração e não deve ser utilizado para uso normal no dia a dia. Para detectar áreas problemáticas na definição de um banco de dados que você está migrando, extraia a METADATA e rode-a através de um cliente utilizando o dialeto 2. Por exemplo :

isql -i v5metadata.sql

Lembre-se de NÃO utilizar o dialeto 2 para uso normal dos bancos de dados.

DIALETO 3

As seguintes características são específicas do DIALETO 3, e são incompatíveis com o dialeto 1 e todos os BDs e clientes antigos: Constantes alfanuméricas devem ser delimitadas por aspas simples (apóstrofe). Aspas duplas (") são usadas somente em identificadores delimitados. O tipo de dado DATE armazena somente a DATA. Dois novos tipos de dados estão disponíveis : TIME que armazena somente a informação de HORA, e TIMESTAMP que armazena ambos DATA e HORA. O tipo TIMESTAMP substitui a funcionalidade do tipo DATE das versões anteriores do IB. O Dialeto 3 também inclui os operadores funcionais CURRENT_DATE, CURRENT_TIME, e CURRENT_TIMESTAMP. Tipos DECIMAL e NUMERIC com precisão maior que 9 são gravados utilizando inteiros de 64 bits se forem criados no dialeto 3. Note que todas os campos desse tipo continuam sendo armazenados como float se o BD foi trazido de alguma versão anterior do IB.

Identificadores Delimitados SQL

O InterBase agora suporta identificadores delimitados. Esses identificadores são objetos do banco de dados cujos nomes são delimitados por aspas duplas, e são permitidos somente em bancos da versão 6 usando dialeto 3. No InterBase 6 Dialeto 3, uma constante alfanumérica é delimitada por aspas simples e um identificador por aspas duplas. Como o nome do identificador agora pode ser delimitado pelas aspas, o tamanho do nome de um identificador é maior possibilitando muito mais variações do que nas versões anteriores. Os nomes de um Objeto no Interbase agora podem: Ser uma palavra-chave Conter espaços (exceto espaços antes e depois do nome) Usar caracteres não ASCII Ser sensíveis à CAPS

Segurança com Usuários

A segurança de usuários do InterBase, fica guardado dentro do próprio Banco de Dados. Desta forma, você usuário SYSDBA e ou outro usuário que tenha os direitos de Administrador, restringe o acesso e manutenção a tabelas do InterBase.

Existe dois comandos SQL responsável pelo direito de acesso a tabelas do Banco de Dados :

GRANT

Este é o comando responsável para dizer o que o usuário e ou grupo de usuários “X” podem ou não fazer na(s) tabela(s) em que o GRANT definiu para estes.

Sintaxe :

GRANT < privilegies> ON [TABLE] { tablename | viewname} TO { | | GROUP UNIX_group} |<role_granted> TO {PUBLIC | < role_grantee_list>}}; < privileges> = {ALL [PRIVILEGES] | < privilege_list>} < privilege_list>={ SELECT | DELETE | INSERT | UPDATE [( col [, col …])] | REFERENCES [(col [, col …])] [, < privilege_list>…]}}

={ PROCEDURE procname | TRIGGER trigname |VIEWviewname | PUBLIC [, …]} ={ [USER] username | rolename | UNIX_user} [, …] [WITH GRANT OPTION] < role_granted> = rolename [, rolename …] < role_grantee_list> = [USER] username [, [USER] username …] [WITH ADMIN OPTION]

Ex :

GRANT ALL ON TAB_FORNECEDORES TO EDUARDO; GRANT SELECT ON TAB_FORNECEDORES TO AIRTON; GRANT SELECT,INSERT,UPDATE ON TAB_FORNECEDORES TO ANDREA;

Tipos de Dados do InterBase

O InterBase 6 Dialect 3, suporta a maioria dos tipos de Dados do SQL. O InterBase, apenas não tem como tipo de dado, o tipo Boolean. Mas, isto não é uma falha do InterBase, 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. Neste capitulo sobre tipo de dados, iremos utilizar um exemplo de como criar um tipo Boolean para o InterBase.

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 InterBase, é 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 :

Sub-tipo 0 - Armazena dados em formato binário – Fotos, etc. Sub-tipo 1 - Armazena dados em formato texto – Memos. Sub-tipos definidos pelo usuário.

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. O uso de -1 é funcionalmente equivalente ao uso de -2, -3, Tc...

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 Interbase não faz nenhuma análise dos dados que estão sendo gravados, portanto essa é uma responsabilidade do aplicativo. Nenhum erro será retornado pelo Interbase 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 :

Estas declarações é na criação 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 :

Na criação da tabela acima, você verificou uma nova informação “SEGMENT”. Abaixo a explicação :

O tamanho de segmento (Segment Size), é um pequeno pedaço de informação, tipo um conselho, que é mantido com a definição 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, 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 CNPJ, 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