You are on page 1of 32

NOÇÕES DE BANCO DE DADOS

SANKHYA GESTÃO DE NEGÓCIOS

Copyright © 2012 SANKHYA Tecnologia em Sistemas Ltda. Todos os direitos reservados. Proibida a reprodução parcial ou total por quaisquer meios, sejam estes eletrônicos, mecânicos, de fotocópia, de gravação, ou outros, sem prévia autorização, por escrito da SANKHYA Gestão de Negócios.

NOÇÕES DE BANCO DE DADOS

O que é um banco de dados? ....................................................................................................................... 4 SGBDs .......................................................................................................................................................... 4 Objetos do Banco de Dados ......................................................................................................................... 4 Principais tabelas do Sistema ...................................................................................................................... 5 Tabelas mais utilizadas pelo Sistema: .............................................................................................................6 SQL: Structured Query Language ................................................................................................................. 8 O DBExplorer ............................................................................................................................................... 8 Opções do Botão direito do mouse ..................................................................................................................9 Comandos da Linguagem de Manipulação de Dados ........................................................................................ 10 SELECT ..................................................................................................................................................... 10 Estrutura Básica Ex 1: Selecionar Ex 2: Selecionar Ex 3: Selecionar do SELECT ...................................................................................................................... 10 Todas as Colunas de Uma Tabela ....................................................................................... 11 determinadas Colunas de Uma Tabela, com Condição ........................................................... 11 determinadas Colunas de Mais de Uma Tabela ..................................................................... 11

Atribuir Apelidos para Colunas e Tabelas........................................................................................................ 12 Ex 4: Atribuir Apelidos para Colunas e Tabelas ............................................................................................ 13 Ordenando o Resultado da Consulta .............................................................................................................. 14 Ex 5: Ordenando o Resultado da Consulta ................................................................................................. 14 Funções de Agregação ................................................................................................................................. 14 Ex 6: Select com estrutura completa, incluindo Funções de Agregação ........................................................... 15 UPDATE ..................................................................................................................................................... 16 Exemplo: ................................................................................................................................................ 16 INSERT ..................................................................................................................................................... 16 Ex 1: Inserindo dados, informando os Nomes dos Campos ............................................................................ 17 Ex 2: Inserindo dados, omitindo os Nomes dos Campos ............................................................................... 17 Ex 3: Inserindo Múltiplos Registros ............................................................................................................ 17 DELETE ..................................................................................................................................................... 18 Exemplo: ................................................................................................................................................ 18 Create View ............................................................................................................................................... 19 Inspetor de Query ..................................................................................................................................... 26 Campos Adicionais ..................................................................................................................................... 27 Parâmetros que influenciam este cadastro .................................................................................................. 30 Auxiliar para Pesquisas ............................................................................................................................. 30

-3-

NOÇÕES DE BANCO DE DADOS

O QUE É UM BANCO DE DADOS?

É uma coleção de dados relacionados a um tópico ou propósito particular (específico). Representa aspectos do mundo real, e é uma fonte de onde podemos extrair informações derivadas, que possui um nível de interação com eventos como o mundo real que representa. É peça fundamental de um sistema de informação, pois é onde estas são armazenadas. Como exemplos de operações envolvendo bancos de dados do dia-a-dia, podemos citar operações bancárias, passar as compras no caixa de um supermercado e até mesmo o cadastro em uma locadora de vídeo.

SGBDS

SGBDs é a abreviação de Sistema de Gerenciamento de Banco de Dados. Trata-se de programas capazes de manipular as informações do banco de dados e interagir com o usuário, além controlar os acessos ao banco de dados. Como exemplos de SGBDs, podemos citar: Oracle, Microsoft SQL Server, Interbase, MySQL. Os sistemas da Sankhya trabalham com dois SGBDs: Oracle e Microsoft SQL Server.

OBJETOS DO BANCO DE DADOS

Tabela: É uma simples estrutura de colunas e linhas. Todas as informações do banco de dados são armazenadas em tabelas, e estas podem relacionar-se. Coluna: É um atributo de uma tabela. Exemplo: Nome, Data de Nascimento, Número do CPF. Linha: É uma instância de uma tabela. Exemplo: José, 01/03/1975, 066.541.013-09. Chaves: Primária (Primary Key - PK): Identifica um registro na tabela, não deixando que a(s) coluna(s) de uma chave primária com determinado(s) valor (es) se repita (m). Estrangeira(Foreign Key - FK): É o relacionamento através de uma ligação com uma chave primária de outra tabela. Cada tabela possui uma ou mais chaves (PKs), sendo que as tabelas são ligadas entre si através das FKs.

-4-

NOÇÕES DE BANCO DE DADOS

PRINCIPAIS TABELAS DO SISTEMA

As tabelas são objetos do Banco de Dados que armazenam informações. Elas são compostas de linhas e colunas onde a interseção, destas linhas e colunas, resulta nos campos da tabela. Os nomes das tabelas do sistema normalmente são compostos de 6 letras, onde as 3 primeiras identificam o módulo ao qual a tabela pertence. Por exemplo: TSI... - Tabelas do Módulo Básico. TGF... - Engloba as tabelas dos módulos: Estoque, Financeiro, Livro Fiscal, Cotação e Produção. TCI... – Tabelas do Módulo de Controle Patrimonial TCB... - Tabelas do Módulo de Contabilidade. TCS... - Tabelas do Módulo de Serviço. TFP... - Tabelas do Módulo de Folha de Pagamento. TGM... - Tabelas do Módulo de Controle Orçamentário e Metas. As outras 3 letras identificam o nome da tabela. Por exemplo: TGFPAR (Tabela de Parceiros)

-5-

NOÇÕES DE BANCO DE DADOS

TABELAS MAIS UTILIZADAS PELO SISTEMA:

