Você está na página 1de 83

TREINAMENTO DE SQL – PARTE 1 de 2.

ETAPAS:
1) Conceitos de banco de dados
2) Sentença SQL 12) Comando Distinct
1) Dicionário de dados 13) Agrupando Dados
2) Consulta simples em uma tabela 14) Funções
3) Interpretando a GLINKSREL 1) Matemática
4) Ligando tabelas / Inner Join 2) String
5) Outher Join – Left / Right 3) Conversão
6) Consulta com várias tabelas 15) Funções de Agregação
7) Apelido de tabela / coluna 16) Comando Having
8) Filtros e parâmetros 17) Union e Union All
9) Comando Between 18) Ordenação
10) Subconsulta In 19) Comando Case When
11) Subconsulta Alias / Externa 20) Comando RowNum do Oracle

Fábio Delboni - fabio.delboni@totvs.com.br


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?

• 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 dados

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

O que um SGBD possui?


• Instâncias
• Banco de dados
• Tabelas
• Visões
• Programação
• Permissões
• Linguagem SQL

TAB1 TAB2 TAB3 TAB1 TAB1 TAB1 TAB2 TAB3

BD1 BD2 BD3 BD4

SGBD

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

TABELAS

Servem 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 tupla

Campos

Registros
ou Tuplas

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

Os 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ária

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.

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

Exemplo de ligação de tabelas:

Chave primária

Chave estrangeira

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

SQL - 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

SGBD

SQL

BD

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

SQL - 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

SGBD

SQL

BD

Fábio Delboni - fabio.delboni@totvs.com.br


CONCEITOS DE BANCO DE DADOS

SQL - 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.

SGBD

SQL

BD

Fábio Delboni - fabio.delboni@totvs.com.br


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:

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


CONSULTA SIMPLES EM UMA TABELA

Sintaxe de uma consulta SQL:

Agora um exemplo de SELECT, buscando apenas algumas colunas específicas:

Fábio Delboni - fabio.delboni@totvs.com.br


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:

Fábio Delboni - fabio.delboni@totvs.com.br


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:

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


INTERPRETANDO A GLINKSREL

Visualizando de uma outra forma.


MASTERTABLE CHILDTABLE MASTERFIELD CHILDFIELD
FCFO TMOV CODCOLIGADA, CODCFO CODCOLCFO, CODCFO


MASTERTABLE.MASTERFIELD CHILDTABLE.CHILDFIELD
FCFO.CODCOLIGADA, FCFO.CODCFO TMOV.CODCOLCFO, TMOV.CODCFO


FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND
FCFO.CODCFO = TMOV.CODCFO

Fábio Delboni - fabio.delboni@totvs.com.br


INTERPRETANDO A GLINKSREL

Não entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA

Fábio Delboni - fabio.delboni@totvs.com.br


INTERPRETANDO A GLINKSREL

Não entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO

Fábio Delboni - fabio.delboni@totvs.com.br


INTERPRETANDO A GLINKSREL

Não entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND


FCFO.CODCFO

Fábio Delboni - fabio.delboni@totvs.com.br


INTERPRETANDO A GLINKSREL

Não entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND


FCFO.CODCFO = TMOV.CODCFO

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


Ligando Tabelas / Inner Join

Sintaxe de uma consulta SQL:

SELECT [DISTINCT] <CAMPOS>


FROM <TABELAS> <JOINS>
WHERE <CONDIÇÕES>
GROUP BY <CAMPOS>
ORDER BY <CAMPOS>

Vale lembrar que:

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.

Fábio Delboni - fabio.delboni@totvs.com.br


Ligando Tabelas / Inner Join

Ligando tabelas pelo comando “WHERE”

Ligando tabelas pelo comando “FROM”

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


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)

Fábio Delboni - fabio.delboni@totvs.com.br


Outer Join – Left / Right

Abaixo o mesmo Outer Join, relacionando tabelas pelo Where para SGBD SQL SERVER.

Agora, o mesmo comando acima para SGBD ORACLE.

