TOTVS LINHA RM TREINAMENTO SQL

30.091 visualizações

Publicada em

TOTVS LINHA RM TREINAMENTO SQL

9 comentários
17 gostaram
Estatísticas
Notas
  • Excelente!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Bom dia, Fábio!
    poderia me enviar essa apostila ? tiago.uepa@gmail.com
    tem alguma coisa sobre como eu ver os relacionamentos das tabelas no banco, independente do banco ser da totvs ?
    Obrigado!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Na verdade a segunda parte não existe, era pra eu ter apagado este lance de parte 1 de 2... A parte 2 seria a de desenvolvimento de procedures e functions. []´s e Obrigado pessoal.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Muito Bom, teria como enviar a parte 2 - vinicius.tavares@qi.edu.br
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • amigo se possivel tem como você me enviar a segunda parte do treinamento??, estou trabalhando com o sistema e seria muito interessante estuda-lo. Meu email: gustavoabreu.ti@gmail.com
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
Sem downloads
Visualizações
Visualizações totais
30.091
No SlideShare
0
A partir de incorporações
0
Número de incorporações
30
Ações
Compartilhamentos
0
Downloads
1.517
Comentários
9
Gostaram
17
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

TOTVS LINHA RM TREINAMENTO SQL

  1. 1. TREINAMENTO DE SQL – PARTE 1 de 2.<br />ETAPAS:<br />Comando Distinct<br />Agrupando Dados<br />Funções<br />Matemática<br />String<br />Conversão<br />Funçõesde Agregação<br />ComandoHaving<br />Union e Union All<br />Ordenação<br />Comando Case When<br />ComandoRowNumdo Oracle<br />Conceitos de banco de dados<br />Sentença SQL<br />Dicionário de dados<br />Consulta simples em uma tabela<br />Interpretando a GLINKSREL<br />Ligando tabelas / Inner Join<br />Outher Join – Left / Right<br />Consulta com várias tabelas<br />Apelido de tabela / coluna<br />Filtros e parâmetros<br />Comando Between<br />Subconsulta In<br />Subconsulta Alias / Externa<br />
  2. 2. CONCEITOS DE BANCO DE DADOS<br />O que é um SGBD?<br />Sistema Gerenciador de Banco de Dados, é um conjunto de softwares que auxiliam no gerenciamento de um ou mais banco de dados.<br />Quais as vantagens de utilizar um SGBD?<br /><ul><li> Exclui da aplicação o papel de organizar os dados
  3. 3. Integra e organiza os dados em uma única base
  4. 4. Acelera e facilita o processo de manipulação dos dados</li></li></ul><li>CONCEITOS DE BANCO DE DADOS<br />O que um SGBD possui?<br /><ul><li> Instâncias
  5. 5. Banco de dados
  6. 6. Tabelas
  7. 7. Visões
  8. 8. Programação
  9. 9. Permissões
  10. 10. Linguagem SQL</li></ul>TAB1 TAB2 TAB3 TAB1 TAB1TAB1 TAB2 TAB3<br />BD1 BD2 BD3 BD4<br />SGBD<br />
  11. 11. CONCEITOS DE BANCO DE DADOS<br />TABELAS<br />Servem para armazenar dados semelhantes, e/ou categorizá-los, sendo constituída por linhas e colunas.<br /><ul><li> Uma coluna refere-se a um campo, também conhecido por atributo
  12. 12. Cada linha representa um registro, também conhecido por tupla</li></ul>Campos<br />Registros<br />ou Tuplas<br />
  13. 13. CONCEITOS DE BANCO DE DADOS<br />Os campos possuem diversos tipos sendo eles:<br /><ul><li> Numéricos (inteiro e decimal)
  14. 14. Alfabético
  15. 15. Data e hora
  16. 16. Arquivo (BLOB - Binary Large OBject)</li></ul>Uma tabela também possui chaves:<br /><ul><li> A chave primária indica unicidade, quando comparado aos demais registros da mesma tabela
  17. 17. A chave estrangeira é responsável por ligar uma tabela com outra pelo campo chave primária</li></ul>Esta 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.<br />
  18. 18. CONCEITOS DE BANCO DE DADOS<br />Exemplo de ligação de tabelas:<br />Chave primária<br />Chave estrangeira<br />
  19. 19. CONCEITOS DE BANCO DE DADOS<br />Como o RM controla diversas coligadas em um único banco de dados?<br />Nas tabelas que necessitam de um cadastro separado por coligada, é utilizado uma coluna para indicar a qual coligada o registro pertence.<br />
  20. 20. CONCEITOS DE BANCO DE DADOS<br />SQL - Linguagem de consulta estruturada<br /><ul><li> É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  21. 21. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  22. 22. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  23. 23. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  24. 24. Porém cada SGBD possui algumas particularidades/restrições</li></ul>SGBD<br />SQL<br />BD<br />
  25. 25. CONCEITOS DE BANCO DE DADOS<br />SQL - Linguagem de consulta estruturada<br /><ul><li> É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  26. 26. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  27. 27. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  28. 28. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  29. 29. Porém cada SGBD possui algumas particularidades/restrições</li></ul>SGBD<br />SQL<br />BD<br />
  30. 30. CONCEITOS DE BANCO DE DADOS<br />SQL - Linguagem de consulta estruturada<br /><ul><li> É uma linguagem responsável por fazer a interface entre a aplicação e o banco de dados.
  31. 31. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  32. 32. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  33. 33. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  34. 34. Porém cada SGBD possui algumas particularidades/restrições.</li></ul>SGBD<br />SQL<br />BD<br />
  35. 35. SENTENÇA SQL – DICIONÁRIO DE DADOS<br />Como eu sei qual o nome da tabela, ou o nome do campo que armazena<br />determinado dado?<br />A forma mais fácil é via aplicativo pressionando CTRL+SHIFT e posicionando o cursor sobre o campo, conforme o exemplo abaixo:<br />
  36. 36. SENTENÇA SQL – DICIONÁRIO DE DADOS<br />Para as novas telas desenvolvidas em .NET<br />Clicar com o direito no fundo da janela, e habilitar a opção “visualizar nome dos campos”, e posicionar o cursor sobre o campo.<br />
  37. 37. DICIONÁRIO DE DADOS<br />Outra 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.<br />
  38. 38. CONSULTA SIMPLES EM UMA TABELA<br />Sintaxe de uma consulta SQL:<br />O comando SELECT é responsável pelas consultas no banco de dados, sendo o único comando utilizado em planilhas, gerador e nos cubos.<br />
  39. 39. CONSULTA SIMPLES EM UMA TABELA<br />Sintaxe de uma consulta SQL:<br />Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:<br />
  40. 40. INTERPRETANDO A GLINKSREL<br />Como eu sei qual a ligação das tabelas?<br />Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:<br />
  41. 41. INTERPRETANDO A GLINKSREL<br />Como eu sei qual a ligação das tabelas?<br />Existe uma tabela chamada GLINKSREL que contém todas as tabelas e suas ligações, composta por apenas 4 colunas, conforme exemplo abaixo:<br />
  42. 42. INTERPRETANDO A GLINKSREL<br />A 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.<br />
  43. 43. INTERPRETANDO A GLINKSREL<br />Visualizando de uma outra forma.<br />1º<br />2º<br />3º<br />FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND<br />FCFO.CODCFO = TMOV.CODCFO<br />
  44. 44. INTERPRETANDO A GLINKSREL<br />Não entendeu?<br />Vamos no passo-a-passo!!!<br />FCFO.CODCOLIGADA<br />
  45. 45. INTERPRETANDO A GLINKSREL<br />Não entendeu?<br />Vamos no passo-a-passo!!!<br />FCFO.CODCOLIGADA = TMOV.CODCOLCFO<br />
  46. 46. INTERPRETANDO A GLINKSREL<br />Não entendeu?<br />Vamos no passo-a-passo!!!<br />FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND<br />FCFO.CODCFO<br />
  47. 47. INTERPRETANDO A GLINKSREL<br />Não entendeu?<br />Vamos no passo-a-passo!!!<br />FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND<br />FCFO.CODCFO = TMOV.CODCFO<br />
  48. 48. INTERPRETANDO A GLINKSREL<br />Existem 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.<br />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.<br />
  49. 49. Ligando Tabelas / Inner Join<br />Sintaxe de uma consulta SQL:<br />SELECT [DISTINCT] <CAMPOS><br />FROM <TABELAS> <JOINS><br />WHERE <CONDIÇÕES><br />GROUP BY <CAMPOS><br />ORDER BY <CAMPOS><br />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.<br />Vale lembrar que:<br />
  50. 50. Ligando Tabelas / Inner Join<br />Ligando tabelas pelo comando “WHERE”<br />Ligando tabelas pelo comando “FROM”<br />
  51. 51. Ligando Tabelas / Inner Join<br />Outro exemplo mais complexo, ligando pelo comando “WHERE” e “FROM” respectivamente, uma tabela com chave composta.<br />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.<br />
  52. 52. Outer Join – Left / Right<br />Quando 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.<br />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.<br />Abaixo um Outer Join escrito de maneira formal (relacionada pelo comando From)<br />
  53. 53. OuterJoin – Left / Right<br />Abaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER.<br />Agora, o mesmo comando acima para SGBD ORACLE.<br />
  54. 54. OuterJoin – Left / Right<br />Observe a consulta abaixo, foi obtido o resultado dos identificadores 103, 105 e 118.<br />Todos possuem relação entre item e o tributo.<br />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.<br />
  55. 55. OuterJoin – Left / Right<br />Note que agora os identificadores 104, 106 e 108, foram inclusos.<br />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.<br />Este exemplo é para SQL Server, em Oracle basta substituir * por (+) .<br />
  56. 56. Consulta com várias tabelas<br />Em 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:<br />PFUNC<br />PSECAO<br />PCODSITUACAO<br />PFUNCAO<br />
  57. 57. Consulta com várias tabelas<br />Passo 1 - ligar a tabela PFUNC com a PSECAO.<br />PFUNC<br />PSECAO<br />PCODSITUACAO<br />PFUNCAO<br />
  58. 58. Consulta com várias tabelas<br />Passo 1 - ligar a tabela PFUNC com a PSECAO.<br />SELECT *<br />FROM PFUNC, PSECAO<br />WHERE<br /> PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO<br />
  59. 59. Consulta com várias tabelas<br />Passo 2 - ligar a tabela PFUNC com a PFUNCAO.<br />PFUNC<br />PSECAO<br />PCODSITUACAO<br />PFUNCAO<br />
  60. 60. Consulta com várias tabelas<br />Passo 2 - ligar a tabela PFUNC com a PFUNCAO.<br />SELECT *<br />FROM PFUNC, PSECAO, PFUNCAO<br />WHERE<br /> PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO<br />AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA<br />AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO<br />
  61. 61. Consulta com várias tabelas<br />Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO.<br />PFUNC<br />PSECAO<br />PCODSITUACAO<br />PFUNCAO<br />
  62. 62. Consulta com várias tabelas<br />Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO.<br />SELECT *<br />FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO<br />WHERE<br /> PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO<br />AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA<br />AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO<br />AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE<br />
  63. 63. Consulta com várias tabelas<br />A mesma SQL escrita de maneira formal:<br />SELECT *<br />FROM PFUNC<br />INNER JOIN PSECAO ON<br /> ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO )<br />INNER JOIN PFUNCAO ON<br /> ( PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA<br />AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO )<br />INNER JOIN PCODSITUACAO ON<br /> ( PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE )<br />
  64. 64. Consulta com várias tabelas<br />Note queaté o momentotodosexemplos de SQL apresentadosutilizam no comando: SELECT *<br />quesignifica; obtertodas as colunas de todas as tabelasenvolvidas.<br />No entanto, se analisarmos, estecomandoretornaalgumascolunasdesnecessárias.<br />Para solucionaresteproblema, obtendosomente as colunaquenosinteressabastaindicar a <br />tabela e o nome do campo no padrãoTABELA.CAMPO, veja a diferença no exemploabaixo:<br />
  65. 65. Apelido de Tabela / Coluna<br />É 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:<br />SELECT PFUNC.CHAPA, PFUNC.NOME, PSECAO.DESCRICAO, PFUNCAO.NOME, PCODSITUACAO.DESCRICAO<br />FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO<br />WHERE<br /> PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO<br />AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA<br />AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO<br />AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE<br />SELECT P.CHAPA, P.NOME, S.DESCRICAO, F.NOME, C.DESCRICAO<br />FROM PFUNC P, PSECAO S, PFUNCAO F, PCODSITUACAO C<br />WHERE<br />P.CODCOLIGADA = S.CODCOLIGADA<br />AND P.CODSECAO = S.CODIGO<br />AND P.CODCOLIGADA = F.CODCOLIGADA<br />AND P.CODFUNCAO = F.CODIGO<br />AND P.CODSITUACAO = C.CODCLIENTE<br />
  66. 66. Apelido de Tabela / Coluna<br />Também é possívelcriar um alias (apelido) paraumacoluna de maneirasemelhande a criação de alias paratabelas.<br />SELECT<br />PFUNC.CHAPA REGISTRO,<br />PFUNC.NOME FUNCIONARIO,<br />PSECAO.DESCRICAO SECAO,<br />PFUNCAO.NOME FUNCAO,<br />PCODSITUACAO.DESCRICAO SITUACAO<br />FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO<br />WHERE<br /> PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA<br />AND PFUNC.CODSECAO = PSECAO.CODIGO<br />AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA<br />AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO<br />AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE<br />
  67. 67. Apelido de Tabela / Coluna<br />Vejaabaixo o resultado de antes e depois, respectivamente:<br />Observação:Estaprática é muitoutilizadaemsqlqueutilizamfunções, veremosadiante o quesignifcafunções.<br />
  68. 68. Filtros e Parâmetros<br />No 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.<br />O exemplo abaixo, apresenta uma consulta simples; onde está sendo pesquisado funcionários com o salário inferior a 1000.<br />
  69. 69. Filtros e Parâmetros<br />Vale lembrarqueexistediferença entre as comparações:<br />Salário inferior a 1000<br />Salário inferior/inclusive 1000.<br />Observação: Estascomparaçõessãochamadas “menor”, e “menorouigual” respectivamente.<br />
  70. 70. Filtros e Parâmetros<br />Vejaabaixo o símboloquerepresentacadaoperador e comosãochamados, respectivamente:<br />= Igual<br /><> Diferente<br />< Menor<br /><= Menorouigual<br />> Maior<br />>= Maiorouigual<br />LIKE Like, pesquisadentro do conteúdo de um campo alfanumérico<br />NOT LIKE esteretorna o quenãosatisfaz a condição Like.<br />BETWEAN É usadoparacomparar um campo com um intervalor de valoresoudatas.<br />IN In, serve paracomparar um campo com valores de umalista.<br />NOT IN Este retorna o quenãosatisfaz a condição In.<br />Veremosadianteosultimos 3 comandos “especiais” emmaiordetalhes.<br />
  71. 71. Filtros e Parâmetros<br />A 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.<br />
  72. 72. Filtros e Parâmetros<br />No exemploabaixomuitosemelhante a consulta anterior, pesquisadentro do campo de códigodaseção dos funcionários, umaseçãoqueinicia com “01”.<br />
  73. 73. Filtros e Parâmetros<br />O comando LIKE tambémpesquisa no final, ou no campo todo, vejaosexemplos:<br />
  74. 74. Filtros e Parâmetros<br />O comando NOT LIKE, inversoaocomando Like, pesquisaoscamposquenãocontém a ocorrência, tambémsendopossívelpesquisar no inicio, no fimouemtodo o campo.<br />No exemploabaixoestásendopesquisadopessoasquenãocontém no nome a letra “E”.<br />
  75. 75. Filtros e Parâmetros<br />Emtodosfiltrosapresentadosanteriormente, foiutilizadoapenasumacondição. Podemos extender o número de condições, oucombinações de condiçõesnamesmasentença SQL, utilizandoosoperadoreslógico, abaixo:<br />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.<br />SELECT *<br />FROM PFUNC<br />WHERE CODSITUACAO = 'A'<br /> AND SALARIO < 1000<br />OR, equivalente a “OU”, ondepara a condição ser verdadeira é necessáriosatisfazerapenasuma das condições; exemplo: Lançamentobaixado “OU” Código do clienteigual a F00001.<br />SELECT CODCFO, STATUSLAN<br />FROM FLAN<br />WHERE STATUSLAN = '1' OR CODCFO = 'F00001'<br />
  76. 76. Filtros e Parâmetros<br />É possíveltambémcriarexpressõeslógica, similar as expressõesmatemática; veja o exemplo:<br />Observe queosparenteses, servemparadefinir a prooridadedaexpressão.<br />
  77. 77. Filtros e Parâmetros<br />Os parâmetros, sãovariáveispreenchidaspelousuário no momentodaexecução das sentença SQL, estasvariáveissãoutilizadasnascondições de umaconsulta.<br />A sintaxe de umavariavelparâmetro é: “:PARAMETRO_TIPO”.<br />Os parâmetrostambémpossuemtipos, sendoeles:<br />_D, esterefere-se a data.<br />_S, esterefere-se a caracteresalfanumérico.<br />_N, esterefere-se a númerosinteiros.<br />_V, esterefere-se a valoresdecimais.<br />Veja, no exemploabaixo uma sentença SQL com 2 parâmetros.<br />SELECT NOME<br />FROM PFUNC<br />WHERE CODCOLIGADA = :CODCOLIGADA_N<br /> AND CHAPA = :CHAPA_S<br />
  78. 78. Comando Between<br />O comando Between serve paracomparar um intervalo de valoresoudatas.<br />Podendo ser utilizado no lugardacomumcomparação “campo >= inicio e campo <= fim”, veja o exemploabaixo:<br />
  79. 79. Subconsulta IN<br />O operador IN, pode ser utilizadoparacomparar um campo a umalista de valores.<br />Veja um exemplo simples abaixo:<br />Atenção: o comando “OR”, chamado “OU”, é utilizado em expressões lógicas, que será visto com mais detalhes após alguns slides.<br />
  80. 80. Subconsulta IN<br />A subconsulta IN é compostadacomparação de um campo com umalista de valores, ondeestalista é “alimentada” peloresultado de umaconsulta. Veja o exemplo:<br />
  81. 81. Subconsulta Alias<br />Um 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.<br />
  82. 82. SubconsultaExterna<br />Tambémconhecidacomo “ColunaSubconsulta”, consisteemexecutarumaconsultaemumacolunadavisão, ondenestasubconsultautilizaparâmetrosdaconsultaexterna.<br />Vejamos 2 exemplos:<br />
  83. 83. SubconsultaExterna<br />
  84. 84. Comando Distinct<br />O comando Distinct serve paraevitarrepetição de dados, eliminando as redundâncias.<br />Vejaosexemplos:<br />
  85. 85. Agrupando dados – Group By<br />A princípio o comando “Group By” tambémelimina a repetição de dados como o comando Distinct.<br />
  86. 86. Funções - Matemáticas<br />
  87. 87. Funções - String<br />
  88. 88. Funções - String<br />
  89. 89. Funções – Data e Hora<br />
  90. 90. Funções – Data e Hora<br />
  91. 91. Funções – Data e Hora<br />
  92. 92. Funções - Conversão<br />SQL SERVER<br /><ul><li>CAST</li></ul>- CONVERT<br />ORACLE<br /><ul><li>TO_CHAR(CAMPO)
  93. 93. TO_DATE(STRING,</li></ul> FORMATAÇÃO)<br />
  94. 94. Funções - Conversão<br /> SQL SERVER<br />
  95. 95. Funções - Conversão<br />
  96. 96. Funções - Conversão<br />
  97. 97. Funções de Agregação<br />
  98. 98. Comando Having<br /> Sem o Having Com o Having<br />
  99. 99. Union e Union All<br /> Union Union All<br />
  100. 100. Ordenação – Order By<br />O comando order by serve paraordenar o resultado.<br />
  101. 101. Ordenação – Order By<br />Observe abaixo, um exemplo de ordenaçãodecrescente, utilizando o comando “DESC”.<br />Porpadrão a ordenação é a crescente, e esteutilizado de forma implícita o comando “ASC” de ordenaçãoacendente.<br />
  102. 102. Ordenação – Order By<br />Nesteexemploaoinvéz de ser utilizado o nomedacolunas, estásendoutilizado o númeroidentificadordacoluna.<br />
  103. 103. Comando Case When<br />O comando “CASE” é utilizadopararealizar testes no resultado de umacoluna.<br />É obrigatórioumarespostacaso a condiçãosejaverdadeira.<br />
  104. 104. Comando Case When<br />Nesteexemplofoiacrescentado o comando “ELSE”, este é responsávelpelotratamentodacolunacaso a condiçãonãosejaverdadeira.<br />
  105. 105. Comando Case When<br />A SQL aolado, utilizadentro do resultado de um case, outrosegundocomando case.<br />Estadinâmicapossibilita um tratamenteespecíficoparacadacondiçãoquefizer-se necessária.<br />
  106. 106. Comando Case When<br />Emmuitassituaçõespodemosdiminuir a linha de códigos SQL, abrindo um bloco “CASE”, e realizandotodos testes com o comando “WHEN”, e por ultimo fechar o bloco com o comando “END”.<br />E novamente o “ELSE”, simbolizando o comandosenão, queconsisteementrarnacondíçãoquando a memanão for verdadeira.<br />
  107. 107. ComandoRowNum do Oracle<br />O comandoRowNum do Oracle , é utilizadocomoumavariável, e serve parafazer com queumacolunasimbólica, sejacomoumacoluna de dados.<br />É comumutilizarmosestavariávelparaposteriormentefazermos um filtroporfaixa de registros, veja o exemplo:<br />SELECT SALARIO<br />FROM PFUNC<br />WHERE ROWNUM = 3<br />ORDER BY SALARIO DESC<br />Quandonecessitamos de fazer o mesmofiltro, no SQL Server utilizamosumaoutratécnica, veja:<br />SELECT TOP 1 SALARIO FROM(<br />SELECT TOP 3 SALARIO<br />FROM PFUNC<br />ORDER BY SALARIO DESC<br />)T<br />ORDER BY SALARIO<br />
  108. 108. Alguns comparativos:<br />

×