O Banco de Dados utilizado pelo sistema possui centenas de tabelas. Algumas, porém, são comumente utilizadas nos cadastros e movimentações básicas e para que o usuário tenha alguns exemplos desta estrutura, estão listadas a seguir: TGFCAB Chave Primária: NUNOTA TGFCFO - Tabela de CFO Chave Primária: CODCFO TGFDIN - Tabela de Impostos da Nota Chave Primária: NUNOTA, SEQUENCIA, CODIMP, CODINC TGFEMP - Tabela de Empresas Chave Primária: CODEMP TGFEST - Tabela de Estoque de Produtos Chaves Primárias: CODEMP, CODLOCAL, CODPROD, CONTROLE TGFFIN Chave Primária: NUFIN Tabela do Financeiro Número único do Financeiro Tabela de Cabeçalhos da Nota Número único da Nota

TGFFOR - Tabela de Código de Fórmulas de Custo/Preço Chave Primária: CODFORMPREC TGFGRU - Tabela de Grupo de Produtos e Serviços Chave Primária: CODGRUPOPROD TGFITE - Tabela de Itens da Nota Chaves Primárias: NUNOTA, SEQUENCIA TGFMBC - Tabela de Movimentação Bancária Chave Primária: NUBCO TGFNAT - Tabela de Naturezas Chave Primária: CODNAT TGFPAR - Tabela de Parceiros Chave Primária: CODPARC TGFPRO - Tabela de Produtos Chave Primária: CODPROD TGFTAB - Tabela de Tabela de Preços Chave Primária: NUTAB TGFTOP - Tabela de TOP Chaves Primárias: CODTIPOPER, DHALTER

TGFTIT - Tabela de Tipos de Títulos Chave Primária: CODTIPTIT
-6-

NOÇÕES DE BANCO DE DADOS

TGFTPV - Tabela de Tipo de Venda Chaves Primárias: CODTIPVENDA,DHALTER TSIBCO - Tabela de Bancos Chave Primária: CODBCO TSICTA - tabela de Contas Bancárias Chave Primária: CODCTABCOINT TSICUS - Tabela de Centro de Resultado Chave Primária: CODCENCUS TSIEND - Tabela de Endereços Chave Primária: CODEND TSIEMP - Tabela de Empresas Chave Primária: CODEMP TSIREG - Tabela de Regiões Chave Primária: CODREG

-7-

NOÇÕES DE BANCO DE DADOS

SQL: STRUCTURED QUERY LANGUAGE

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, início dos anos 70. Em 1986 o American National Standard Institute (ANSI), publicou um padrão SQL. A SQL (Linguagem de Consulta Estruturada) estabeleceu-se como linguagem padrão de Banco de Dados Relacional. Fazem parte do SQL os seguintes grupos: DML - Data Manipulation Language (Linguagem de Manipulação de Dados): Comandos destinados à manipulação de registros (linhas) no banco de dados. Como exemplo, podemos citar os comandos: INSERT, UPDATE, DELETE, SELECT. DDL - Data Definition Language (Linguagem de Definição de Dados): Comandos que permitem ao utilizador definir tabelas novas, alterar tabelas existentes e seus elementos associados. Exemplos de comandos: ALTER TABLE, CREATE VIEW, DROP TABLE. DCL - Data Control Language (Linguagem de Controle de Dados): Comandos para controle de aspectos como autorização de usuários, controle de acessos de usuários, entre outros. Exemplos de comandos: GRANT, REVOKE, ALTER USER. Existem outros grupos dentro do SQL, mas os principais foram citados acima. Neste manual iremos detalhar um pouco mais os comandos mais básicos, que são os da Linguagem de Manipulação de Dados

O DBEXPLORER

Menu Utilitários\DBExplorer Esta opção do Sistema é destinada ao Suporte, Programadores, DBA ou a Implantadores que possuam conhecimentos em comandos SQL. É uma ferramenta de auxílio na manutenção do "Banco de Dados" do Sistema, com ela o usuário poderá realizar "Consultas" ou "Alterar" dados do Banco de Dados. Observação: Para o G1 (Jiva) o DBExplorer a partir da versão 3.10 passa a servir apenas para "Consultas". A opção "Alterável" fica sempre desabilitada e comandos que alterem o banco de dados não serão permitidos. Todos os comandos executados no DBExplorer serão registrados na tabela TSILOG, com as seguintes informações: Sequência, Código do Usuário, Comando, Data e Hora da execução do comando e Computador onde foi executado.

-8-

NOÇÕES DE BANCO DE DADOS

OPÇÕES DO BOTÃO DIREITO DO MOUSE

Exportar para CSV...: Utilizado na exportação do Grid de resultado da consulta, gerando um arquivo com a extensão CSV. CSV é uma extensão que quer dizer "Comma-separated values" (Valores Separados por Vírgula), no qual é gravado um arquivo de texto que pode ser lidos por editores de planilhas e são normalmente utilizados para conversão de dados. Alterável: Esta opção, quando marcada, permite ao usuário que manipule os dados apresentados como resultado de uma consulta (Select), alterando valores das colunas ou até mesmo excluindo linhas da tabela. Gravar automaticamente no Banco de dados: Gravará as alterações automaticamente (autocommit). Gravar no banco de dados: Quando o "Gravar automaticamente no BD" estiver desligado, esta opção servirá para confirmar a gravação no BD. Descartar alterações: para desfazer as alterações feitas, quando o "Gravar automaticamente no BD" estiver desligado.
Observação: Todas as tabelas que possuam o campo com tipo de dados "TIMESTAMP" não são suportadas pelo "DBExplorer". Exemplo: TPQPLA, TPQPES e TPQQUE.

Atenção: O DBExplorer permite a execução de comandos de manipulação de dados (INSERT, UPDATE, DELETE), além de possuir o facilitador da opção "Alterável", na qual o usuário pode alterar os dados resultantes de um SELECT. Por isso o acesso a esta ferramenta deve ser restrito apenas a colaboradores de confiança e com conhecimento dos impactos destas ações, sobre risco de comprometer a integridade e segurança dos valores apresentados pelo sistema.

