SlideShare uma empresa Scribd logo
1 de 83
TREINAMENTO DE SQL – PARTE 1 de 2. ETAPAS: Comando Distinct Agrupando Dados Funções Matemática String Conversão Funçõesde Agregação ComandoHaving Union e Union All Ordenação Comando Case When ComandoRowNumdo Oracle Conceitos de banco de dados Sentença SQL Dicionário de dados Consulta simples em uma tabela Interpretando a GLINKSREL Ligando tabelas / Inner Join Outher Join – Left / Right Consulta com várias tabelas Apelido de tabela / coluna Filtros e parâmetros Comando Between Subconsulta In Subconsulta Alias / Externa
CONCEITOS DE BANCO DE DADOS O 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? ,[object Object]
  Integra e organiza os dados em uma única base
  Acelera e facilita o processo de manipulação dos dados,[object Object]
  Banco de dados
  Tabelas
  Visões
  Programação
  Permissões
  Linguagem SQLTAB1   TAB2   TAB3            TAB1           TAB1TAB1   TAB2   TAB3 BD1                BD2          BD3                  BD4 SGBD
CONCEITOS DE BANCO DE DADOS TABELAS Servem para armazenar dados semelhantes, e/ou categorizá-los, sendo constituída por linhas e colunas. ,[object Object]
  Cada linha representa um registro, também conhecido por tuplaCampos Registros ou Tuplas
CONCEITOS DE BANCO DE DADOS Os campos possuem diversos tipos sendo eles: ,[object Object]
  Alfabético
  Data e hora
  Arquivo (BLOB - Binary Large OBject)Uma tabela também possui chaves: ,[object Object]
  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 DADOS Exemplo de ligação de tabelas: Chave primária Chave estrangeira
CONCEITOS DE BANCO DE DADOS Como 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 DADOS SQL - Linguagem de consulta estruturada ,[object Object]
  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çõesSGBD SQL BD
CONCEITOS DE BANCO DE DADOS SQL - Linguagem de consulta estruturada ,[object Object]
  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çõesSGBD SQL BD
CONCEITOS DE BANCO DE DADOS SQL - Linguagem de consulta estruturada ,[object Object]
  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.SGBD SQL BD
