TREINAMENTO DE SQL – PARTE 1 de 2.ETAPAS:Comando DistinctAgrupando DadosFunçõesMatemáticaStringConversãoFunçõesde AgregaçãoComandoHavingUnion e Union AllOrdenaçãoComando Case WhenComandoRowNumdo OracleConceitos de banco de dadosSentença SQLDicionário de dadosConsulta simples em uma tabelaInterpretando a GLINKSRELLigando tabelas / Inner JoinOuther Join – Left / RightConsulta com várias tabelasApelido de tabela / colunaFiltros e parâmetrosComando BetweenSubconsulta InSubconsulta Alias / Externa
CONCEITOS DE BANCO DE DADOSO que é um SGBD?Sistema Gerenciador de Banco de Dados, é um conjunto de softwares que auxiliam no gerenciamento de um ou mais banco de dados.Quais as vantagens de utilizar um SGBD?  Exclui da aplicação o papel de organizar os dados
  Integra e organiza os dados em uma única base
  Acelera e facilita o processo de manipulação dos dadosCONCEITOS DE BANCO DE DADOSO que um SGBD possui?  Instâncias
  Banco de dados
  Tabelas
  Visões
  Programação
  Permissões
  Linguagem SQLTAB1   TAB2   TAB3            TAB1           TAB1TAB1   TAB2   TAB3BD1                BD2          BD3                  BD4SGBD
CONCEITOS DE BANCO DE DADOSTABELASServem para armazenar dados semelhantes, e/ou categorizá-los, sendo constituída por linhas e colunas.  Uma coluna refere-se a um campo, também conhecido por atributo
  Cada linha representa um registro, também conhecido por tuplaCamposRegistrosou Tuplas
CONCEITOS DE BANCO DE DADOSOs campos possuem diversos tipos sendo eles:  Numéricos (inteiro e decimal)
  Alfabético
  Data e hora
  Arquivo (BLOB - Binary Large OBject)Uma tabela também possui chaves:  A chave primária indica unicidade, quando comparado aos demais registros da mesma tabela
  A chave estrangeira é responsável por ligar uma tabela com outra pelo campo chave primáriaEsta ligação também conhecida como herança, viabiliza a ligação de uma tabela na outra tornando possível a generalização/agrupamento dos dados.
CONCEITOS DE BANCO DE DADOSExemplo de ligação de tabelas:Chave primáriaChave estrangeira
CONCEITOS DE BANCO DE DADOSComo o RM controla diversas coligadas em um único banco de dados?Nas tabelas que necessitam de um cadastro separado por coligada, é utilizado uma coluna para indicar a qual coligada o registro pertence.
CONCEITOS DE BANCO DE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  A Linguagem SQL está presente em todos SGBD existentes no mercado.
  Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  Porém cada SGBD possui algumas particularidades/restriçõesSGBDSQLBD
CONCEITOS DE BANCO DE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  A Linguagem SQL está presente em todos SGBD existentes no mercado.
  Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  Porém cada SGBD possui algumas particularidades/restriçõesSGBDSQLBD
CONCEITOS DE BANCO DE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  A Linguagem SQL está presente em todos SGBD existentes no mercado.
  Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  Porém cada SGBD possui algumas particularidades/restrições.SGBDSQLBD