-9-

NOÇÕES DE BANCO DE DADOS

COMANDOS DA LINGUAGEM DE MANIPULAÇÃO DE DADOS

Neste material serão apresentados os comandos básicos da Linguagem de Manipulação de Dados (SELECT, UPDATE, INSERT e DELETE) Dentro de cada um destes comandos serão descritas suas aplicações e estruturas básicas. Cada um deles possui variações mais avançadas, que normalmente exigem maior formação e experiência do profissional. Como este é um Manual de Noções Básicas, as variações avançadas não serão descritas.

SELECT

O SELECT é o comando mais utilizado em SQL, utilizado para realizar consultas a dados armazenados em tabelas. É utilizado por todas as formas de pesquisar a informação. Para explicar o funcionamento das consultas realizadas através do comando SELECT, os componentes do comando serão apresentados gradativamente, mostrando exemplos que incorporem cada uma das cláusulas apresentadas. Observe nos exemplos que as diferenças entre os exemplos estão destacadas em vermelho, evidenciando os pontos alterados pela inclusão de outros componentes.
Estrutura Básica do SELECT

SELECT FROM WHERE

<COLUNAS> <TABELAS> <CONDIÇÕES>

Em <COLUNAS>, deve-se preencher com a lista de colunas a serem retornadas no resultado da consulta. Devem-se separar as colunas solicitadas por vírgula. Exemplo: NOMEPARC, CGC_CPF, TELEFONE. Em <TABELAS>, deve-se listar as tabelas que serão consultadas. Separadas por vírgula, as tabelas precisam possuir ligações por meio de colunas que se relacionam por meio de Foreign Keys. Exemplo: TGFCAB, TGFPAR. Já em <CONDICOES>, deve-se preencher com as condições lógicas para retorno do resultado solicitado. Além disto, quando há mais de uma tabela no FROM, usa-se fazer as ligações no WHERE do campo da tabela da Foreign Key com a tabela que possui a Foreign Key. Exemplo de condição lógica: TGFPAR.CODPARC = 1 AND TGFCAB.DTNEG = „04/07/2010' Exemplo de ligação: TGFCAB.CODPARC = TGFPAR.CODPARC

