Principais Comandos Sql

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Principais Comandos Sql as PDF for free.

More details

  • Words: 1,375
  • Pages: 6
Principais comandos SQL ================================================== GERENCIANDO TABELAS: DDL - DATA DEFINITION LANGUAGE ** CRIANDO UMA TABELA CREATE TABLE EMPREGADOS (ID VARCHAR(4) NOT NULL, NOME VARCHAR(30) NOT NULL, PAGAMENTO DECIMAL(4,2) NOT NULL); ** DELETANDO UMA TABELA DROP TABLE EMPREGADOS; ** ALTERANDO UMA TABELA *** ADICIONANDO UMA NOVA COLUNA ALTER TABLE EMPREGADOS ADD COLUMN (TELEFONE VARCHAR(10) NOT NULL); *** MODIFICANDO UMA COLUNA ALTER TABLE EMPREGADOS MODIFY COLUMN (TELEFONE VARCHAR(12)); ** APAGANDO OS DADOS DE UMA TABELA, TORNANDO A TABELA NO ESTADO DE ORIGEM TRUNCATE TABLE EMPREGADOS; ================================================== 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 SELECT column1, column2, ... FROM table1, table2, ... [ WHERE column1 = 'value1' AND column2 = 'value2' OR (column1 = 'value3' AND column2 = 'value4')] [GROUP BY column1, column2, ...] [HAVING function = 'value'] [ORDER BY column1, column2, ...]; SELECT COUNT(*) FROM EMPREGADOS; SELECT CIDADE, AVG(PAGAMENTO) FROM EMPREGADOS GROUP BY CIDADE

HAVING AVG(PAGAMENTO) > 100; SELECT E.NOME, PE.PAGAMENTO FROM EMPREGADOS E, PAGAMENTO_EMPREGADOS PE WHERE E.EID = PE.EID; SELECT ID, NOME FROM EMPREGADOS WHERE PAGAMENTO > (SELECT AVG(PAGAMENTO) FROM EMPREGADOS); ================================================== CONTROLANDO ACESSO AOS DADOS: DCL - DATA CONTROL LANGUAGE GRANT SELECT, INSERT, UPDATE, DELETE ON EMPREGADOS TD USER12; REVOKE DELETE ON EMPREGADOS FROM USER12; ================================================== GERENCIANDO �NDICES: DDL - DATA DEFINITION LANGUAGE CREATE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME); CREATE UNIQUE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME); CREATE INDEX EMPREGADOS_IDX ON EMPREGADOS(NOME, PAGAMENTO); DROP INDEX EMPREGADOS IDX; ================================================== GERENCIANDO VIS�ES (VIEWS): DDL - DATA DEFINITION LANGUAGE CREATE VIEW MAIOR_PAGAMENTO_EMPREGADOS AS SELECT FROM EMPREGADOS WHERE PAGAMENTO > 150; CREATE VIEW NOMES AS SELECT NOME FROM EMPREGADOS; DROP VIEW NOMES; ================================================== FUN��ES DE AGRAGA��O COUNT SUM AVG MAX MIN -

- Retorna Retorna a Retorna o Retorna o Retorna o

o n�mero de linhas soma de uma coluna espec�fica valor m�dio de uma coluna espec�fica valor m�ximo de uma coluna espec�fica valor m�nimo de uma coluna espec�fica

SELECT AVG(PAGAMENTO) FROM EMPREGADOS; SELECT COUNT(*) FROM EMPREGADOS; ================================================== OPERADORES L�GICOS IS NULL BETWEEN IN LIKE

EXISTS UNIQUE ALL and ANY CONTAINING SELECT * FROM EMPREGADOS WHERE PAGAMENTO BETWEEN 100 AND 150; SELECT NOME, PAGAMENTO FROM EMPREGADOS WHERE EID IN ('1111', '2222', '3333'); ================================================== NEGANDO CONDI��ES COM O OPERADOR NOT NOT NOT NOT NOT NOT NOT

EQUAL BETWEEN IN LIKE EXISTS UNIQUE

SELECT * FROM EMPREGADOS WHERE PAGAMENTO NOT BETWEEN 100 AND 150; SELECT NOME, PAGAMENTO FROM EMPREGADOS WHERE EID NOT IN ('1111', '2222', '3333'); SELECT NOME FROM EMPREGADOS WHERE NOME NOT LIKE 'S%'; ******************************************************************* 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 /*Como resolver problema de arredondamento em colunas tipo Float? Se voce ainda n�o teve problemas com campos floats ... ex: voce cadastra 5,0 e vai ver na base ta 4,99999 ... ajuste seus campos para numeric(9.2) Esse script transforma todos os campos floats do seu GDB para numeric(9,2) */ UPDATE RDB$FIELDS SET RDB$FIELD_TYPE = 8,