Fábio Delboni - fabio.delboni@totvs.com.br


Outer Join – 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.

Fábio Delboni - fabio.delboni@totvs.com.br


Outer Join – 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 (+) .

Fábio Delboni - fabio.delboni@totvs.com.br


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

Fábio Delboni - fabio.delboni@totvs.com.br


Consulta com várias tabelas

Passo 1 - ligar a tabela PFUNC com a PSECAO.

PFUNC

PSECAO PCODSITUACAO

PFUNCAO

Fábio Delboni - fabio.delboni@totvs.com.br


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

Fábio Delboni - fabio.delboni@totvs.com.br


Consulta com várias tabelas

Passo 2 - ligar a tabela PFUNC com a PFUNCAO.

PFUNC

PSECAO PCODSITUACAO

PFUNCAO

Fábio Delboni - fabio.delboni@totvs.com.br


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

Fábio Delboni - fabio.delboni@totvs.com.br


Consulta com várias tabelas

Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO.

PFUNC

PSECAO PCODSITUACAO

PFUNCAO

Fábio Delboni - fabio.delboni@totvs.com.br


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

Fábio Delboni - fabio.delboni@totvs.com.br


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 )

Fábio Delboni - fabio.delboni@totvs.com.br


Consulta com várias tabelas

Note que até o momento todos exemplos de SQL apresentados utilizam no comando: SELECT *
que significa; obter todas as colunas de todas as tabelas envolvidas.
No entanto, se analisarmos, este comando retorna algumas colunas desnecessárias.
Para solucionar este problema, obtendo somente as coluna que nos interessa basta indicar a
tabela e o nome do campo no padrão TABELA.CAMPO, veja a diferença no exemplo abaixo:

Fábio Delboni - fabio.delboni@totvs.com.br


Apelido de Tabela / Coluna

É possível diminuir a quantidade de “código” na montagem de uma sentença SQL atribuindo um


apelido a uma tabela, também conhecido como alias. Após a criação destes, basta utilizálo no lugar
do nome da tabela. Compare estas duas consultas abaixo 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

Fábio Delboni - fabio.delboni@totvs.com.br


Apelido de Tabela / Coluna

Também é possível criar um alias (apelido) para uma coluna de maneira semelhande a criação de
alias para tabelas.

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

Fábio Delboni - fabio.delboni@totvs.com.br


Apelido de Tabela / Coluna

Veja abaixo o resultado de antes e depois, respectivamente:

Observação: Esta prática é muito utilizada em sql que utilizam funções, veremos adiante o que
signifca funções.

Fábio Delboni - fabio.delboni@totvs.com.br


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.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

Vale lembrar que existe diferença entre as comparações:


1) Salário inferior a 1000
2) Salário inferior/inclusive 1000.

Observação: Estas comparações são chamadas “menor”, e “menor ou igual” respectivamente.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

Veja abaixo o símbolo que representa cada operador e como são chamados, respectivamente:

= Igual
<> Diferente
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual
LIKE Like, pesquisa dentro do conteúdo de um campo alfanumérico
NOT LIKE este retorna o que não satisfaz a condição Like.
BETWEAN É usado para comparar um campo com um intervalor de valores ou datas.
IN In, serve para comparar um campo com valores de uma lista.
NOT IN Este retorna o que não satisfaz a condição In.

Veremos adiante os ultimos 3 comandos “especiais” em maior detalhes.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

A princípio o comando LIKE tem a mesma função do operador igual; Porém, quando utilizado em
conjunto do simbolo de percentual, é possível pesquisar dentro do conteúdo de um campo
alfanumérico.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

No exemplo abaixo muito semelhante a consulta anterior, pesquisa dentro do campo de código da
seção dos funcionários, uma seção que inicia com “01”.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

O comando LIKE também pesquisa no final, ou no campo todo, veja os exemplos:

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

O comando NOT LIKE, inverso ao comando Like, pesquisa os campos que não contém a
ocorrência, também sendo possível pesquisar no inicio, no fim ou em todo o campo.
No exemplo abaixo está sendo pesquisado pessoas que não contém no nome a letra “E”.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