Observação: Os valores atribuídos às condições devem ser delimitados por apóstrofos (') caso se tratarem de valores não numéricos. Ex: Datas ('21/12/2012'), Textos ('V'), etc.

- 10 -

NOÇÕES DE BANCO DE DADOS

Na construção das CONDIÇÕES, são utilizados os Operadores:

Operador Significado = > < >= <= <> IN EXISTS BETWEEN NOT IS NULL LIKE AND OR Igual Maior Menor Maior ou Igual Menor ou Igual Diferente Lista de opções Existe na ligação Entre Negação Em branco Contendo Lógico - E Lógico - OU

Operador Significado

Ex 1: Selecionar Todas as Colunas de Uma Tabela

SELECT FROM

* TGFPAR

Neste exemplo, estamos selecionando todas as colunas da tabela TGFPAR e todos os registros da tabela, pois neste caso não estamos usando nenhuma condição. Se a tabela tiver muitos registros esta consulta poderá ter uma relevante demora. Este exemplo utiliza o curinga "*" para selecionar todas as colunas da tabela, na ordem em que foram criadas
Ex 2: Selecionar determinadas Colunas de Uma Tabela, com Condição

SELECT FROM WHERE

NOMEPARC, CGC_CPF, TELEFONE TGFPAR CODCID = 2

No exemplo 2, estamos selecionando apenas os campos NOMEPARC (Nome do Parceiro), CGC_CPF (CNPJ/CPF do Parceiro) e TELEFONE da tabela TGFPAR (Cadastro de Parceiros), onde o CODCID (Código da Cidade do Parceiro) é IGUAL a 2.
Ex 3: Selecionar determinadas Colunas de Mais de Uma Tabela

SELECT

NOMEPARC, CGC_CPF, TELEFONE
- 11 -

NOÇÕES DE BANCO DE DADOS

FROM WHERE AND AND

TGFPAR, TGFCAB TGFPAR.CODCID = 2 TGFCAB.TIPMOV = 'V' TGFPAR.CODPARC = TGFCAB.CODPARC

Nesta seleção estamos selecionando os mesmos campos do exemplo anterior, mas agora o objetivo foi selecionar apenas os parceiros para os quais foram lançadas movimentações do Tipo de Movimento Venda. Como o Tipo de Movimento é gravado na tabela do Cabeçalho da Nota, foi necessário incluir a tabela TGFCAB na cláusula FROM, do SELECT. Para que não sejam apresentados registros em duplicidade, deve-se estabelecer a ligação entre as tabelas TGFPAR e TGFCAB. Isto é feito através do Campo CODPARC (que é PK na tabela TGFPAR, e FK na TGFCAB).
Observação I: Perceba que, para acrescentar mais de uma condição foi utilizada a operação "AND", para estabelecer que os registros devam atender a todas as condições propostas (Código da Cidade igual a 2 E Tipo de Movimento igual a Venda). Nos casos em que se deseja estabelecer regras nas quais os registros precisam atender apenas uma das condições, utiliza-se a operação OR (ou) entre as condições da cláusula WHERE.

Observação II: O uso do OR exige cuidado pois, como dito, caso o registro atenda a uma das condições, o mesmo será considerado. Como numa operação matemática, podem ser utilizados parênteses para delimitar as condições, de forma a evitar que o resultado seja diferente do esperado. Se o objetivo for filtrar as operações de vendas de parceiros da cidade 2, ou compras de parceiros da cidade 3: SELECT FROM WHERE AND OR AND AND NOMEPARC, CGC_CPF, TELEFONE TGFPAR, TGFCAB (TGFPAR.CODCID = 2 TGFCAB.TIPMOV=’V’) (TGFPAR.CODCID = 3 TGFCAB.TIPMOV=’V’) TGFPAR.CODPARC=TGFCAB.CODPARC

ATRIBUIR APELIDOS PARA COLUNAS E TABELAS

Quando são realizadas consultas, principalmente quando em mais de uma tabela, é necessário apontar diversas vezes referência à tabela que está sendo consultada. Como vimos no exemplo 3, devemos apontar antes dos nomes dos campos, o nome da tabela à qual pertencem, para evitar ambigüidade nesta definição (TGFPAR.CODCID, por exemplo). Com o intuito de agilizar a construção das consultas e evitar a definição de colunas de maneira ambígua, podem ser definidos "Apelidos" para as tabelas, que normalmente é uma identificação com descrição mais curta que a original, de forma a identificar facilmente a tabela apelidada. A partir da definição de apelidos às tabelas, todas as referências necessárias à tabela ao longo do SELECT devem ser realizadas utilizando o apelido para identificar a tabela. Para definir um apelido para uma tabela ou coluna, basta informar o nome da tabela seguido do apelido, separados por espaço.

- 12 -

NOÇÕES DE BANCO DE DADOS

Ex 4: Atribuir Apelidos para Colunas e Tabelas

SELECT FROM WHERE AND AND

PAR.NOMEPARC, PAR.CGC_CPF CNPJ, PAR.TELEFONE TGFPAR PAR, TGFCAB CAB PAR.CODCID = 2 CAB.TIPMOV='V' PAR.CODPARC=CAB.CODPARC

Neste exemplo está sendo realizada a mesa consulta da realizada no Exemplo 3, a diferença está na atribuição de "Apelidos" às tabelas TGFPAR e TGFCAB, que passam a ser citadas apenas como PAR e CAB, respectivamente. Além disso, a coluna CGC_CPF também foi apelidada, e a coluna será apresentada com o nome CNPJ, no resultado da seleção.
Observação: Diferentemente do que ocorre com as TABELAS, os apelidos atribuídos às colunas não podem ser utilizados para futuras referências às colunas. Caso seja necessário incluir uma condição, agrupamento ou ordenação considerando a coluna, deverá ser informado o nome original da coluna no Banco de Dados.

- 13 -

NOÇÕES DE BANCO DE DADOS

ORDENANDO O RESULTADO DA CONSULTA

A ordenação dos resultados de um SELECT é realizada através da incorporação da cláusula ORDER BY à consulta. O ORDER BY deve ser acrescentado ao final da estrutura, assim: SELECT FROM WHERE ORDER BY <COLUNAS> <TABELAS> <CONDIÇÕES> <ORDEM COLUNAS>

No campo <ORDEM COLUNAS> define-se a ordem dos resultados do SELECT. Pode ser utilizado de forma crescente ou decrescente (ASC, DESC respectivamente) para uma ou mais colunas. Exemplo de ordenação: ORDER BY NUMNOTA ASC, CODPARC DESC, NUNOTA ASC. Caso não seja informado o critério (se crescente ou decrescente), os dados serão ordenados de forma crescente.
Ex 5: Ordenando o Resultado da Consulta

SELECT FROM WHERE AND AND ORDER BY

PAR.NOMEPARC, PAR.CGC_CPF CNPJ, PAR.TELEFONE TGFPAR PAR, TGFCAB CAB PAR.CODCID = 2 CAB.TIPMOV='V' PAR.CODPARC=CAB.CODPARC PAR.NOMEPARC

Neste exemplo, além de realizar a mesma consulta anteriormente realizada no Exemplo 3, é solicitado que os dados a serem apresentados sejam ordenados de forma crescente por Nome do Parceiro.

FUNÇÕES DE AGREGAÇÃO

Funções de agregação são utilizadas para se obter totalizações. As funções de agregação retornam um único resultado para várias linhas de entrada de uma tabela e, com exceção da função COUNT, sempre estão associadas a uma coluna da tabela. A função COUNT pode ser associada ao coringa "*" para que seja retornada a quantidade de linhas pesquisadas, ou a uma determinada coluna, para saber a quantidade de registros cuja determinada coluna não esteja vazia na pesquisa realizada. As funções de agregação são as seguintes: Função COUNT SUM AVG MAX MIN O que faz Retorna o número de ocorrências da coluna na tabela Retorna a soma dos valores da coluna na tabela Retorna a média de valores da coluna na tabela Retorna o maior valor da coluna na tabela Retorna o menor valor da coluna na tabela

Os argumentos da função, normalmente colunas, são informados entre parênteses, assim: SELECT SUM (VLRDESDOB) FROM TGFFIN
- 14 -

NOÇÕES DE BANCO DE DADOS

SELECT COUNT (NUFIN) FROM TGFFIN SELECT COUNT (*) FROM TGFFIN SELECT MIN (VLRDESDOB) FROM TGFFIN Além de informar as funções e seus argumentos no espaço destinado às COLUNAS, caso se deseje que outras colunas (sem funções de agrupamento) também sejam apresentadas, estas outras colunas devem ser informadas através da cláusula GROUP BY (agrupar por). Caso haja a necessidade de incluir condições nas quais as funções de agrupamento devam ser observadas, não se utiliza a cláusula WHERE para inclusão destas condições, mas sim a cláusula HAVING. SELECT FROM WHERE GROUP BY HAVING ORDER BY <COLUNAS> <TABELAS> <CONDIÇÕES> <CAMPOS DE AGRUPAMENTO> <CONDIÇÕES DE AGRUPAMENTO> <ORDEM COLUNAS>

Em <CAMPOS DE AGRUPAMENTO> deve conter a lista de campos para agrupamento, quando se utiliza em <COLUNAS> alguma função de agrupamento. A opção <CONDIÇÕES DE AGRUPAMENTO> tem o mesmo papel das condições lógicas do WHERE, porém, para as funções de agrupamento.
Ex 6: Select com estrutura completa, incluindo Funções de Agregação

SELECT FROM WHERE AND AND GROUP BY HAVING ORDER BY

COUNT(*), PAR.NOMEPARC, PAR.CGC_CPF CNPJ, PAR.TELEFONE TGFPAR PAR, TGFCAB CAB PAR.CODCID = 2 CAB.TIPMOV='V' PAR.CODPARC=CAB.CODPARC PAR.NOMEPARC, PAR.CGC_CPF, PAR.TELEFONE COUNT(*) > 10 COUNT(*) DESC, PAR.NOMEPARC

Neste SELECT, realizado com base no Exemplo 5, solicita-se que seja apresentada a quantidade total de registros (total de notas), além do Nome do Parceiro, do CGC_CPF e do Telefone do Parceiro. No GROUP BY são listadas todas as colunas que devem ser consideradas para o agrupamento, para que seja apresentada apenas uma linha por Parceiro. O HAVING funciona como o WHERE, porém para funções de agrupamento. Sua condição então é que só devem ser apresentados parceiros com mais que dez movimentações (mais de dez registros). No ORDER BY é definida a ordem que os dados devem ser apresentados. Foi definido que os dados devem ser ordenados, de forma decrescente, pelo número de notas (COUNT(*) DESC). Caso haja mais de um parceiro com o mesmo número de notas, os mesmos deverão ser apresentados em ordem alfabética (PAR.NOMEPARC).

- 15 -

NOÇÕES DE BANCO DE DADOS

UPDATE

O UPDATE é um comando utilizado para atualizar (alterar) os dados de um ou mais registros em uma Tabela. Estrutura: UPDATE SET WHERE <TABELA> <COLUNA1>=<VALOR>, <COLUNA2>=<VALOR> <CONDIÇÕES>

Em <TABELA> deve-se indicar a tabela que será atualizada. Já em <COLUNA X> definimos as colunas da tabela que serão alteradas. Logo a frente, colocase o valor, separado pelo sinal de igual (=). Caso haja mais de uma coluna na tabela para ser atualizada, é necessário separá-las com vírgula. Em <CONDIÇÕES>, definimos as condições lógicas, ou seja, somente as linhas que obedecerem a estas condições serão afetadas.
Exemplo:

Considerando que determinada empresa deseje desbloquear as vendas a prazo e conceder um limite de crédito de R$1.000,00 a todos os parceiros da cidade de Uberlândia (cujo código, no banco de dados, é 12): TGFPAR UPDATE SET WHERE BLOQUEAR='N', LIMCRED=1000 CODCID=12

Onde: TGFPAR = Tabela do Cadastro de Parceiros; BLOQUEAR = Campo "Bloquear Venda a Prazo?" do Cadastro de Parceiros LIMCRED = Campo "Limite de Crédito" do Cadastro de Parceiros CODCID = Código da Cidade do Parceiro
Atenção: Apesar de não ser obrigatória, a definição da cláusula WHERE é muito importante. Caso não seja definida, as alterações serão aplicadas a todos os registros da tabela.

INSERT

O INSERT é utilizado para inserir uma nova linha em uma tabela. Estrutura: INSERT INTO VALUES <TABELA> (<CAMPOS>) (<VALORES>)

- 16 -

NOÇÕES DE BANCO DE DADOS

Em <TABELA> deve ser definida a tabela que receberá a linha inserida. Já em <CAMPOS>, lista-se os campos onde iremos inserir as informações. Este parâmetro é opcional. Em <VALORES>, lista-se os valores a serem inseridos na tabela. Isto deve obedecer à ordem dos campos definidos em <CAMPOS>, ou caso este seja omitido, utilizar a sequência de campos criados na tabela.
Ex 1: Inserindo dados, informando os Nomes dos Campos

Para inserir o Bairro de nome "JARDIM INGLATERRA", na tabela de Bairros: INSERT INTO VALUES TSIBAI (CODBAI,NOMEBAI,CODREG,DTALTER) (1000,'JARDIM INGLATERRA',0,'01/01/2012')

Onde: TSIBAI = Tabela do Cadastro de Bairros; CODBAI = Código do Bairro (Chave Primária da Tabela – Não pode ser repetido) NOMEBAI = Nome do Bairro (Chave Alternativa da Tabela – Não pode ser repetido) CODREG = Código da Região do Bairro DTALTER = Data de Alteração Nesta tabela ainda há o campo "DESCRICAOCORREIO" cujo preenchimento não é obrigatório e por isso não foi citado no comando. Como dito anteriormente, a informação dos campos não é obrigatória na estrutura do INSERT, podendo ser omitida. Neste caso, devem ser informados valores para todos os campos da tabela, na mesma ordem em que foram criados.
Ex 2: Inserindo dados, omitindo os Nomes dos Campos

INSERT INTO VALUES

TSIBAI (1000,'JARDIM INGLATERRA',0,'01/01/2012',NULL)

A mesma inserção realizada pelo comando descrito no Exemplo 1 pode ser realizada também pelo comando acima. Com a omissão dos nomes dos campos, devem ser atribuídos valores para todos os campos da tabela e, por isso, foi informado o valor NULL (vazio) para o campo "DESCRICAOCORREIO", que foi omitido no exemplo anterior por não ser obrigatório e que é o último campo desta tabela.
Ex 3: Inserindo Múltiplos Registros

O comando apresentado até aqui permite a inclusão de um único registro. Porém é possível também inserir múltiplos registros. Para isto, deve-se substituir a cláusula VALUES e os <VALORES> atribuídos aos campos por um SELECT que busque as informações necessárias de outras tabelas. Assim:

- 17 -

NOÇÕES DE BANCO DE DADOS

INSERT INTO

TSIBAI SELECT CODIGO, NOME, 0, '01/01/2012', NULL FROM TABBAIRROS

Neste exemplo utilizou-se de uma tabela fictícia denominada TABBAIRROS, da qual seria possível extrair o CODIGO e o NOME dos bairros. As informações para os campos CODREG, DTALTER e DESCRICAOCORREIO são fixas e, por isso, podem ser fixadas também no SELECT que será utilizado na inserção.

DELETE

DELETE é a instrução da SQL que remove um ou mais registros de uma tabela. Estrutura: DELETE FROM WHERE Ou, simplesmente: DELETE WHERE <TABELA> <CONDIÇÕES> <TABELA> <CONDIÇÕES>

Em <TABELA> deve ser definida a tabela cuja(s) linha(s) será(ão) excluída(s). Já em <CONDIÇÕES>, listam-se as condições lógicas para restringir o conjunto de linhas que serão excluídas. Atenção: Caso não sejam definidas as condições (caso não seja informada a cláusula WHERE), todas as linhas da tabela serão excluídas.
Exemplo:

DELETE WHERE

TSIBAI NOMEBAI LIKE 'JARDIM%'

No exemplo acima, serão excluídas todas as linhas da tabela de Bairros onde o nome do Bairro comece com JARDIM (JARDIM HOLANDA, JARDIM EUROPA, JARDIM INGLATERRA). Não serão excluídos os bairros cujo nome não se encaixe nesta condição.

- 18 -

NOÇÕES DE BANCO DE DADOS

CREATE VIEW

Uma ferramenta muito empregada na construção de relatórios, cubos e outros indicadores é a VIEW. Resumidamente, pode-se dizer que uma VIEW é o armazenamento de um SELECT no Banco de Dados, o que facilita a construção de indicadores mais complexos, pois todos os cálculos, campos, tabelas e condições serão armazenadas na VIEW, bastando consultá-la para obtenção destas informações. Uma VIEW terá suas linhas e colunas calculadas dinamicamente, sempre que isto for solicitado através de um SELECT pré-estabelecido. A VIEW não armazena os dados, contudo, os valores calculados poderão ser utilizados em comandos SELECT, INSERT, UPDATE e DELETE, para recuperação e manipulação de dados, por isto, diz-se que se trata de uma tabela virtual, pois não possui linhas próprias, mas as obtém e as disponibiliza para acesso através de uma Query.

ESTRUTURA DE COMANDO PARA CRIAÇÃO DE VIEWS:

CREATE [OR REPLACE] VIEW <NOME DA VIEW> AS <INSTRUÇÕES SQL (SELECT)> [WITH READ ONLY]

As cláusulas entre colchetes são opcionais. Caso o usuário deseje utilizá-las, os colchetes não deverão fazer parte do comando:

- 19 -

NOÇÕES DE BANCO DE DADOS

1) O comando REPLACE recria uma VIEW já existente. Deve ser utilizado para alterar uma visão existente sem necessidade de apagá-la. Como neste exemplo, a VIEW ainda não existe, não será necessário utilizá-lo.