SENTENÇA SQL – DICIONÁRIO DE DADOS Como eu sei qual o nome da tabela, ou o nome do campo que armazena determinado 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 DADOS Para as novas telas desenvolvidas em .NET Clicar 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 DADOS 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.
CONSULTA SIMPLES EM UMA TABELA Sintaxe 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 TABELA Sintaxe de uma consulta SQL: Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:
INTERPRETANDO A GLINKSREL Como 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 GLINKSREL Como 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 GLINKSREL 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.
INTERPRETANDO A GLINKSREL Visualizando de uma outra forma. 1º 2º 3º FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO
INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA
INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO
INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO
INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO
INTERPRETANDO A GLINKSREL 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. 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 Join Sintaxe 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 Join Ligando tabelas pelo comando “WHERE” Ligando tabelas pelo comando “FROM”
Ligando Tabelas / Inner Join Outro 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 / Right 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. 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 / Right Abaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER. Agora, o mesmo comando acima para SGBD ORACLE.
OuterJoin – Left / Right Observe 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 / Right Note 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 tabelas 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: PFUNC PSECAO PCODSITUACAO PFUNCAO
Consulta com várias tabelas Passo 1 - ligar a tabela PFUNC com a PSECAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
Consulta com várias tabelas Passo 1 - ligar a tabela PFUNC com a PSECAO. SELECT * FROM PFUNC, PSECAO WHERE          PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO
Consulta com várias tabelas Passo 2 - ligar a tabela PFUNC com a PFUNCAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
Consulta com várias tabelas Passo 2 - ligar a tabela PFUNC com a PFUNCAO. SELECT * FROM PFUNC, PSECAO, PFUNCAO WHERE          PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO
Consulta com várias tabelas Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
Consulta com várias tabelas Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO. SELECT * FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE          PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
Consulta com várias tabelas A  mesma SQL escrita de maneira formal: SELECT * FROM PFUNC INNER JOIN PSECAO ON       ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO ) INNER JOIN PFUNCAO ON       ( PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO ) INNER JOIN PCODSITUACAO ON       ( PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE )
Consulta com várias tabelas Note 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.DESCRICAO FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE          PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE SELECT P.CHAPA, P.NOME, S.DESCRICAO, F.NOME, C.DESCRICAO FROM PFUNC P, PSECAO S, PFUNCAO F, PCODSITUACAO C WHERE P.CODCOLIGADA = S.CODCOLIGADA AND P.CODSECAO = S.CODIGO AND P.CODCOLIGADA = F.CODCOLIGADA AND P.CODFUNCAO = F.CODIGO AND P.CODSITUACAO = C.CODCLIENTE
Apelido de Tabela / Coluna Também é possívelcriar um alias (apelido) paraumacoluna de maneirasemelhande a criação de alias paratabelas. SELECT PFUNC.CHAPA REGISTRO, PFUNC.NOME FUNCIONARIO, PSECAO.DESCRICAO SECAO, PFUNCAO.NOME FUNCAO, PCODSITUACAO.DESCRICAO SITUACAO FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE          PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
Apelido de Tabela / Coluna Vejaabaixo o resultado de antes e depois, respectivamente: Observação:Estaprática é muitoutilizadaemsqlqueutilizamfunções, veremosadiante o quesignifcafunções.
Filtros e Parâmetros 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. O exemplo abaixo, apresenta uma consulta simples; onde está sendo pesquisado funcionários com o salário inferior a 1000.
Filtros e Parâmetros Vale lembrarqueexistediferença entre as comparações: Salário inferior a 1000 Salário inferior/inclusive 1000. Observação: Estascomparaçõessãochamadas “menor”, e “menorouigual” respectivamente.
Filtros e Parâmetros Vejaabaixo o símboloquerepresentacadaoperador e comosãochamados, respectivamente: =     	Igual <> 	Diferente <	Menor <=	Menorouigual >	Maior >=	Maiorouigual LIKE	Like, pesquisadentro do conteúdo de um campo alfanumérico NOT 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âmetros 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.
Filtros e Parâmetros No exemploabaixomuitosemelhante a consulta anterior, pesquisadentro do campo de códigodaseção dos funcionários, umaseçãoqueinicia com “01”.
Filtros e Parâmetros O comando LIKE tambémpesquisa no final, ou no campo todo, vejaosexemplos:
Filtros e Parâmetros O 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âmetros Emtodosfiltrosapresentadosanteriormente, 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 PFUNC WHERE CODSITUACAO = 'A'        AND SALARIO < 1000 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. SELECT CODCFO, STATUSLAN FROM FLAN WHERE 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âmetros Os 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 NOME FROM PFUNC WHERE CODCOLIGADA = :CODCOLIGADA_N       AND CHAPA = :CHAPA_S
Comando Between O comando Between serve paracomparar um intervalo de valoresoudatas. Podendo ser utilizado no lugardacomumcomparação “campo >= inicio e campo <= fim”, veja o exemploabaixo:
Subconsulta IN O 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 IN A subconsulta IN é compostadacomparação de um campo com umalista de valores, ondeestalista é “alimentada” peloresultado de umaconsulta. Veja o exemplo:
Subconsulta Alias 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.
SubconsultaExterna Tambémconhecidacomo “ColunaSubconsulta”, consisteemexecutarumaconsultaemumacolunadavisão, ondenestasubconsultautilizaparâmetrosdaconsultaexterna. Vejamos 2 exemplos:
SubconsultaExterna

Mais conteúdo relacionado

Mais procurados

Lançamento TOTVS V12 Linha RM - RH
Lançamento TOTVS V12 Linha RM - RHLançamento TOTVS V12 Linha RM - RH
Lançamento TOTVS V12 Linha RM - RHRafael Pinheiro
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - BásicoAirton Zanon
 