SENTENÇA SQL – DICIONÁRIO DE DADOSComo eu sei qual o nome da tabela, ou o nome do campo que armazenadeterminado dado?A forma mais fácil é via aplicativo pressionando CTRL+SHIFT e posicionando o cursor sobre o campo, conforme o exemplo abaixo:
SENTENÇA SQL – DICIONÁRIO DE DADOSPara as novas telas desenvolvidas em .NETClicar com o direito no fundo da janela, e habilitar a opção “visualizar nome dos campos”, e posicionar o cursor sobre o campo.
DICIONÁRIO DE DADOSOutra forma é rastrear pela tabela GCAMPOS, utilizada pelo gerador como um dicionário de dados. Contendo o nome das tabelas e os campos com suas descrições.
CONSULTA SIMPLES EM UMA TABELASintaxe de uma consulta SQL:O comando SELECT é responsável pelas consultas no banco de dados, sendo o único comando utilizado em planilhas, gerador e nos cubos.
CONSULTA SIMPLES EM UMA TABELASintaxe de uma consulta SQL:Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:
INTERPRETANDO A GLINKSRELComo eu sei qual a ligação das tabelas?Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:
INTERPRETANDO A GLINKSRELComo eu sei qual a ligação das tabelas?Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:
INTERPRETANDO A GLINKSRELA CHILDTABLE (TMOV – movimentos) herda os dados da tabela MASTERTABLE (FCFO – clientes/fornecedores), ou seja, no cadastro de um pedido é informado o código do cliente, e assim é feita a ligação destas duas tabelas.
INTERPRETANDO A GLINKSRELVisualizando de uma outra forma.1º2º3ºFCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO = TMOV.CODCFO
INTERPRETANDO A GLINKSRELNão entendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA
INTERPRETANDO A GLINKSRELNão entendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO
INTERPRETANDO A GLINKSRELNão entendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO
INTERPRETANDO A GLINKSRELNão entendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO = TMOV.CODCFO
INTERPRETANDO A GLINKSRELExistem tabelas com mais de uma possibilidade de ligação, para estes casos, deve ser identificado qual a linha que contém a ligação correta.Quando um relatório não é feito por consulta SQL, mas é feito com “campos da base”, o sistema identifica as ligações entre as tabelas, e na ocorrência de mais de uma ligação, exige que o usuário selecione a ligação correta, para poder salvar o relatório.
Ligando Tabelas / Inner JoinSintaxe de uma consulta SQL:SELECT [DISTINCT] <CAMPOS>FROM <TABELAS> <JOINS>WHERE <CONDIÇÕES>GROUP BY <CAMPOS>ORDER BY <CAMPOS>O comando SELECT é responsável pelas consultas no banco de dados, e no Corpore, pode ser utilizado no gerador de relatórios, planilhas, cubos, filtros com o operador in, e em fórmulas.Vale lembrar que:
Ligando Tabelas / Inner JoinLigando tabelas pelo comando “WHERE”Ligando tabelas pelo comando “FROM”
Ligando Tabelas / Inner JoinOutro exemplo mais complexo, ligando pelo comando “WHERE” e “FROM” respectivamente, uma tabela com chave composta.DICA: Mesmo que o cliente tenha apenas uma coligada, utilize as ligações da maneira correta, se a tabela usa chave composta, ligue os dois campos.
Outer Join – Left / RightQuando você relaciona duas tabelas pelo Inner Join, o SGBD retorna registros das duas tabelas quando existe um relacionamento da tabela da esquerda com a tabela da direita. Porém existem situações onde você necessita que o SGBD retorne registros da tabela da esquerda, mesmo não contendo registro na tabela da direita que se iguale.Para solucionar este problema, existe o conceito de Outer Join, muito utilizado para ligar tabelas que contenha campos de preenchimento opcional, como os campos complementares.Abaixo um Outer Join escrito de maneira formal (relacionada pelo comando From)
OuterJoin – Left / RightAbaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER.Agora, o mesmo comando acima para SGBD ORACLE.
OuterJoin – Left / RightObserve a consulta abaixo, foi obtido o resultado dos identificadores 103, 105 e 118.Todos possuem relação entre item e o tributo.Porém os registros dos tributos, assim como outras tabelas, são criados somente quando ele existe, diferente de outras tabelas que criam o registro porém com alguns campos nulos.
OuterJoin – Left / RightNote que agora os identificadores 104, 106 e 108, foram inclusos.Isto deve-se ao outer join, que buscou todos os valores da tabela de itens do movimento, mesmo não existindo um registro que mantém relação na tabela de tributos.Este exemplo é para SQL Server, em Oracle basta substituir * por (+) .
Consulta com várias tabelasEm grande parte das consultas SQL é utilizado mais de duas tabelas, e devido este nível de complexidade é comum utilizarmos diagramas para facilitar o entendimento dos relacionamentos, e facilitar no desenvolvimento da sentença SQL. Veja o exemplo abaixo:PFUNCPSECAOPCODSITUACAOPFUNCAO
Consulta com várias tabelasPasso 1 - ligar a tabela PFUNC com a PSECAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
Consulta com várias tabelasPasso 1 - ligar a tabela PFUNC com a PSECAO.SELECT *FROM PFUNC, PSECAOWHERE         PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGO
Consulta com várias tabelasPasso 2 - ligar a tabela PFUNC com a PFUNCAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
Consulta com várias tabelasPasso 2 - ligar a tabela PFUNC com a PFUNCAO.SELECT *FROM PFUNC, PSECAO, PFUNCAOWHERE         PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGO
Consulta com várias tabelasPasso 3 - ligar a tabela PFUNC com a PCODSITUACAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
Consulta com várias tabelasPasso 3 - ligar a tabela PFUNC com a PCODSITUACAO.SELECT *FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE         PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
Consulta com várias tabelasA  mesma SQL escrita de maneira formal:SELECT *FROM PFUNCINNER JOIN PSECAO ON      ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGO )INNER JOIN PFUNCAO ON      ( PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGO )INNER JOIN PCODSITUACAO ON      ( PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE )
Consulta com várias tabelasNote queaté o momentotodosexemplos de SQL apresentadosutilizam no comando: SELECT *quesignifica; obtertodas as colunas de todas as tabelasenvolvidas.No entanto, se analisarmos, estecomandoretornaalgumascolunasdesnecessárias.Para solucionaresteproblema, obtendosomente as colunaquenosinteressabastaindicar a tabela e o nome do campo no padrãoTABELA.CAMPO, veja a diferença no exemploabaixo:
Apelido de Tabela / ColunaÉ possíveldiminuir a quantidade de “código” namontagem de umasentença SQL atribuindo um apelido a umatabela, tambémconhecidocomo alias. Após a criaçãodestes, bastautilizálo no lugar do nomedatabela. Compare estasduasconsultasabaixo do antes e o depois, respectivamente:SELECT PFUNC.CHAPA, PFUNC.NOME, PSECAO.DESCRICAO, PFUNCAO.NOME, PCODSITUACAO.DESCRICAOFROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE         PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTESELECT P.CHAPA, P.NOME, S.DESCRICAO, F.NOME, C.DESCRICAOFROM PFUNC P, PSECAO S, PFUNCAO F, PCODSITUACAO CWHEREP.CODCOLIGADA = S.CODCOLIGADAAND P.CODSECAO = S.CODIGOAND P.CODCOLIGADA = F.CODCOLIGADAAND P.CODFUNCAO = F.CODIGOAND P.CODSITUACAO = C.CODCLIENTE
Apelido de Tabela / ColunaTambém é possívelcriar um alias (apelido) paraumacoluna de maneirasemelhande a criação de alias paratabelas.SELECTPFUNC.CHAPA REGISTRO,PFUNC.NOME FUNCIONARIO,PSECAO.DESCRICAO SECAO,PFUNCAO.NOME FUNCAO,PCODSITUACAO.DESCRICAO SITUACAOFROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE         PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
Apelido de Tabela / ColunaVejaabaixo o resultado de antes e depois, respectivamente:Observação:Estaprática é muitoutilizadaemsqlqueutilizamfunções, veremosadiante o quesignifcafunções.
Filtros e ParâmetrosNo filtro, como o próprio nome sugere, serve para consultar informações no banco de dados, de forma que o resultado, seja apresentado eliminando dados.O exemplo abaixo, apresenta uma consulta simples; onde está sendo pesquisado funcionários com o salário inferior a 1000.
Filtros e ParâmetrosVale lembrarqueexistediferença entre as comparações:Salário inferior a 1000Salário inferior/inclusive 1000.Observação: Estascomparaçõessãochamadas “menor”, e “menorouigual” respectivamente.
Filtros e ParâmetrosVejaabaixo o símboloquerepresentacadaoperador e comosãochamados, respectivamente:=     	Igual<> 	Diferente<	Menor<=	Menorouigual>	Maior>=	MaiorouigualLIKE	Like, pesquisadentro do conteúdo de um campo alfanuméricoNOT LIKE   esteretorna o quenãosatisfaz a condição Like.BETWEAN É usadoparacomparar um campo com um intervalor de valoresoudatas.IN	In, serve paracomparar um campo com valores de umalista.NOT IN       Este retorna o quenãosatisfaz a condição In.Veremosadianteosultimos 3 comandos “especiais” emmaiordetalhes.
Filtros e ParâmetrosA princípio o comando LIKE tem a mesmafunção do operadorigual; Porém, quandoutilizadoemconjunto do simbolo de percentual, é possívelpesquisardentro do conteúdo de um campo alfanumérico.
Filtros e ParâmetrosNo exemploabaixomuitosemelhante a consulta anterior, pesquisadentro do campo de códigodaseção dos funcionários, umaseçãoqueinicia com “01”.
Filtros e ParâmetrosO comando LIKE tambémpesquisa no final, ou no campo todo, vejaosexemplos:
Filtros e ParâmetrosO comando NOT LIKE, inversoaocomando Like, pesquisaoscamposquenãocontém a ocorrência, tambémsendopossívelpesquisar no inicio, no fimouemtodo o campo.No exemploabaixoestásendopesquisadopessoasquenãocontém no nome a letra “E”.
Filtros e ParâmetrosEmtodosfiltrosapresentadosanteriormente, foiutilizadoapenasumacondição. Podemos extender o número de condições, oucombinações de condiçõesnamesmasentença SQL, utilizandoosoperadoreslógico, abaixo:AND, equivalente a “E”, ondepara a condição ser verdadeira é necessáriosatisfazertodas as condições; exemplo: Funcionáriosativos “E” Saláriomenorque R$ 1.000,00.SELECT *FROM PFUNCWHERE CODSITUACAO = 'A'       AND SALARIO < 1000OR, equivalente a “OU”,  ondepara a condição ser verdadeira é necessáriosatisfazerapenasuma das condições; exemplo: Lançamentobaixado “OU”  Código do clienteigual a F00001.SELECT CODCFO, STATUSLANFROM FLANWHERE STATUSLAN = '1' OR CODCFO = 'F00001'
Filtros e ParâmetrosÉ possíveltambémcriarexpressõeslógica, similar as expressõesmatemática; veja o exemplo:Observe queosparenteses, servemparadefinir a prooridadedaexpressão.
Filtros e ParâmetrosOs parâmetros, sãovariáveispreenchidaspelousuário no momentodaexecução das sentença SQL, estasvariáveissãoutilizadasnascondições de umaconsulta.A sintaxe de umavariavelparâmetro é: “:PARAMETRO_TIPO”.Os parâmetrostambémpossuemtipos, sendoeles:_D, esterefere-se a data._S, esterefere-se a caracteresalfanumérico._N, esterefere-se a númerosinteiros._V, esterefere-se a valoresdecimais.Veja, no exemploabaixo uma sentença SQL com 2 parâmetros.SELECT NOMEFROM PFUNCWHERE CODCOLIGADA = :CODCOLIGADA_N      AND CHAPA = :CHAPA_S
Comando BetweenO comando Between serve paracomparar um intervalo de valoresoudatas.Podendo ser utilizado no lugardacomumcomparação “campo >= inicio e campo <= fim”, veja o exemploabaixo:
Subconsulta INO operador IN, pode ser utilizadoparacomparar um campo a umalista de valores.Veja um exemplo simples abaixo:Atenção: o comando “OR”, chamado “OU”, é utilizado em expressões lógicas, que será visto com mais detalhes após alguns slides.
Subconsulta INA subconsulta IN é compostadacomparação de um campo com umalista de valores, ondeestalista é “alimentada” peloresultado de umaconsulta. Veja o exemplo:
Subconsulta AliasUm outrotipo de subconsulta é a “subconsulta alias”, que resume-se emcriarumaconsulta SQL, atribuir um apelidoparaesta, e tratá-la como se fosse umatabelaouvisão; podendo inclusive relacionaresta com outrastabelas, ouatémesmo com outrassubconsultas.
SubconsultaExternaTambémconhecidacomo “ColunaSubconsulta”, consisteemexecutarumaconsultaemumacolunadavisão, ondenestasubconsultautilizaparâmetrosdaconsultaexterna.Vejamos 2 exemplos:
SubconsultaExterna