2) Através da cláusula WITH READ ONLY pode-se impedir operações de manipulação de dados sobre a VIEW, restringindo-a apenas à leitura. A cláusula WITH READ ONLY indica que apenas a operação de consulta (SELECT) será permitida na VIEW e, desse modo, operações de atualização, inserção e exclusão não serão permitidas. Neste exemplo, esta cláusula será mantida. Vamos utilizar neste exemplo o SELECT modelo abaixo para criação da View: SELECT CAB.NUNOTA, CAB.CODPARC, PAR.NOMEPARC, COUNT(ITE.CODPROD) "Contador de Itens" FROM TGFCAB CAB, TGFITE ITE, TGFPRO PRO, TGFPAR PAR WHERE CAB.TIPMOV = 'V' AND ITE.CODPROD = PRO.CODPROD AND CAB.CODPARC = PAR.CODPARC AND CAB.NUNOTA = ITE.NUNOTA GROUP BY CAB.NUNOTA, CAB.CODPARC, PAR.NOMEPARC HAVING COUNT(ITE.CODPROD)>4 ORDER BY CAB.NUNOTA DESC

- 20 -

NOÇÕES DE BANCO DE DADOS

Primeiramente, a „Estrutura‟ para Criação da VIEW deverá ser digitada conforme modelo.

