Академический Документы
Профессиональный Документы
Культура Документы
==================================================
GERENCIANDO TABELAS: DDL - DATA DEFINITION LANGUAGE
==================================================
MANIPULANDO DADOS: DML - DATA MAIPULATION LANGUAGE
** Inserindo dados
INSERT INTO EMPREGADOS VALUES ('1111', 'Jo�o da Silva', 100.50);
** Alterando dados
UPDATE EMPREGADOS SET PAGAMENTO = 120 WHERE ID = '1111';
** Deletando dados
DELETE FROM EMPREGADOS WHERE ID = '1111';
COMMIT;
ROLLBACK;
SAVEPOINT S1;
ROLLBACK TO S1;
==================================================
SELECIONANDO DADOS: DQL - DATA QUERY LANGUAGE
==================================================
CONTROLANDO ACESSO AOS DADOS: DCL - DATA CONTROL LANGUAGE
==================================================
GERENCIANDO �NDICES: DDL - DATA DEFINITION LANGUAGE
==================================================
GERENCIANDO VIS�ES (VIEWS): DDL - DATA DEFINITION LANGUAGE
==================================================
FUN��ES DE AGRAGA��O
==================================================
OPERADORES L�GICOS
IS NULL
BETWEEN
IN
LIKE
EXISTS
UNIQUE
ALL and ANY
CONTAINING
==================================================
NEGANDO CONDI��ES COM O OPERADOR NOT
NOT EQUAL
NOT BETWEEN
NOT IN
NOT LIKE
NOT EXISTS
NOT UNIQUE
*******************************************************************
Exemplos da Net
/*Como retorna informa��es sobre as colunas de tabelas?
Comando:*/
SELECT RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME AS TABELA,
RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME AS CHAVE,
RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME AS INDICE_DA_CHAVE,
RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS CAMPO,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION AS POSICAO
FROM RDB$RELATION_CONSTRAINTS,
RDB$INDICES,
RDB$INDEX_SEGMENTS
WHERE RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
AND RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
AND RDB$INDEX_SEGMENTS.RDB$INDEX_NAME = RDB$INDICES.RDB$INDEX_NAME
ORDER BY RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME,
RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION
/*Se voc� um dia prescisar buscar todas as tabelas do seu GDB e criar um script de
"delete from" ...*/
SELECT DISTINCT 'DELETE FROM '||RDB$RELATION_FIELDS.RDB$RELATION_NAME||';' AS
TABELAS
FROM RDB$RELATION_FIELDS, RDB$FIELDS
WHERE ( RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME )
AND ( RDB$FIELDS.RDB$SYSTEM_FLAG <> 1 )
/*Adicionar uma constraint ckeck no campo da tabela que verifica outra tabela
antes de gravar o registro ...*/
ALTER TABLE <TABELA_A>
ADD CONSTRAINT <NOME_DA_CONSTRAINT>
CHECK ( <CAMPO_A> IN ( SELECT <CAMPO_A> FROM <TABELA_B> WHERE <CAMPO_B> =
<VALOR_B> ) )
/*Qual o comando que devolve as restri��es definidas por CHECKs em uma determinada
tabela ?*/
select r.rdb$constraint_name,r.rdb$constraint_type,t.rdb$trigger_source
from rdb$relation_constraints r
join rdb$check_constraints c on (r.rdb$constraint_name = c.rdb$constraint_name)
join rdb$triggers t on (c.rdb$trigger_name = t.rdb$trigger_name)
where (r.rdb$relation_name='NOME_DA_TABELA')
/*Qual o comando que retorna o nome, a seq��ncia, o tipo e o status das triggers
definidas para uma tabela?*/
select
t.rdb$trigger_name,t.rdb$trigger_sequence,y.rdb$type_name,t.rdb$trigger_inactive
from rdb$triggers t
join rdb$types y on (t.rdb$trigger_type = y.rdb$type)
where (t.rdb$relation_name = 'NOME_DA_TABELA') and (t.rdb$trigger_name not like
'CHECK%') and (y.rdb$field_name='RDB$TRIGGER_TYPE')
por romuloigor
/*Qual o comando que retorna o nome da exce��o, a mensagem e o tipo de objeto que
utiliza a exce��o ?*/
select e.rdb$exception_name,e.rdb$message,d.rdb$dependent_name,t.rdb$type_name
from rdb$exceptions e
join rdb$dependencies d on (e.rdb$exception_name = d.rdb$depended_on_name)
join rdb$types t on (d.rdb$dependent_type = t.rdb$type)
where (rdb$field_name='RDB$OBJECT_TYPE');
/*Voc� pode faz�-lo simplesmente por usar CAST. Primeiro crie uma string que
cont�m uma data v�lida (ver FAQ # 137)
e, em seguida, CAST que at� � data. Exemplo:*/
SELECT CAST(31 ||'.'|| 12 ||'.'|| 2007 AS DATE)
FROM RDB$DATABASE
/* Como apagar registros duplicados (tabela quando n�o tem uma chave prim�ria
coluna)?
Voc� pode usar o "segredo" RDB$DB_KEY recurso do Firebird. RDB$DB_KEY � um
'escondidas' registro que identifica
as linhas de cada comando SQL. Por exemplo, se voc� tiver uma tabela TABLE1 sem
chave prim�ria e t�m colunas COL1 e
COL2 que s�o os mesmos, voc� pode excluir os registros extra com a seguinte
declara��o:*/
DELETE FROM TABLE1 t1
WHERE EXISTS (
SELECT 1 FROM TABLE1 t2
WHERE t1.COL1 = t2.COL1 and t1.COL2 = t2.COL2
AND t1.RDB$DB_KEY < t2.RDB$DB_KEY );
/*Voc� pode controlar se o registro � considerado duplicado por incluindo as
colunas da tabela WHERE
(na maioria dos casos, voc� deseja incluir todas as colunas).*/
/*espelho*/
CREATE SHADOW 1 'c:\bd\shadow.sdw'