TOTVS LINHA RM TREINAMENTO SQL

  • 1.
    TREINAMENTO DE SQL– PARTE 1 de 2.ETAPAS:Comando DistinctAgrupando DadosFunçõesMatemáticaStringConversãoFunçõesde AgregaçãoComandoHavingUnion e Union AllOrdenaçãoComando Case WhenComandoRowNumdo OracleConceitos de banco de dadosSentença SQLDicionário de dadosConsulta simples em uma tabelaInterpretando a GLINKSRELLigando tabelas / Inner JoinOuther Join – Left / RightConsulta com várias tabelasApelido de tabela / colunaFiltros e parâmetrosComando BetweenSubconsulta InSubconsulta Alias / Externa
  • 2.
    CONCEITOS DE BANCODE DADOSO que é um SGBD?Sistema Gerenciador de Banco de Dados, é um conjunto de softwares que auxiliam no gerenciamento de um ou mais banco de dados.Quais as vantagens de utilizar um SGBD? Exclui da aplicação o papel de organizar os dados
  • 3.
    Integrae organiza os dados em uma única base
  • 4.
    Acelerae facilita o processo de manipulação dos dadosCONCEITOS DE BANCO DE DADOSO que um SGBD possui? Instâncias
  • 5.
    Bancode dados
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
    LinguagemSQLTAB1 TAB2 TAB3 TAB1 TAB1TAB1 TAB2 TAB3BD1 BD2 BD3 BD4SGBD
  • 11.
    CONCEITOS DE BANCODE DADOSTABELASServem para armazenar dados semelhantes, e/ou categorizá-los, sendo constituída por linhas e colunas. Uma coluna refere-se a um campo, também conhecido por atributo
  • 12.
    Cadalinha representa um registro, também conhecido por tuplaCamposRegistrosou Tuplas
  • 13.
    CONCEITOS DE BANCODE DADOSOs campos possuem diversos tipos sendo eles: Numéricos (inteiro e decimal)
  • 14.
  • 15.
    Datae hora
  • 16.
    Arquivo(BLOB - Binary Large OBject)Uma tabela também possui chaves: A chave primária indica unicidade, quando comparado aos demais registros da mesma tabela
  • 17.
    Achave estrangeira é responsável por ligar uma tabela com outra pelo campo chave primáriaEsta ligação também conhecida como herança, viabiliza a ligação de uma tabela na outra tornando possível a generalização/agrupamento dos dados.
  • 18.
    CONCEITOS DE BANCODE DADOSExemplo de ligação de tabelas:Chave primáriaChave estrangeira
  • 19.
    CONCEITOS DE BANCODE DADOSComo o RM controla diversas coligadas em um único banco de dados?Nas tabelas que necessitam de um cadastro separado por coligada, é utilizado uma coluna para indicar a qual coligada o registro pertence.
  • 20.
    CONCEITOS DE BANCODE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  • 21.
    Atravésdela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 22.
    ALinguagem SQL está presente em todos SGBD existentes no mercado.
  • 23.
    Elasegue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 24.
    Porémcada SGBD possui algumas particularidades/restriçõesSGBDSQLBD
  • 25.
    CONCEITOS DE BANCODE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  • 26.
    Atravésdela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 27.
    ALinguagem SQL está presente em todos SGBD existentes no mercado.
  • 28.
    Elasegue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 29.
    Porémcada SGBD possui algumas particularidades/restriçõesSGBDSQLBD
  • 30.
    CONCEITOS DE BANCODE DADOSSQL - Linguagem de consulta estruturada É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  • 31.
    Atravésdela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 32.
    ALinguagem SQL está presente em todos SGBD existentes no mercado.
  • 33.
    Elasegue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 34.
    Porémcada SGBD possui algumas particularidades/restrições.SGBDSQLBD
  • 35.
    SENTENÇA SQL –DICIONÁRIO DE DADOSComo eu sei qual o nome da tabela, ou o nome do campo que armazenadeterminado dado?A forma mais fácil é via aplicativo pressionando CTRL+SHIFT e posicionando o cursor sobre o campo, conforme o exemplo abaixo:
  • 36.
    SENTENÇA SQL –DICIONÁRIO DE DADOSPara as novas telas desenvolvidas em .NETClicar com o direito no fundo da janela, e habilitar a opção “visualizar nome dos campos”, e posicionar o cursor sobre o campo.
  • 37.
    DICIONÁRIO DE DADOSOutraforma é rastrear pela tabela GCAMPOS, utilizada pelo gerador como um dicionário de dados. Contendo o nome das tabelas e os campos com suas descrições.
  • 38.
    CONSULTA SIMPLES EMUMA TABELASintaxe de uma consulta SQL:O comando SELECT é responsável pelas consultas no banco de dados, sendo o único comando utilizado em planilhas, gerador e nos cubos.
  • 39.
    CONSULTA SIMPLES EMUMA TABELASintaxe de uma consulta SQL:Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:
  • 40.
    INTERPRETANDO A GLINKSRELComoeu sei qual a ligação das tabelas?Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:
  • 41.
    INTERPRETANDO A GLINKSRELComoeu sei qual a ligação das tabelas?Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:
  • 42.
    INTERPRETANDO A GLINKSRELACHILDTABLE (TMOV – movimentos) herda os dados da tabela MASTERTABLE (FCFO – clientes/fornecedores), ou seja, no cadastro de um pedido é informado o código do cliente, e assim é feita a ligação destas duas tabelas.
  • 43.
    INTERPRETANDO A GLINKSRELVisualizandode uma outra forma.1º2º3ºFCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO = TMOV.CODCFO
  • 44.
    INTERPRETANDO A GLINKSRELNãoentendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA
  • 45.
    INTERPRETANDO A GLINKSRELNãoentendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO
  • 46.
    INTERPRETANDO A GLINKSRELNãoentendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO
  • 47.
    INTERPRETANDO A GLINKSRELNãoentendeu?Vamos no passo-a-passo!!!FCFO.CODCOLIGADA = TMOV.CODCOLCFO ANDFCFO.CODCFO = TMOV.CODCFO
  • 48.
    INTERPRETANDO A GLINKSRELExistemtabelas com mais de uma possibilidade de ligação, para estes casos, deve ser identificado qual a linha que contém a ligação correta.Quando um relatório não é feito por consulta SQL, mas é feito com “campos da base”, o sistema identifica as ligações entre as tabelas, e na ocorrência de mais de uma ligação, exige que o usuário selecione a ligação correta, para poder salvar o relatório.
  • 49.
    Ligando Tabelas /Inner JoinSintaxe de uma consulta SQL:SELECT [DISTINCT] <CAMPOS>FROM <TABELAS> <JOINS>WHERE <CONDIÇÕES>GROUP BY <CAMPOS>ORDER BY <CAMPOS>O comando SELECT é responsável pelas consultas no banco de dados, e no Corpore, pode ser utilizado no gerador de relatórios, planilhas, cubos, filtros com o operador in, e em fórmulas.Vale lembrar que:
  • 50.
    Ligando Tabelas /Inner JoinLigando tabelas pelo comando “WHERE”Ligando tabelas pelo comando “FROM”
  • 51.
    Ligando Tabelas /Inner JoinOutro exemplo mais complexo, ligando pelo comando “WHERE” e “FROM” respectivamente, uma tabela com chave composta.DICA: Mesmo que o cliente tenha apenas uma coligada, utilize as ligações da maneira correta, se a tabela usa chave composta, ligue os dois campos.
  • 52.
    Outer Join –Left / RightQuando você relaciona duas tabelas pelo Inner Join, o SGBD retorna registros das duas tabelas quando existe um relacionamento da tabela da esquerda com a tabela da direita. Porém existem situações onde você necessita que o SGBD retorne registros da tabela da esquerda, mesmo não contendo registro na tabela da direita que se iguale.Para solucionar este problema, existe o conceito de Outer Join, muito utilizado para ligar tabelas que contenha campos de preenchimento opcional, como os campos complementares.Abaixo um Outer Join escrito de maneira formal (relacionada pelo comando From)
  • 53.
    OuterJoin – Left/ RightAbaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER.Agora, o mesmo comando acima para SGBD ORACLE.
  • 54.
    OuterJoin – Left/ RightObserve a consulta abaixo, foi obtido o resultado dos identificadores 103, 105 e 118.Todos possuem relação entre item e o tributo.Porém os registros dos tributos, assim como outras tabelas, são criados somente quando ele existe, diferente de outras tabelas que criam o registro porém com alguns campos nulos.
  • 55.
    OuterJoin – Left/ RightNote que agora os identificadores 104, 106 e 108, foram inclusos.Isto deve-se ao outer join, que buscou todos os valores da tabela de itens do movimento, mesmo não existindo um registro que mantém relação na tabela de tributos.Este exemplo é para SQL Server, em Oracle basta substituir * por (+) .
  • 56.
    Consulta com váriastabelasEm grande parte das consultas SQL é utilizado mais de duas tabelas, e devido este nível de complexidade é comum utilizarmos diagramas para facilitar o entendimento dos relacionamentos, e facilitar no desenvolvimento da sentença SQL. Veja o exemplo abaixo:PFUNCPSECAOPCODSITUACAOPFUNCAO
  • 57.
    Consulta com váriastabelasPasso 1 - ligar a tabela PFUNC com a PSECAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
  • 58.
    Consulta com váriastabelasPasso 1 - ligar a tabela PFUNC com a PSECAO.SELECT *FROM PFUNC, PSECAOWHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGO
  • 59.
    Consulta com váriastabelasPasso 2 - ligar a tabela PFUNC com a PFUNCAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
  • 60.
    Consulta com váriastabelasPasso 2 - ligar a tabela PFUNC com a PFUNCAO.SELECT *FROM PFUNC, PSECAO, PFUNCAOWHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGO
  • 61.
    Consulta com váriastabelasPasso 3 - ligar a tabela PFUNC com a PCODSITUACAO.PFUNCPSECAOPCODSITUACAOPFUNCAO
  • 62.
    Consulta com váriastabelasPasso 3 - ligar a tabela PFUNC com a PCODSITUACAO.SELECT *FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
  • 63.
    Consulta com váriastabelasA mesma SQL escrita de maneira formal:SELECT *FROM PFUNCINNER JOIN PSECAO ON ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGO )INNER JOIN PFUNCAO ON ( PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGO )INNER JOIN PCODSITUACAO ON ( PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE )
  • 64.
    Consulta com váriastabelasNote queaté o momentotodosexemplos de SQL apresentadosutilizam no comando: SELECT *quesignifica; obtertodas as colunas de todas as tabelasenvolvidas.No entanto, se analisarmos, estecomandoretornaalgumascolunasdesnecessárias.Para solucionaresteproblema, obtendosomente as colunaquenosinteressabastaindicar a tabela e o nome do campo no padrãoTABELA.CAMPO, veja a diferença no exemploabaixo:
  • 65.
    Apelido de Tabela/ ColunaÉ possíveldiminuir a quantidade de “código” namontagem de umasentença SQL atribuindo um apelido a umatabela, tambémconhecidocomo alias. Após a criaçãodestes, bastautilizálo no lugar do nomedatabela. Compare estasduasconsultasabaixo do antes e o depois, respectivamente:SELECT PFUNC.CHAPA, PFUNC.NOME, PSECAO.DESCRICAO, PFUNCAO.NOME, PCODSITUACAO.DESCRICAOFROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTESELECT P.CHAPA, P.NOME, S.DESCRICAO, F.NOME, C.DESCRICAOFROM PFUNC P, PSECAO S, PFUNCAO F, PCODSITUACAO CWHEREP.CODCOLIGADA = S.CODCOLIGADAAND P.CODSECAO = S.CODIGOAND P.CODCOLIGADA = F.CODCOLIGADAAND P.CODFUNCAO = F.CODIGOAND P.CODSITUACAO = C.CODCLIENTE
  • 66.
    Apelido de Tabela/ ColunaTambém é possívelcriar um alias (apelido) paraumacoluna de maneirasemelhande a criação de alias paratabelas.SELECTPFUNC.CHAPA REGISTRO,PFUNC.NOME FUNCIONARIO,PSECAO.DESCRICAO SECAO,PFUNCAO.NOME FUNCAO,PCODSITUACAO.DESCRICAO SITUACAOFROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAOWHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADAAND PFUNC.CODSECAO = PSECAO.CODIGOAND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADAAND PFUNC.CODFUNCAO = PFUNCAO.CODIGOAND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
  • 67.
    Apelido de Tabela/ ColunaVejaabaixo o resultado de antes e depois, respectivamente:Observação:Estaprática é muitoutilizadaemsqlqueutilizamfunções, veremosadiante o quesignifcafunções.
  • 68.
    Filtros e ParâmetrosNofiltro, como o próprio nome sugere, serve para consultar informações no banco de dados, de forma que o resultado, seja apresentado eliminando dados.O exemplo abaixo, apresenta uma consulta simples; onde está sendo pesquisado funcionários com o salário inferior a 1000.
  • 69.
    Filtros e ParâmetrosValelembrarqueexistediferença entre as comparações:Salário inferior a 1000Salário inferior/inclusive 1000.Observação: Estascomparaçõessãochamadas “menor”, e “menorouigual” respectivamente.
  • 70.
    Filtros e ParâmetrosVejaabaixoo símboloquerepresentacadaoperador e comosãochamados, respectivamente:= Igual<> Diferente< Menor<= Menorouigual> Maior>= MaiorouigualLIKE Like, pesquisadentro do conteúdo de um campo alfanuméricoNOT LIKE esteretorna o quenãosatisfaz a condição Like.BETWEAN É usadoparacomparar um campo com um intervalor de valoresoudatas.IN In, serve paracomparar um campo com valores de umalista.NOT IN Este retorna o quenãosatisfaz a condição In.Veremosadianteosultimos 3 comandos “especiais” emmaiordetalhes.
  • 71.
    Filtros e ParâmetrosAprincípio o comando LIKE tem a mesmafunção do operadorigual; Porém, quandoutilizadoemconjunto do simbolo de percentual, é possívelpesquisardentro do conteúdo de um campo alfanumérico.
  • 72.
    Filtros e ParâmetrosNoexemploabaixomuitosemelhante a consulta anterior, pesquisadentro do campo de códigodaseção dos funcionários, umaseçãoqueinicia com “01”.
  • 73.
    Filtros e ParâmetrosOcomando LIKE tambémpesquisa no final, ou no campo todo, vejaosexemplos:
  • 74.
    Filtros e ParâmetrosOcomando NOT LIKE, inversoaocomando Like, pesquisaoscamposquenãocontém a ocorrência, tambémsendopossívelpesquisar no inicio, no fimouemtodo o campo.No exemploabaixoestásendopesquisadopessoasquenãocontém no nome a letra “E”.
  • 75.
    Filtros e ParâmetrosEmtodosfiltrosapresentadosanteriormente,foiutilizadoapenasumacondição. Podemos extender o número de condições, oucombinações de condiçõesnamesmasentença SQL, utilizandoosoperadoreslógico, abaixo:AND, equivalente a “E”, ondepara a condição ser verdadeira é necessáriosatisfazertodas as condições; exemplo: Funcionáriosativos “E” Saláriomenorque R$ 1.000,00.SELECT *FROM PFUNCWHERE CODSITUACAO = 'A' AND SALARIO < 1000OR, equivalente a “OU”, ondepara a condição ser verdadeira é necessáriosatisfazerapenasuma das condições; exemplo: Lançamentobaixado “OU” Código do clienteigual a F00001.SELECT CODCFO, STATUSLANFROM FLANWHERE STATUSLAN = '1' OR CODCFO = 'F00001'
  • 76.
    Filtros e ParâmetrosÉpossíveltambémcriarexpressõeslógica, similar as expressõesmatemática; veja o exemplo:Observe queosparenteses, servemparadefinir a prooridadedaexpressão.
  • 77.
    Filtros e ParâmetrosOsparâmetros, sãovariáveispreenchidaspelousuário no momentodaexecução das sentença SQL, estasvariáveissãoutilizadasnascondições de umaconsulta.A sintaxe de umavariavelparâmetro é: “:PARAMETRO_TIPO”.Os parâmetrostambémpossuemtipos, sendoeles:_D, esterefere-se a data._S, esterefere-se a caracteresalfanumérico._N, esterefere-se a númerosinteiros._V, esterefere-se a valoresdecimais.Veja, no exemploabaixo uma sentença SQL com 2 parâmetros.SELECT NOMEFROM PFUNCWHERE CODCOLIGADA = :CODCOLIGADA_N AND CHAPA = :CHAPA_S
  • 78.
    Comando BetweenO comandoBetween serve paracomparar um intervalo de valoresoudatas.Podendo ser utilizado no lugardacomumcomparação “campo >= inicio e campo <= fim”, veja o exemploabaixo:
  • 79.
    Subconsulta INO operadorIN, pode ser utilizadoparacomparar um campo a umalista de valores.Veja um exemplo simples abaixo:Atenção: o comando “OR”, chamado “OU”, é utilizado em expressões lógicas, que será visto com mais detalhes após alguns slides.
  • 80.
    Subconsulta INA subconsultaIN é compostadacomparação de um campo com umalista de valores, ondeestalista é “alimentada” peloresultado de umaconsulta. Veja o exemplo:
  • 81.
    Subconsulta AliasUm outrotipode subconsulta é a “subconsulta alias”, que resume-se emcriarumaconsulta SQL, atribuir um apelidoparaesta, e tratá-la como se fosse umatabelaouvisão; podendo inclusive relacionaresta com outrastabelas, ouatémesmo com outrassubconsultas.
  • 82.
  • 83.