Na sequência, atribui-se um nome para a VIEW. Como o SELECT anteriormente criado, retorna dados importantes das movimentações de vendas, pode-se chamar a VIEW de VGFCAB_VENDAS.

Nota: O começo do nome (VGF) não é obrigatório, foi utilizado no exemplo acima apenas com o objetivo de manter o padrão adotado em outros objetos do Banco de Dados. O último componente da VIEW a ser editado será a consulta que deverá ser realizada. Deve-se inserir o SELECT construído no espaço reservado da estrutura do comando.

- 21 -

NOÇÕES DE BANCO DE DADOS

Nota: Os espaços e linhas saltados não são obrigatórios. Foram utilizados apenas para que a estrutura do comando ficasse mais organizada e simples de entender. Ao executar o comando, o sistema emitirá a mensagem: “Erro ao criar manipulador do cursor”.

Se esta mensagem aparecer, o comando foi executado com sucesso, pois esta mensagem é emitida pelo fato de o DBExplorer não ter sido desenvolvido, a princípio, para este tipo de comando. Normalmente é utilizada uma ferramenta específica de manutenção de Banco de Dados para comandos mais avançados, como o TOAD, por exemplo. Observações: 1) O nome da VIEW pode ter até 30 caracteres. Porém, é preferível sempre utilizar identificadores mais curtos, para facilitar as consultas à VIEW. Exemplo:

NOTAS_COM_MAIS_DE_QUATRO_ITENS VGF_GRDVDAS

- 22 -

NOÇÕES DE BANCO DE DADOS

