A138-Comandos básicos sql para utilização do n2 base de dados
Sumário
Sistema: Gerenciador de Aplicativos Prosoft (GAP)
...
SQL (Strucutured Query Language) ou Linguagem de Consulta Estruturada: É uma linguagem de pesquisa declarativa padrão para bancos de dados relacionais.
  
 SELECT - Permite ao usuário especificar uma consulta (“Query") como uma descrição do resultado desejado. Esse comando é composto de várias cláusulas e opções, possibilitando elaborar consultas das mais simples ás mais complexas.
 Sintaxe:
             select * from name_table;
             select name_column from name_table;
  
 FROM - Utilizado para especificar a tabela ou tabelas onde os registros serão selecionados.
  
 WHERE - Utilizado para especificar as condições que devem reunir os registros que serão selecionados.
 Sintaxe:
             Select * From name_table Where condição;
             Select name_column From name_table Where condição;
  
 GROUP BY - Utilizado para separar os registros selecionados em grupos específicos.
 Sintaxe:
             Select name_column1, Sum(name_column2) From name_table Group By name_column1;
  
 HAVING COUNT - Utilizado para expressar a condição que deve satisfaer cada grupo.
 Sintaxe:
             Select name_column From name_table Group By name_column Having Count(name_column) > n;
  
 ORDER BY - Utilizada para ordenar os registros selecionados com uma ordem específica.
 Sintaxe:
             Select name_column1, name_column2 From name_table Order By name_column1;
  
 Obs.: Pode ser ordenado de forma ascendente ou descendente.
             ascendente = asc;
             descendente = desc;    
  
 DISTINCT - Utilizada para selecionar dados sem repetição.
 Sintaxe:
             Select Distinct(name_column) From name_table; 
...
AND - E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos.
Sintaxe:
Select name_column1 From name_table Where name_column1 = x and name_column2 = y;
OR - Ou lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto.
Sintaxe:
Select name_column1 From name_table Where name_column1 = x or name_column2 = y;
NOT - Negação lógica. Devolve valor contrário da expressão.
 
 3- Operadores Relacionais
Operador  | Descrição  | 
<  | Menor  | 
>  | Maior  | 
<=  | Menor ou Igual  | 
>=  | Maior ou Igual  | 
=  | Igual  | 
!= ou <>  | Diferente  | 
IN (LISTA) - Utilizado para verificar se o valor procurado está dentro de uma lista. Ex.: valor IN (1, 2, 3, 4).
Sintaxe:
 Select name_column From name_table Where name_column IN (x, y, ..., z);
  
 BETWEEN - Utilizado para especificar um intervalo de valores.
 Select * From name_table Where id Between 10 and 16;
  
 LIKE - Utilizado na comparação de um modelo e para especificar registros de um banco de dados.
 Ex.:
             Select * From name_table Where name_column Like ‘%F’;
             Select * From Cidades Where name_cid Like ‘São%;
  
 4- Funções de Agregação
  
 Count() – Contar
 Utilizada para devolver o número de registros da seleção.
             Select Count(*) From name_table;
             Select Count(id) From name_table;
  
 Max() – Máximo
 Utilizado para devolver o maior valor de um campo especificado.
             Select Max(id) From name_table;
  
 Min() – Mínimo
 Utilizado para devolver o menor valor de um campo especificado.
             Select Min(id) From name_table;
  
 Sum() – Soma
 Utilizado para devolver a soma de todos os valores de um campo determinado.
             Select Sum(vendas) From name_table;
  
 Avg() -  Média
 Utilizado para calcular a média dos valores de um campo determinado.
             Select AVG(vendas) From name_table;
  
 Alias (apelidar tabela e colunas)
 Utilizado para apelidar colunas ou tabelas.
  
 Colunas: Ajudam a organizar o resultado.
 Select Sum(vendas) as “Total de Vendas” From name_table;
  
 Tabelas: Utilizado quando há consultas que dependem do relacionamento de duas ou mais tabelas, também nos ajuda a escrita do script pois ao apelidar a tabela não precisamos mais nos referir a ela com o seu nome completo, podemos utilizar apenas seu apelido.
 Select a.nome, b.cpf From funcionario as a, documento as b;
 Select a.nome, b.cpf From funcionario as a Inner Join documento as b ON b.documento = a.doc;
  
 Concat(concatenar colunas para consulta)
 Retorna uma cadeia de caracteres que é o resultado da concatenação de dois ou mais valores.
 Exemplo:
 select concat(column1, column2) From name_table;
  
 Substring(coluna, início, tamanho)
 Retorna parte de uma expressão de caractere de texto.
 Substr(str, pos)
 Substr(str, pos, len)
 Exemplo:
 select substr(name_column, 0, 8) as texto From name_table;
  
 Convert(coluna, tipo_sql)
 Converte uma expressão de um tipo de dados em outro.
 Exemplo:
 select convert(name_colum, SQL_INTEGER) as c From name_table;
  
 SQL Length (tamanho)
 Retorna o comprimento de uma cadeia.
 Select length(name_colum) as tam From name_table;
  
SQL Create Index
 O uso de índices pode trazer grandes melhorias para o desempenho do banco de dados.
 Sem um índice, o sistema da base de dados lê toda a tabela (este processo é denominado 'pesquisa da tabela') para localizar as informações pretendidas. Através de um índice adequado, o sistema da base de dados pode percorrer primeiro o índice para descobrir onde obter os dados e, em seguida, aceder diretamente aos locais para obter os dados necessários. Assim é muito mais rápido.
 Como tal, muitas vezes é preferível criar índices nas tabelas. Um índice pode abranger uma ou mais colunas. A sintaxe geral para criar um índice é:
 CREATE INDEX “nome_indice” ON table_name (name_column);
  
 SQL Alter Table
 Após a criação de uma tabela muitas vezes ocorre a necessidade de alterar a estrutura da tabela. Exemplo:
 Adicionar uma coluna.
 Remover uma coluna.
 Alterar o tipo de dados de uma coluna.
 Aterar o nome de uma coluna.
 Alteração ou criação de uma Chave Primária ou Estrangeira entre outros.
 A sintaxe SQL para ALTER TABLE:
 Alter table name_table [alter specification]
 [alter specification] depende do tipo de alteração que pretendemos efetuar. Para os fins acima citados, as instruções [alter specification] são:
 Adicionar uma coluna: ADD "coluna 1" "tipo de dados para a coluna 1"
 Remover uma coluna: DROP "coluna 1"
 Alterar o nome de uma coluna: CHANGE "antigo nome da coluna" "novo nome da coluna" "tipo de dados para novo nome da coluna"
 Alterar o tipo de dados de uma coluna: MODIFY "coluna 1" "novo tipo de dados"
  
 SQL Drop Table
 Utilizado para remover uma tabela da base de dados.
 Sintaxe:
 DROP TABLE name_table;
  
 SQL Insert Into
 Utilizado para inserir dados em uma tabela.
 Sintaxe:
 insert into table_name (name_column1, name_column2) values (valor 1, valor 2);
 insert into table_name (select * from table_name);
  
 SQL Update
 Uitlizado para atualizar dados já existentes na tabela.
 Sintaxe:
 update name_table Set name_column = valor Where [condição];
 update name_table set column1 = valor1, column2 = valor2;
  
 SQL Delete from
 Utilizado para deletar registros da tabela, podemos deletar apenas registros específicos ou toda a tabela.
 Sintaxe:
 Delete from name_table; (deleta todos os registros)
 Delete from name_table where column1 = valor;
 5- Criando View
Criar view na tabela CFOP:
 CREATE VIEW lfsvw_cfopccg as  select c.id, c.fk_categ, c.fk_cd as fk_grupo, c.codigo, c1.descr as ds_categ, c2.descr as ds_grupo, c.descr  from ( KPROEMP00\CFOP as c  left outer join KPROEMP00\CFOP as c1 on c.fk_categ = c1.codigo  ) left outer join KPROEMP00\CFOP as c2 on c.fk_cd = c2.codigo
Create table para arquivos BTR 
 O comando set truenullcreate = off# deve ser utilizado sempre que for realizar a criação de uma tabela em arquivos BTR.
 Esse comando evita que as informações da tabela sejam “embaralhadas”.
 set truenullcreate = off# 
 CREATE TABLE "prg_emp_plano"(
  "epl_empresa" CHAR(4),
  "epl_inicio_exerc" CHAR(4),
  "epl_codigo_plano" CHAR(4),
  "epl_reserva" CHAR(38));
 CREATE INDEX "IDX_emp_plano1" ON "prg_emp_plano"("epl_empresa", "epl_inicio_exerc");
 CREATE INDEX "IDX_emp_plano2" ON "prg_emp_plano"("epl_empresa", "epl_codigo_plano");