Banco de Dados II: Tabelas (aula 2)
Banco de Dados II: Tabelas (aula 2)Banco de Dados II: Tabelas (aula 2)
Banco de Dados II: Tabelas (aula 2)Gustavo Zimmermann
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basicoAmadeo Santos
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de DadosDaniel Brandão
 
SQL Server Learning Drive
SQL Server Learning Drive SQL Server Learning Drive
SQL Server Learning Drive TechandMate
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Leinylson Fontinele
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Gustavo Zimmermann
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: AdapterMessias Batista
 
Sistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPCSistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPCAdriano Teixeira de Souza
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoLuis Ferreira
 

Mais procurados (20)

Aula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCLAula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCL
 
Lançamento TOTVS V12 Linha RM - RH
Lançamento TOTVS V12 Linha RM - RHLançamento TOTVS V12 Linha RM - RH
Lançamento TOTVS V12 Linha RM - RH
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - Básico
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Construção de fórmula visual rm totvs
Construção de fórmula visual rm totvsConstrução de fórmula visual rm totvs
Construção de fórmula visual rm totvs
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Banco de Dados II: Tabelas (aula 2)
Banco de Dados II: Tabelas (aula 2)Banco de Dados II: Tabelas (aula 2)
Banco de Dados II: Tabelas (aula 2)
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Plano de Ensino - Bando de Dados
Plano de Ensino - Bando de DadosPlano de Ensino - Bando de Dados
Plano de Ensino - Bando de Dados
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basico
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de Dados
 
SQL Server Learning Drive
SQL Server Learning Drive SQL Server Learning Drive
SQL Server Learning Drive
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
 
Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)Banco de Dados II: MER (aula 1)
Banco de Dados II: MER (aula 1)
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 
Sistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPCSistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPC
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informação
 

Destaque

Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Feliz Bunguele
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#André Luiz
 
Visão geral da segurança em Java EE
Visão geral da segurança em Java EEVisão geral da segurança em Java EE
Visão geral da segurança em Java EEHelder da Rocha
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Helder da Rocha
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001leojr_0
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Vinicius Vieira
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.netFernando Helen
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0leojr_0
 

Destaque (20)

Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
Visão geral da segurança em Java EE
Visão geral da segurança em Java EEVisão geral da segurança em Java EE
Visão geral da segurança em Java EE
 
Apostila php
Apostila phpApostila php
Apostila php
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001
 
Curso de xml
Curso de xmlCurso de xml
Curso de xml
 
Curso asp - intermediario
Curso   asp - intermediarioCurso   asp - intermediario
Curso asp - intermediario
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0
 

Semelhante a TOTVS LINHA RM TREINAMENTO SQL

Semelhante a TOTVS LINHA RM TREINAMENTO SQL (20)

Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Sql
SqlSql
Sql
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Banco de Dados.pptx
Banco de Dados.pptxBanco de Dados.pptx
Banco de Dados.pptx
 
Banco dados lj
Banco dados ljBanco dados lj
Banco dados lj
 
SQL Iniciantes: Tutorial Básico para você!
SQL Iniciantes: Tutorial Básico para você!SQL Iniciantes: Tutorial Básico para você!
SQL Iniciantes: Tutorial Básico para você!
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptx
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Db2
Db2Db2
Db2
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 

Mais de Fábio Delboni

Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5
Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5
Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5Fábio Delboni
 
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012Fábio Delboni
 
3 como enviar projetos para o svn pelo tortoise
3   como enviar projetos para o svn pelo tortoise3   como enviar projetos para o svn pelo tortoise
3 como enviar projetos para o svn pelo tortoiseFábio Delboni
 
2 como baixar projetos pelo tortoise svn
2   como baixar projetos pelo tortoise svn2   como baixar projetos pelo tortoise svn
2 como baixar projetos pelo tortoise svnFábio Delboni
 