Em todos filtros apresentados anteriormente, foi utilizado apenas uma condição. Podemos
extender o número de condições, ou combinações de condições na mesma sentença SQL,
utilizando os operadores lógico, abaixo:

AND, equivalente a “E”, onde para a condição ser verdadeira é necessário satisfazer todas as
condições; exemplo: Funcionários ativos “E” Salário menor que R$ 1.000,00.
SELECT *
FROM PFUNC
WHERE CODSITUACAO = 'A'
AND SALARIO < 1000

OR, equivalente a “OU”, onde para a condição ser verdadeira é necessário satisfazer apenas
uma das condições; exemplo: Lançamento baixado “OU” Código do cliente igual a F00001.
SELECT CODCFO, STATUSLAN
FROM FLAN
WHERE STATUSLAN = '1' OR CODCFO = 'F00001'

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

É possível também criar expressões lógica, similar as expressões matemática; veja o exemplo:

Observe que os parenteses, servem para definir a prooridade da expressão.

Fábio Delboni - fabio.delboni@totvs.com.br


Filtros e Parâmetros

Os parâmetros, são variáveis preenchidas pelo usuário no momento da execução das sentença
SQL, estas variáveis são utilizadas nas condições de uma consulta.
A sintaxe de uma variavel parâmetro é: “:PARAMETRO_TIPO”.

Os parâmetros também possuem tipos, sendo eles:


_D, este refere-se a data.
_S, este refere-se a caracteres alfanumérico.
_N, este refere-se a números inteiros.
_V, este refere-se a valores decimais.

Veja, no exemplo abaixo uma sentença SQL com 2 parâmetros.


SELECT NOME
FROM PFUNC
WHERE CODCOLIGADA = :CODCOLIGADA_N
AND CHAPA = :CHAPA_S

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Between

O comando Between serve para comparar um intervalo de valores ou datas.


Podendo ser utilizado no lugar da comum comparação “campo >= inicio e campo <= fim”, veja o
exemplo abaixo:

Fábio Delboni - fabio.delboni@totvs.com.br


Subconsulta IN

O operador IN, pode ser utilizado para comparar um campo a uma lista 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.

Fábio Delboni - fabio.delboni@totvs.com.br


Subconsulta IN

A subconsulta IN é composta da comparação de um campo com uma lista de valores, onde esta
lista é “alimentada” pelo resultado de uma consulta. Veja o exemplo:

Fábio Delboni - fabio.delboni@totvs.com.br


Subconsulta Alias

Um outro tipo de subconsulta é a “subconsulta alias”, que resume-se em criar uma consulta SQL,
atribuir um apelido para esta, e tratá-la como se fosse uma tabela ou visão; podendo inclusive
relacionar esta com outras tabelas, ou até mesmo com outras subconsultas.

Fábio Delboni - fabio.delboni@totvs.com.br


Subconsulta Externa

Também conhecida como “Coluna Subconsulta”, consiste em executar uma consulta em uma
coluna da visão, onde nesta subconsulta utiliza parâmetros da consulta externa.
Vejamos 2 exemplos:

Fábio Delboni - fabio.delboni@totvs.com.br


Subconsulta Externa

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Distinct

O comando Distinct serve para evitar repetição de dados, eliminando as redundâncias.


Veja os exemplos:

Fábio Delboni - fabio.delboni@totvs.com.br


Agrupando dados – Group By

A princípio o comando “Group By” também elimina a repetição de dados como o comando Distinct.

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - Matemáticas

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - String

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - String

Fábio Delboni - fabio.delboni@totvs.com.br


Funções – Data e Hora

Fábio Delboni - fabio.delboni@totvs.com.br


Funções – Data e Hora

Fábio Delboni - fabio.delboni@totvs.com.br


Funções – Data e Hora

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - Conversão

SQL SERVER
-CAST

- CONVERT

ORACLE
-TO_CHAR(CAMPO)

-TO_DATE(STRING,
FORMATAÇÃO)

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - Conversão