2) O usuário deve certificar-se de que o nome da VIEW que esta sendo criada, já não pertença a outro objeto do Banco de Dados. Para isto, não se deve utilizar o comando “OR REPLACE” no momento da criação da VIEW. Assim, caso o nome desta já esteja sendo utilizado por outro objeto, o banco de dados impedirá a criação da VIEW.

Quando se utiliza a cláusula “OR REPLACE” na criação da VIEW, caso já exista, a mesma será substituída. Através de ferramentas específicas de manutenção de Banco de Dados também é possível consultar as VIEWs existentes.

VISUALIZANDO O CONTEÚDO DE UMA VIEW:

Para visualizar o conteúdo de uma VIEW, deve-se realizar uma consulta, um SELECT, como visto anteriormente: SELECT * FROM VGFCAB_VENDAS

- 23 -

NOÇÕES DE BANCO DE DADOS

Perceba, através do resultado da consulta, o quanto a construção de indicadores facilita em situações que exigem consultas complexas ao Banco de Dados. Todos os campos, ligações e condições ficam armazenadas no Banco de Dados. A partir deste momento, uma simples consulta à VIEW retorna os dados correspondentes ao SELECT, facilitando o trabalho de extração destes dados.
EXCLUINDO UMA VIEW:

O comando DROP VIEW é usado para excluir uma VIEW do Banco de Dados. Nenhum efeito ocorrerá sobre as tabelas referenciadas. Contudo, o usuário deverá ter um cuidado redobrado ao realizar este comando, pois o sistema possui VIEWs que são padrão, utilizadas para os mais diversos fins. Por isto, ao excluir uma VIEW, deve-se ter certeza de que isto não afetará negativamente o uso do sistema ou de indicadores personalizados que estejam se baseando nela. O comando DROP VIEW, quando executado no DBExplorer é irreversível. Para excluir a VIEW, basta executar o comando: DROP VIEW VGFCAB_VENDAS

- 24 -

NOÇÕES DE BANCO DE DADOS

Nota: Novamente, a mensagem “Erro ao criar manipulador do cursor” indica que o comando foi executado com sucesso.

O uso de VIEWS é recomendado principalmente quando as colunas da consulta corresponder a cálculos realizados com base em uma ou mais informações, disponíveis no Banco de Dados, e a replicação destes cálculos nos formatadores de relatórios, cubos ou em fórmulas, for inviável. Como estes cálculos são referentes às regras, estas podem ser estudadas e definidas para que sejam armazenadas no Banco de Dados, permitindo que a consulta aos resultados destas regras sejam facilmente obtidos. Exemplos: Indicadores que envolvem Custos, Comissões, Resultados, etc.

- 25 -

NOÇÕES DE BANCO DE DADOS

INSPETOR DE QUERY

Permite inspecionar as consultas que o sistema está realizando para lhe apresentar os dados que você visualiza nas telas de cadastros ou nas rotinas do sistema. É muito útil para iniciantes no uso do sistema, uma vez que estes desconhecem o nome de todas as tabelas e colunas do sistema.

Na aba SQL é visualizada a Query da Consulta realizada no Banco de Dados. Na aba Parâmetros são apresentadas as variáveis utilizadas pelo sistema na composição da Query. Estas variáveis são as colunas de condições que são preenchidas pelo sistema no momento da consulta, pois variam de acordo com os registros que estão sendo pesquisados. Já na aba Colunas, é apresentada a correlação entre os nomes das colunas no Banco de Dados e os nomes para apresentação. Por exemplo: CODBAI=Código NOMEBAI=Nome CODREG=Cód.Região DTALTER=DTALTER DESCRICAOCORREIO=Nome do Correio

- 26 -

NOÇÕES DE BANCO DE DADOS

Na aba Linha do BD é apresentado o resultado da pesquisa apresentada na aba SQL, com o conteúdo de cada coluna pesquisada, para o registro selecionado. Observação: Esta opção esta visível apenas para o usuário SUP, então independe de controle de acesso.

CAMPOS ADICIONAIS

MGE Configurações ou Mitra - Menu Utilitários\Campos Adicionais

Campos Adicionais são campos que o usuário pode criar em diversas tabelas do sistema, para registro de informações específicas necessárias no processo da empresa. Este menu permite a inclusão, alteração e exclusão destes campos. Esta tela é dividida em duas partes: A primeira para inclusão e exclusão de tabelas nas quais serão criados campos adicionais. Deve-se posicionar o cursor na tabela que se deseja incluir o Campo Adicional. Quando selecionada a tabela nesta grade o sistema apresenta na grade inferior todos os campos adicionais existentes na tabela. A segunda parte é onde se realiza a manutenção dos campos:

- 27 -

NOÇÕES DE BANCO DE DADOS