Solução cubo rubik 3x3x3 resolvendo cubo mágico
Solução cubo rubik 3x3x3 resolvendo cubo mágicoSolução cubo rubik 3x3x3 resolvendo cubo mágico
Solução cubo rubik 3x3x3 resolvendo cubo mágicoFábio Delboni
 

Mais de Fábio Delboni (6)

Workshop totvs report
Workshop totvs reportWorkshop totvs report
Workshop totvs report
 
Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5
Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5
Instalação do Oracle 10g r2 for Red Hat AS Enterprise Linux 4 update 5
 
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012
Fórmula Visual - TOTVS IP - Fábio Delboni - 07/2012
 
3 como enviar projetos para o svn pelo tortoise
3   como enviar projetos para o svn pelo tortoise3   como enviar projetos para o svn pelo tortoise
3 como enviar projetos para o svn pelo tortoise
 
2 como baixar projetos pelo tortoise svn
2   como baixar projetos pelo tortoise svn2   como baixar projetos pelo tortoise svn
2 como baixar projetos pelo tortoise svn
 
Solução cubo rubik 3x3x3 resolvendo cubo mágico
Solução cubo rubik 3x3x3 resolvendo cubo mágicoSolução cubo rubik 3x3x3 resolvendo cubo mágico
Solução cubo rubik 3x3x3 resolvendo cubo mágico
 