SQL SERVER

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - Conversão

Fábio Delboni - fabio.delboni@totvs.com.br


Funções - Conversão

Fábio Delboni - fabio.delboni@totvs.com.br


Funções de Agregação

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Having

Sem o Having Com o Having

Fábio Delboni - fabio.delboni@totvs.com.br


Union e Union All

Union Union All

Fábio Delboni - fabio.delboni@totvs.com.br


Ordenação – Order By

O comando order by serve para ordenar o resultado.

Fábio Delboni - fabio.delboni@totvs.com.br


Ordenação – Order By

Observe abaixo, um exemplo de ordenação decrescente, utilizando o comando “DESC”.

Por padrão a ordenação é a crescente, e este utilizado de forma implícita o comando “ASC” de
ordenação acendente.

Fábio Delboni - fabio.delboni@totvs.com.br


Ordenação – Order By

Neste exemplo ao invéz de ser utilizado o nome da colunas, está sendo utilizado o número
identificador da coluna.

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Case When

O comando “CASE” é utilizado para


realizar testes no resultado de uma
coluna.

É obrigatório uma resposta caso a


condição seja verdadeira.

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Case When

Neste exemplo foi acrescentado


o comando “ELSE”, este é
responsável pelo tratamento da
coluna caso a condição não
seja verdadeira.

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Case When

A SQL ao lado, utiliza dentro do


resultado de um case, outro
segundo comando case.

Esta dinâmica possibilita um


tratamente específico para cada
condição que fizer-se
necessária.

Fábio Delboni - fabio.delboni@totvs.com.br


Comando Case When

Em muitas situações podemos


diminuir a linha de códigos SQL,
abrindo um bloco “CASE”, e
realizando todos testes com o
comando “WHEN”, e por ultimo
fechar o bloco com o comando
“END”.

E novamente o “ELSE”,
simbolizando o comando senão,
que consiste em entrar na
condíção quando a mema não for
verdadeira.

Fábio Delboni - fabio.delboni@totvs.com.br


Comando RowNum do Oracle

O comando RowNum do Oracle , é utilizado como uma variável, e serve para fazer com que uma
coluna simbólica, seja como uma coluna de dados.
É comum utilizarmos esta variável para posteriormente fazermos um filtro por faixa de registros,
veja o exemplo:
SELECT SALARIO
FROM PFUNC
WHERE ROWNUM = 3
ORDER BY SALARIO DESC
Quando necessitamos de fazer o mesmo filtro, no SQL Server utilizamos uma outra técnica, veja:
SELECT TOP 1 SALARIO FROM(
SELECT TOP 3 SALARIO
FROM PFUNC
ORDER BY SALARIO DESC
)T
ORDER BY SALARIO

Fábio Delboni - fabio.delboni@totvs.com.br


Alguns comparativos:

MS SQL SERVER ORACLE


SUBSTRING(CAMPO,1,5) SUBSTR(CAMPO,1,5)

SELECT GETDATE() SELECT SYSDATE FROM DUAL

DATEPART(DD,DATA) TO_CHAR(DATA,‟DD‟)

DATEPART(MM,DATA) TO_CHAR(DATA,‟MM‟)

DATEPART(YYYY,DATA) TO_CHAR(DATA,‟YYYY‟)

RTRIM(CONVERT(CHAR,DATEPART(YYYY,TMOV.DATA))) +'/'+ TO_CHAR(DATA,‟YYYY/MM‟)


RTRIM(CONVERT(CHAR,DATEPART(MM,TMOV.DATA)))

SELECT 'TEXTO1' + 'TEXTO2' FROM ... SELECT „TEXTO1‟ || „TEXTO2‟ FROM …

SELECT CONVERT(VARCHAR,DATA) FROM.. SELECT TO_CHAR(DATA) FROM…

SELECT CONVERT(FLOAT,… SELECT TO_NUMBER(…

SELECT CONVERT(DATE,… SELECT TO_DATE(…

Fábio Delboni - fabio.delboni@totvs.com.br

Você também pode gostar