RDB$FIELD_SCALE = -2 WHERE RDB$FIELD_NAME IN ( SELECT RDB$RELATION_FIELDS.RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS, RDB$FIELDS WHERE (RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME) AND (RDB$FIELDS.RDB$FIELD_TYPE = 10 ) AND (RDB$FIELDS.RDB$SYSTEM_FLAG <> 1 ) ) /*Como alterar a posi��o de uma coluna sem recriar a tabela? Comando:*/ ALTER TABLE (TABELA) ALTER COLUMN (CAMPO) POSITION (POSICAO) /*Como obter a Hora do Servidor FB? Use nas aplica��es uma unica fonte de hora/data ... a do servidor � a melhor ideia ... Comando para buscar a hora/data do servidor...*/ SELECT CURRENT_TIMESTAMP AS DATETIME FROM RDB$DATABASE; /*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 ADD CONSTRAINT CHECK ( IN ( SELECT FROM WHERE = ) ) /*Como fa�o para mudar o valor de um generator?*/ SET GENERATOR TO /*Como excluo um generator do meu Banco? No Interbase 6 � :*/ DELETE FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME = ; /*No FireBird 1.5 � :*/ DROP GENERATOR ; /*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, o tipo e o tamanho, "nulabilidade" e as checks de um determinado dom�nio?*/ select f.rdb$field_name,t.rdb$type_name,f.rdb$field_length,f.rdb$null_flag, f.rdb$default_source,f.rdb$validation_source from rdb$fields f join rdb$types t on (f.rdb$field_type = t.rdb$type) where (f.rdb$field_name='NOME_DO_DOMINIO') and (t.rdb$field_name='RDB$FIELD_TYPE') /*Qual o comando que retorna os �ndices definidos em um Banco de Dados?*/ select i.rdb$index_name,i.rdb$unique_flag,i.rdb$relation_name,s.rdb$field_name from rdb$indices i join rdb$index_segments s on (i.rdb$index_name = s.rdb$index_name) where i.rdb$index_name not like 'RDB$%'; /*Qual o comando que recupera as informa��es sobre os par�metros de uma stored procedure (nome, tipo, tamanho, entrada/sa�da) ?*/ select p.rdb$parameter_name,p.rdb$parameter_type,t.rdb$type_name,f.rdb$field_length from rdb$procedure_parameters p join rdb$fields f on (p.rdb$field_source = f.rdb$field_name) join rdb$types t on (f.rdb$field_type = t.rdb$type) where (p.rdb$procedure_name = 'NOME_DA_PROC') and (t.rdb$field_name = 'RDB$FIELD_TYPE') /*Qual o comando que recupera as informa��es sobre os par�metros de uma stored procedure (nome, tipo, tamanho, entrada/sa�da) ?*/ select p.rdb$parameter_name,p.rdb$parameter_type,t.rdb$type_name,f.rdb$field_length from rdb$procedure_parameters p join rdb$fields f on (p.rdb$field_source = f.rdb$field_name) join rdb$types t on (f.rdb$field_type = t.rdb$type) where (p.rdb$procedure_name = 'NOME_DA_PROC') and (t.rdb$field_name = 'RDB$FIELD_TYPE') /*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'); /*Como retornar o nome da tabela, a chave primaria, indice e campos do indice de determinada tabela no FB? 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 /* Como alterar a coluna de caracteres tamanho? Voc� deve usar o ALTER TABLE. Vamos supor que voc� tem uma coluna c1 na tabela t1, que � do tipo CHAR (80) e que deseja que o aumento para 90 caracteres:*/ ALTER TABLE t1 ALTER c1 TYPE char(90); /*Renomear a coluna tempor�ria:*/ ALTER TABLE t1 ALTER c_temp TO c1; /*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 converter a string BLOB? Convers�o direta n�o � poss�vel sem o uso de alguns UDF, mas voc� pode extrair texto utilizando SUBSTRING fun��o:*/ /*Observe que o comprimento m�ximo para VARCHAR � 32767 bytes (que poder� ser menor em caracteres multi-byte como conjuntos de caracteres UTF8).*/ DECLARE VARIABLE c1 VARCHAR(32000); SELECT SUBSTRING(blob1 FROM 1 FOR 32000) FROM t1 INTO c1; /* 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'

Related Documents

Comandos Sql
June 2020 8
Comandos Sql Kintas
April 2020 4
Principais Anions E Cations
November 2019 8
Sql
October 2019 20
Sql
June 2020 12