Nome do Campo: para definir um nome para o campo, no Banco de Dados. Este deve ter o prefixo AD_<nome do campo>. Caso não seja informado pelo usuário, o prefixo será adicionado automaticamente pela rotina. Descrição: para definir a descrição que será apresentada no cadastro ou rotina onde o campo estará sendo mantido. Tipo: para definir o tipo de informação que aquele campo irá conter. Os campos adicionais serão apresentados conforme a sua definição. Exemplo: se criar um campo tipo lista na tela de parceiros, este será mostrado como uma lista para selecionar a opção. Máscara: para definir a mascará do campo quando este é do tipo "Inteiro", "Inteiro 3200", "Float" ou "Texto". Validação: para fazer validações que serão impostas aos dados que serão gravados nos campos. Por exemplo, se o campo for do tipo inteiro, e seja necessário restringir que sejam digitados apenas valores maiores que 1000, deverá usar o "maior que" e no campo seguinte informar 1000. Grupo: para agrupar os campos adicionais. Lista de Opções: para informar a lista de opções quando o campo é do tipo "Lista". Tamanho: para definir o tamanho do campo quando este é do tipo "Texto" ou "Lista". Quando o usuário for criar um campo adicional do tipo "Lista", deverá informar no "Tamanho", o número de caracteres da maior linha do campo. Não informar valores muito altos no tamanho do campo, consumindo o Banco de Dados desnecessariamente. O tamanho máximo de cada linha é 255 caracteres. Valor Padrão: para definir um valor padrão para o campo. Quando o campo adicional tiver validação, o sistema não permitirá a digitação de um valor padrão diferente dos previstos no campo de Validação. Alinhamento: para definir o alinhamento das informações digitadas no campo (Centro, Direita ou Esquerda). Obrigatório: para definir se o preenchimento do campo adicional será obrigatório. Ch.Estrangeira: para criar integridade referencia do campo adicional, com outra tabela do sistema. Desta forma é criado um relacionamento entre tabelas que, originalmente, não são relacionadas entre si. Quando criado este relacionamento, só será permitido neste campo valores referente à chave primária da tabela estrangeira relacionada. Exemplo: Caso a empresa precise apontar, no cadastro de locais, qual o usuário responsável pelo local. Neste caso deverá ser criado um campo do tipo Inteiro, e em Chave Estrangeira devese escolher a tabela TSIUSU (Cadastro de Usuários) para relacionar o Campo Adicional com o cadastro de Usuários. Assim não será permitido que seja informado no campo adicional um código que não corresponda a um "Código de Usuário" do Cadastro de Usuários. Além de não permitir que sejam informados valores diferentes dos disponíveis na tabela relacionada, o sistema cria, para o Campo Adicional, um botão de pesquisa, nas telas onde isto é possível, para que o usuário possa localizar o registro que deve ser informado no Campo Adicional. Veja maiores detalhes sobre a manutenção opção de Pesquisa mais adiante, no tópico "Auxiliar de Pesquisas".
- 28 -

NOÇÕES DE BANCO DE DADOS

Ordem: para definir a ordem de apresentação dos campos para digitação quando existe mais de um campo adicional em uma mesma tabela Observações: Campo livre, onde podem ser informadas quaisquer observações relevantes referentes ao Campo Adicional como, por exemplo, a justificativa para sua criação.

- 29 -

NOÇÕES DE BANCO DE DADOS

Parâmetros que influenciam este cadastro

"Disp. campos adic. para que fiquem visíveis na nota?" (VISUADICAB): se estiver ligado, no momento do preenchimento de uma nota os campos adicionais aparecem automaticamente na tela, sem precisar usar a opção de botão direito "Campos adicionais". Observação: Nas telas que tem abas, os campos serão apresentados em abas separadas. Nas telas que não tem abas, serão apresentados em janela suspensa, devendo se abertos utilizando o botão direito, opção campos adicionais. Atenção: Ao criar campos adicionais para tabelas históricas (como Tipo de Negociação ou Tipo de Operação) deve-se ter ciência de que as informações digitadas nestes campos valerão apenas a partir do seu cadastro. Isso porque a cada alteração o sistema cria uma nova linha na Tabela do Cadastro.

AUXILIAR PARA PESQUISAS

MGE Configurações - Menu "Avançado\Auxiliar para Pesquisas". Esta tela é uma interface para a tabela "TSICVT". O usuário utiliza a todo o momento as funcionalidades da tabela TSICVT. Isto porque a tabela "TSICVT" é utilizada para facilitar a pesquisa dos "Campos para filtrar" nas "Telas de Filtros" do sistema, apresentando no campo onde se informa o valor a ser pesquisado, um componente de pesquisa que trará os campos informados no campo "Consulta". Por exemplo: No cadastro de Contas Bancárias, quando é necessário filtrar por Código do Banco, o usuário não precisa conhecer o código, pois na tela de filtros há um componente de pesquisa, no qual é possível localizar a TOP que se deseja filtrar.

- 30 -

NOÇÕES DE BANCO DE DADOS

Componente de Pesquisa

O sistema possibilita a criação de Campo Adicional do fazendo referência a outra tabela. As configurações da tela "Auxiliar para Pesquisas" podem ser integradas também com "Campos Adicionais", para estabelecer as condições desta referência. Quando cadastrado um novo campo adicional no qual seja informada uma "Chave Estrangeira", o sistema cria automaticamente na tabela auxiliar TSICVT a "query" referente a ligação entre as tabelas e o campo adicional. Pode-se utilizar a tela "Auxiliar de Pesquisas" caso seja necessário alterar esta ligação entre as tabelas, principalmente relacionados às colunas para pesquisa e para exibição. O sistema busca o campo adicional na TSICVT, não o encontrando, ele faz a pesquisa utilizando a FK da tabela que esta sendo utilizada como chave estrangeira. Chave: Informa-se neste campo o nome da "Coluna" que existe na tabela que será utilizada na pesquisa. Retorno: Este campo é utilizado para guardar qual será a "Coluna" retornada ao campo de "Valor" do filtro, ou ao Campo Adicional. Exibição: Neste campo o usuário fará a descrição do campo quando forem utilizados "Campos Adicionais". Exemplo:

- 31 -

NOÇÕES DE BANCO DE DADOS

Caso exista este registro no "Auxiliar para Pesquisas" (TSICVT), o campo adicional AD_COUSU criado na tabela de locais apresentará um botão de pesquisa, e quando selecionado um usuário, além de gravado no campo adicional o código deste, será apresentado ao lado do código o Nome do Usuário, uma vez que foi escolhida a coluna "Usuário" para exibição, desta forma:

Se não for informada a coluna para „Exibição‟, o „Campo Adicional‟ possuiria o componente de pesquisa, mas seria apresentado assim:

Observação: Deve-se, sempre que possível, fazer a utilização desta funcionalidade em tabelas que retornem poucos registros, como "Marca" ou "Volume", e evitar o uso em tabelas "volumosas" como "Parceiros" ou "Produtos", pois isso acarretará lentidão na abertura da lista de "Pesquisa", uma vez que estas tabelas normalmente possuem muitos registros para serem lidos.

- 32 -