TOTVS LINHA RM TREINAMENTO SQL

  • 1. TREINAMENTO DE SQL – PARTE 1 de 2. ETAPAS: Comando Distinct Agrupando Dados Funções Matemática String Conversão Funçõesde Agregação ComandoHaving Union e Union All Ordenação Comando Case When ComandoRowNumdo Oracle Conceitos de banco de dados Sentença SQL Dicionário de dados Consulta simples em uma tabela Interpretando a GLINKSREL Ligando tabelas / Inner Join Outher Join – Left / Right Consulta com várias tabelas Apelido de tabela / coluna Filtros e parâmetros Comando Between Subconsulta In Subconsulta Alias / Externa
  • 2.
  • 3. Integra e organiza os dados em uma única base
  • 4.
  • 5. Banco de dados
  • 10. Linguagem SQLTAB1 TAB2 TAB3 TAB1 TAB1TAB1 TAB2 TAB3 BD1 BD2 BD3 BD4 SGBD
  • 11.
  • 12. Cada linha representa um registro, também conhecido por tuplaCampos Registros ou Tuplas
  • 13.
  • 15. Data e hora
  • 16.
  • 17. 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.
  • 18. CONCEITOS DE BANCO DE DADOS Exemplo de ligação de tabelas: Chave primária Chave estrangeira
  • 19. CONCEITOS DE BANCO DE DADOS Como 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.
  • 21. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 22. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  • 23. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 24. Porém cada SGBD possui algumas particularidades/restriçõesSGBD SQL BD
  • 25.
  • 26. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 27. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  • 28. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 29. Porém cada SGBD possui algumas particularidades/restriçõesSGBD SQL BD
  • 30.
  • 31. Através dela é possível inserir, editar, consultar e excluir dados das tabelas.
  • 32. A Linguagem SQL está presente em todos SGBD existentes no mercado.
  • 33. Ela segue um padrão de escrita (comum) utilizado por todos fabricantes.
  • 34. Porém cada SGBD possui algumas particularidades/restrições.SGBD SQL BD
  • 35. SENTENÇA SQL – DICIONÁRIO DE DADOS Como eu sei qual o nome da tabela, ou o nome do campo que armazena determinado 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 DADOS Para as novas telas desenvolvidas em .NET Clicar 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 DADOS 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.
  • 38. CONSULTA SIMPLES EM UMA TABELA Sintaxe 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 EM UMA TABELA Sintaxe de uma consulta SQL: Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:
  • 40. INTERPRETANDO A GLINKSREL Como 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:
  • 41. INTERPRETANDO A GLINKSREL Como 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:
  • 42. INTERPRETANDO A GLINKSREL 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.
  • 43. INTERPRETANDO A GLINKSREL Visualizando de uma outra forma. 1º 2º 3º FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO
  • 44. INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA
  • 45. INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO
  • 46. INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO
  • 47. INTERPRETANDO A GLINKSREL Não entendeu? Vamos no passo-a-passo!!! FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO
  • 48. INTERPRETANDO A GLINKSREL 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. 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 Join Sintaxe 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 Join Ligando tabelas pelo comando “WHERE” Ligando tabelas pelo comando “FROM”
  • 51. Ligando Tabelas / Inner Join Outro 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 / Right 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. 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 / Right Abaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER. Agora, o mesmo comando acima para SGBD ORACLE.
  • 54. OuterJoin – Left / Right Observe 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 / Right Note 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árias tabelas 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: PFUNC PSECAO PCODSITUACAO PFUNCAO
  • 57. Consulta com várias tabelas Passo 1 - ligar a tabela PFUNC com a PSECAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
  • 58. Consulta com várias tabelas Passo 1 - ligar a tabela PFUNC com a PSECAO. SELECT * FROM PFUNC, PSECAO WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO
  • 59. Consulta com várias tabelas Passo 2 - ligar a tabela PFUNC com a PFUNCAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
  • 60. Consulta com várias tabelas Passo 2 - ligar a tabela PFUNC com a PFUNCAO. SELECT * FROM PFUNC, PSECAO, PFUNCAO WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO
  • 61. Consulta com várias tabelas Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO. PFUNC PSECAO PCODSITUACAO PFUNCAO
  • 62. Consulta com várias tabelas Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO. SELECT * FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
  • 63. Consulta com várias tabelas A mesma SQL escrita de maneira formal: SELECT * FROM PFUNC INNER JOIN PSECAO ON ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO ) INNER JOIN PFUNCAO ON ( PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO ) INNER JOIN PCODSITUACAO ON ( PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE )
  • 64. Consulta com várias tabelas Note 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.DESCRICAO FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE SELECT P.CHAPA, P.NOME, S.DESCRICAO, F.NOME, C.DESCRICAO FROM PFUNC P, PSECAO S, PFUNCAO F, PCODSITUACAO C WHERE P.CODCOLIGADA = S.CODCOLIGADA AND P.CODSECAO = S.CODIGO AND P.CODCOLIGADA = F.CODCOLIGADA AND P.CODFUNCAO = F.CODIGO AND P.CODSITUACAO = C.CODCLIENTE
  • 66. Apelido de Tabela / Coluna Também é possívelcriar um alias (apelido) paraumacoluna de maneirasemelhande a criação de alias paratabelas. SELECT PFUNC.CHAPA REGISTRO, PFUNC.NOME FUNCIONARIO, PSECAO.DESCRICAO SECAO, PFUNCAO.NOME FUNCAO, PCODSITUACAO.DESCRICAO SITUACAO FROM PFUNC, PSECAO, PFUNCAO, PCODSITUACAO WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO AND PFUNC.CODSITUACAO = PCODSITUACAO.CODCLIENTE
  • 67. Apelido de Tabela / Coluna Vejaabaixo o resultado de antes e depois, respectivamente: Observação:Estaprática é muitoutilizadaemsqlqueutilizamfunções, veremosadiante o quesignifcafunções.
  • 68. Filtros e Parâmetros 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. O exemplo abaixo, apresenta uma consulta simples; onde está sendo pesquisado funcionários com o salário inferior a 1000.
  • 69. Filtros e Parâmetros Vale lembrarqueexistediferença entre as comparações: Salário inferior a 1000 Salário inferior/inclusive 1000. Observação: Estascomparaçõessãochamadas “menor”, e “menorouigual” respectivamente.
  • 70. Filtros e Parâmetros Vejaabaixo o símboloquerepresentacadaoperador e comosãochamados, respectivamente: = Igual <> Diferente < Menor <= Menorouigual > Maior >= Maiorouigual LIKE Like, pesquisadentro do conteúdo de um campo alfanumérico NOT 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âmetros 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.
  • 72. Filtros e Parâmetros No exemploabaixomuitosemelhante a consulta anterior, pesquisadentro do campo de códigodaseção dos funcionários, umaseçãoqueinicia com “01”.
  • 73. Filtros e Parâmetros O comando LIKE tambémpesquisa no final, ou no campo todo, vejaosexemplos:
  • 74. Filtros e Parâmetros O 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”.
  • 75. Filtros e Parâmetros Emtodosfiltrosapresentadosanteriormente, 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 PFUNC WHERE CODSITUACAO = 'A' AND SALARIO < 1000 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. SELECT CODCFO, STATUSLAN FROM FLAN WHERE 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âmetros Os 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 NOME FROM PFUNC WHERE CODCOLIGADA = :CODCOLIGADA_N AND CHAPA = :CHAPA_S
  • 78. Comando Between O comando Between serve paracomparar um intervalo de valoresoudatas. Podendo ser utilizado no lugardacomumcomparação “campo >= inicio e campo <= fim”, veja o exemploabaixo:
  • 79. Subconsulta IN O 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.
  • 80. Subconsulta IN A subconsulta IN é compostadacomparação de um campo com umalista de valores, ondeestalista é “alimentada” peloresultado de umaconsulta. Veja o exemplo:
  • 81. Subconsulta Alias 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.
  • 82. SubconsultaExterna Tambémconhecidacomo “ColunaSubconsulta”, consisteemexecutarumaconsultaemumacolunadavisão, ondenestasubconsultautilizaparâmetrosdaconsultaexterna. Vejamos 2 exemplos:
  • 84. Comando Distinct O comando Distinct serve paraevitarrepetição de dados, eliminando as redundâncias. Vejaosexemplos:
  • 85. Agrupando dados – Group By A princípio o comando “Group By” tambémelimina a repetição de dados como o comando Distinct.
  • 92.
  • 93. TO_DATE(STRING, FORMATAÇÃO)
  • 98. Comando Having Sem o Having Com o Having
  • 99. Union e Union All Union Union All
  • 100. Ordenação – Order By O comando order by serve paraordenar o resultado.
  • 101. Ordenação – Order By Observe abaixo, um exemplo de ordenaçãodecrescente, utilizando o comando “DESC”. Porpadrão a ordenação é a crescente, e esteutilizado de forma implícita o comando “ASC” de ordenaçãoacendente.
  • 102. Ordenação – Order By Nesteexemploaoinvéz de ser utilizado o nomedacolunas, estásendoutilizado o númeroidentificadordacoluna.
  • 103. Comando Case When O comando “CASE” é utilizadopararealizar testes no resultado de umacoluna. É obrigatórioumarespostacaso a condiçãosejaverdadeira.
  • 104. Comando Case When Nesteexemplofoiacrescentado o comando “ELSE”, este é responsávelpelotratamentodacolunacaso a condiçãonãosejaverdadeira.
  • 105. Comando Case When A SQL aolado, utilizadentro do resultado de um case, outrosegundocomando case. Estadinâmicapossibilita um tratamenteespecíficoparacadacondiçãoquefizer-se necessária.
  • 106. Comando Case When 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”. E novamente o “ELSE”, simbolizando o comandosenão, queconsisteementrarnacondíçãoquando a memanão for verdadeira.
  • 107. ComandoRowNum do Oracle O comandoRowNum do Oracle , é utilizadocomoumavariável, e serve parafazer com queumacolunasimbólica, sejacomoumacoluna de dados. É comumutilizarmosestavariávelparaposteriormentefazermos um filtroporfaixa de registros, veja o exemplo: SELECT SALARIO FROM PFUNC WHERE ROWNUM = 3 ORDER BY SALARIO DESC Quandonecessitamos de fazer o mesmofiltro, no SQL Server utilizamosumaoutratécnica, veja: SELECT TOP 1 SALARIO FROM( SELECT TOP 3 SALARIO FROM PFUNC ORDER BY SALARIO DESC )T ORDER BY SALARIO