Você está na página 1de 83

TREINAMENTO DE SQL PARTE 1 de 2.

ETAPAS:
1)

Conceitos de banco de dados

2)

Sentena SQL

12) Comando Distinct

1)

Dicionrio de dados

13) Agrupando Dados

2)

Consulta simples em uma tabela

14) Funes

3)

Interpretando a GLINKSREL

1)

Matemtica

4)

Ligando tabelas / Inner Join

2)

String

5)

Outher Join Left / Right

3)

Converso

6)

Consulta com vrias tabelas

15) Funes de Agregao

7)

Apelido de tabela / coluna

16) Comando Having

8)

Filtros e parmetros

17) Union e Union All

9)

Comando Between

18) Ordenao

10) Subconsulta In

19) Comando Case When

11) Subconsulta Alias / Externa

20) Comando RowNum do Oracle

Fbio 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 aplicao o papel de organizar os dados


Integra e organiza os dados em uma nica base
Acelera e facilita o processo de manipulao dos dados

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS


O que um SGBD possui?

Instncias
Banco de dados
Tabelas
Vises
Programao
Permisses
Linguagem SQL

TAB1 TAB2 TAB3

BD1

TAB1

BD2

TAB1

BD3

SGBD
Fbio Delboni

fabio.delboni@totvs.com.br

TAB1 TAB2 TAB3

BD4

CONCEITOS DE BANCO DE DADOS


TABELAS
Servem para armazenar dados semelhantes, e/ou categoriz-los, sendo constituda por linhas e
colunas.

Uma coluna refere-se a um campo, tambm conhecido por atributo


Cada linha representa um registro, tambm conhecido por tupla
Campos

Registros
ou Tuplas

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS

Os campos possuem diversos tipos sendo eles:

Numricos (inteiro e decimal)


Alfabtico
Data e hora
Arquivo (BLOB - Binary Large OBject)

Uma tabela tambm possui chaves:

A chave primria indica unicidade, quando comparado aos demais registros da mesma tabela
A chave estrangeira responsvel por ligar uma tabela com outra pelo campo chave primria

Esta ligao tambm conhecida como herana, viabiliza a ligao de uma tabela na outra
tornando possvel a generalizao/agrupamento dos dados.

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS


Exemplo de ligao de tabelas:
Chave primria

Chave estrangeira

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

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS

SQL - Linguagem de consulta estruturada

uma linguagem responsvel por fazer a interface entre a aplicao e o banco de dados.
Atravs dela possvel inserir, editar, consultar e excluir dados das tabelas.
A Linguagem SQL est presente em todos SGBD existentes no mercado.
Ela segue um padro de escrita (comum) utilizado por todos fabricantes.
Porm cada SGBD possui algumas particularidades/restries

SGBD
SQL

BD

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS

SQL - Linguagem de consulta estruturada

uma linguagem responsvel por fazer a interface entre a aplicao e o banco de dados.
Atravs dela possvel inserir, editar, consultar e excluir dados das tabelas.
A Linguagem SQL est presente em todos SGBD existentes no mercado.
Ela segue um padro de escrita (comum) utilizado por todos fabricantes.
Porm cada SGBD possui algumas particularidades/restries

SGBD
SQL

BD

Fbio Delboni

fabio.delboni@totvs.com.br

CONCEITOS DE BANCO DE DADOS

SQL - Linguagem de consulta estruturada

uma linguagem responsvel por fazer a interface entre a aplicao e o banco de dados.
Atravs dela possvel inserir, editar, consultar e excluir dados das tabelas.
A Linguagem SQL est presente em todos SGBD existentes no mercado.
Ela segue um padro de escrita (comum) utilizado por todos fabricantes.
Porm cada SGBD possui algumas particularidades/restries.

SGBD
SQL

BD

Fbio Delboni

fabio.delboni@totvs.com.br

SENTENA SQL DICIONRIO DE DADOS


Como eu sei qual o nome da tabela, ou o nome do campo que armazena
determinado dado?
A forma mais fcil via aplicativo pressionando CTRL+SHIFT e posicionando o cursor sobre o
campo, conforme o exemplo abaixo:

Fbio Delboni

fabio.delboni@totvs.com.br

SENTENA SQL DICIONRIO DE DADOS


Para as novas telas desenvolvidas em .NET
Clicar com o direito no fundo da janela, e habilitar a opo visualizar nome dos campos, e
posicionar o cursor sobre o campo.

Fbio Delboni

fabio.delboni@totvs.com.br

DICIONRIO DE DADOS
Outra forma rastrear pela tabela GCAMPOS, utilizada pelo gerador como um dicionrio de
dados. Contendo o nome das tabelas e os campos com suas descries.

Fbio Delboni

fabio.delboni@totvs.com.br

CONSULTA SIMPLES EM UMA TABELA


Sintaxe de uma consulta SQL:
O comando SELECT responsvel pelas consultas no banco de dados, sendo o nico comando
utilizado em planilhas, gerador e nos cubos.

Fbio 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 especficas:

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
Como eu sei qual a ligao das tabelas?
Existe uma tabela chamada GLINKSREL que contm todas as tabelas e suas ligaes,
composta por apenas 4 colunas, conforme exemplo abaixo:

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
Como eu sei qual a ligao das tabelas?
Existe uma tabela chamada GLINKSREL que contm todas as tabelas e suas ligaes,
composta por apenas 4 colunas, conforme exemplo abaixo:

Fbio 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 cdigo do cliente, e
assim feita a ligao destas duas tabelas.

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
Visualizando de uma outra forma.
1
MASTERTABLE

CHILDTABLE

MASTERFIELD

CHILDFIELD

FCFO

TMOV

CODCOLIGADA, CODCFO

CODCOLCFO, CODCFO

2
MASTERTABLE.MASTERFIELD

CHILDTABLE.CHILDFIELD

FCFO.CODCOLIGADA, FCFO.CODCFO

TMOV.CODCOLCFO, TMOV.CODCFO

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

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
No entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
No entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
No entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND


FCFO.CODCFO

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
No entendeu?
Vamos no passo-a-passo!!!

FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND


FCFO.CODCFO = TMOV.CODCFO

Fbio Delboni

fabio.delboni@totvs.com.br

INTERPRETANDO A GLINKSREL
Existem tabelas com mais de uma possibilidade de ligao, para estes casos, deve ser
identificado qual a linha que contm a ligao correta.

Quando um relatrio no feito por consulta SQL, mas feito com campos da base, o sistema
identifica as ligaes entre as tabelas, e na ocorrncia de mais de uma ligao, exige que o
usurio selecione a ligao correta, para poder salvar o relatrio.

Fbio Delboni

fabio.delboni@totvs.com.br

Ligando Tabelas / Inner Join


Sintaxe de uma consulta SQL:

SELECT [DISTINCT] <CAMPOS>


FROM <TABELAS> <JOINS>
WHERE <CONDIES>
GROUP BY <CAMPOS>
ORDER BY <CAMPOS>

Vale lembrar que:


O comando SELECT responsvel pelas consultas no banco de dados, e no
Corpore, pode ser utilizado no gerador de relatrios, planilhas, cubos, filtros
com o operador in, e em frmulas.

Fbio Delboni

fabio.delboni@totvs.com.br

Ligando Tabelas / Inner Join

Ligando tabelas pelo comando WHERE

Ligando tabelas pelo comando FROM

Fbio 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 ligaes da maneira correta, se
a tabela usa chave composta, ligue os dois campos.
Fbio 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. Porm existem
situaes onde voc necessita que o SGBD retorne registros da tabela da esquerda, mesmo no
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)

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

Fbio 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 relao entre item e o tributo.
Porm os registros dos tributos, assim como outras tabelas, so criados somente quando ele
existe, diferente de outras tabelas que criam o registro porm com alguns campos nulos.

Fbio 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
no existindo um registro que mantm relao na tabela de tributos.

Este exemplo para SQL Server, em Oracle basta substituir * por (+) .

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias tabelas


Em grande parte das consultas SQL utilizado mais de duas tabelas, e devido este nvel de
complexidade comum utilizarmos diagramas para facilitar o entendimento dos relacionamentos, e
facilitar no desenvolvimento da sentena SQL. Veja o exemplo abaixo:

PFUNC

PSECAO

PCODSITUACAO

PFUNCAO

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias tabelas


Passo 1 - ligar a tabela PFUNC com a PSECAO.

PFUNC

PSECAO

PCODSITUACAO

PFUNCAO

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias tabelas


Passo 1 - ligar a tabela PFUNC com a PSECAO.
SELECT *
FROM PFUNC, PSECAO
WHERE
PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA
AND PFUNC.CODSECAO = PSECAO.CODIGO

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias tabelas


Passo 2 - ligar a tabela PFUNC com a PFUNCAO.

PFUNC

PSECAO

PCODSITUACAO

PFUNCAO

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias 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

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias tabelas


Passo 3 - ligar a tabela PFUNC com a PCODSITUACAO.

PFUNC

PSECAO

PCODSITUACAO

PFUNCAO

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias 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

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias 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 )

Fbio Delboni

fabio.delboni@totvs.com.br

Consulta com vrias 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 desnecessrias.
Para solucionar este problema, obtendo somente as coluna que nos interessa basta indicar a
tabela e o nome do campo no padro TABELA.CAMPO, veja a diferena no exemplo abaixo:

Fbio Delboni

fabio.delboni@totvs.com.br

Apelido de Tabela / Coluna


possvel diminuir a quantidade de cdigo na montagem de uma sentena SQL atribuindo um
apelido a uma tabela, tambm conhecido como alias. Aps a criao destes, basta utilizlo 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
Fbio Delboni

fabio.delboni@totvs.com.br

Apelido de Tabela / Coluna


Tambm possvel criar um alias (apelido) para uma coluna de maneira semelhande a criao 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

Fbio Delboni

fabio.delboni@totvs.com.br

Apelido de Tabela / Coluna


Veja abaixo o resultado de antes e depois, respectivamente:

Observao: Esta prtica muito utilizada em sql que utilizam funes, veremos adiante o que
signifca funes.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
No filtro, como o prprio nome sugere, serve para consultar informaes no banco de dados, de
forma que o resultado, seja apresentado eliminando dados.
O exemplo abaixo, apresenta uma consulta simples; onde est sendo pesquisado funcionrios
com o salrio inferior a 1000.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
Vale lembrar que existe diferena entre as comparaes:
1)

Salrio inferior a 1000

2)

Salrio inferior/inclusive 1000.

Observao: Estas comparaes so chamadas menor, e menor ou igual respectivamente.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
Veja abaixo o smbolo que representa cada operador e como so chamados, respectivamente:
=

Igual

<>

Diferente

<

Menor

<=

Menor ou igual

>

Maior

>=

Maior ou igual

LIKE Like, pesquisa dentro do contedo de um campo alfanumrico


NOT LIKE este retorna o que no satisfaz a condio 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 no satisfaz a condio In.

Veremos adiante os ultimos 3 comandos especiais em maior detalhes.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
A princpio o comando LIKE tem a mesma funo do operador igual; Porm, quando utilizado em
conjunto do simbolo de percentual, possvel pesquisar dentro do contedo de um campo
alfanumrico.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
No exemplo abaixo muito semelhante a consulta anterior, pesquisa dentro do campo de cdigo
da seo dos funcionrios, uma seo que inicia com 01.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
O comando LIKE tambm pesquisa no final, ou no campo todo, veja os exemplos:

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
O comando NOT LIKE, inverso ao comando Like, pesquisa os campos que no contm a
ocorrncia, tambm sendo possvel pesquisar no inicio, no fim ou em todo o campo.
No exemplo abaixo est sendo pesquisado pessoas que no contm no nome a letra E.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
Em todos filtros apresentados anteriormente, foi utilizado apenas uma condio. Podemos
extender o nmero de condies, ou combinaes de condies na mesma sentena SQL,
utilizando os operadores lgico, abaixo:
AND, equivalente a E, onde para a condio ser verdadeira necessrio satisfazer todas as
condies; exemplo: Funcionrios ativos E Salrio menor que R$ 1.000,00.
SELECT *
FROM PFUNC
WHERE CODSITUACAO = 'A'
AND SALARIO < 1000
OR, equivalente a OU, onde para a condio ser verdadeira necessrio satisfazer apenas
uma das condies; exemplo: Lanamento baixado OU Cdigo do cliente igual a F00001.
SELECT CODCFO, STATUSLAN
FROM FLAN
WHERE STATUSLAN = '1' OR CODCFO = 'F00001'

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
possvel tambm criar expresses lgica, similar as expresses matemtica; veja o exemplo:

Observe que os parenteses, servem para definir a prooridade da expresso.

Fbio Delboni

fabio.delboni@totvs.com.br

Filtros e Parmetros
Os parmetros, so variveis preenchidas pelo usurio no momento da execuo das sentena
SQL, estas variveis so utilizadas nas condies de uma consulta.
A sintaxe de uma variavel parmetro : :PARAMETRO_TIPO.
Os parmetros tambm possuem tipos, sendo eles:
_D, este refere-se a data.
_S, este refere-se a caracteres alfanumrico.
_N, este refere-se a nmeros inteiros.
_V, este refere-se a valores decimais.
Veja, no exemplo abaixo uma sentena SQL com 2 parmetros.
SELECT NOME
FROM PFUNC
WHERE CODCOLIGADA = :CODCOLIGADA_N
AND CHAPA = :CHAPA_S

Fbio 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 comparao campo >= inicio e campo <= fim, veja o
exemplo abaixo:

Fbio 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:
Ateno: o comando OR, chamado
OU, utilizado em expresses
lgicas, que ser visto com mais
detalhes aps alguns slides.

Fbio Delboni

fabio.delboni@totvs.com.br

Subconsulta IN
A subconsulta IN composta da comparao de um campo com uma lista de valores, onde esta
lista alimentada pelo resultado de uma consulta. Veja o exemplo:

Fbio 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 viso; podendo inclusive
relacionar esta com outras tabelas, ou at mesmo com outras subconsultas.

Fbio Delboni

fabio.delboni@totvs.com.br

Subconsulta Externa
Tambm conhecida como Coluna Subconsulta, consiste em executar uma consulta em uma
coluna da viso, onde nesta subconsulta utiliza parmetros da consulta externa.
Vejamos 2 exemplos:

Fbio Delboni

fabio.delboni@totvs.com.br

Subconsulta Externa

Fbio Delboni

fabio.delboni@totvs.com.br

Comando Distinct
O comando Distinct serve para evitar repetio de dados, eliminando as redundncias.
Veja os exemplos:

Fbio Delboni

fabio.delboni@totvs.com.br

Agrupando dados Group By


A princpio o comando Group By tambm elimina a repetio de dados como o comando Distinct.

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - Matemticas

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - String

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - String

Fbio Delboni

fabio.delboni@totvs.com.br

Funes Data e Hora

Fbio Delboni

fabio.delboni@totvs.com.br

Funes Data e Hora

Fbio Delboni

fabio.delboni@totvs.com.br

Funes Data e Hora

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - Converso
SQL SERVER
- CAST
- CONVERT

ORACLE
- TO_CHAR(CAMPO)
- TO_DATE(STRING,
FORMATAO)

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - Converso
SQL SERVER

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - Converso

Fbio Delboni

fabio.delboni@totvs.com.br

Funes - Converso

Fbio Delboni

fabio.delboni@totvs.com.br

Funes de Agregao

Fbio Delboni

fabio.delboni@totvs.com.br

Comando Having
Sem o Having

Fbio Delboni

Com o Having

fabio.delboni@totvs.com.br

Union e Union All


Union

Fbio Delboni

Union All

fabio.delboni@totvs.com.br

Ordenao Order By
O comando order by serve para ordenar o resultado.

Fbio Delboni

fabio.delboni@totvs.com.br

Ordenao Order By
Observe abaixo, um exemplo de ordenao decrescente, utilizando o comando DESC.

Por padro a ordenao a crescente, e este utilizado de forma implcita o comando ASC de
ordenao acendente.

Fbio Delboni

fabio.delboni@totvs.com.br

Ordenao Order By
Neste exemplo ao invz de ser utilizado o nome da colunas, est sendo utilizado o nmero
identificador da coluna.

Fbio Delboni

fabio.delboni@totvs.com.br

Comando Case When

O comando CASE utilizado para


realizar testes no resultado de uma
coluna.
obrigatrio uma resposta caso a
condio seja verdadeira.

Fbio Delboni

fabio.delboni@totvs.com.br

Comando Case When


Neste exemplo foi acrescentado
o comando ELSE, este
responsvel pelo tratamento da
coluna caso a condio no
seja verdadeira.

Fbio 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 dinmica possibilita um
tratamente especfico para cada
condio que fizer-se
necessria.

Fbio Delboni

fabio.delboni@totvs.com.br

Comando Case When


Em muitas situaes podemos
diminuir a linha de cdigos 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 seno,
que consiste em entrar na
condo quando a mema no for
verdadeira.

Fbio Delboni

fabio.delboni@totvs.com.br

Comando RowNum do Oracle


O comando RowNum do Oracle , utilizado como uma varivel, e serve para fazer com que uma
coluna simblica, seja como uma coluna de dados.
comum utilizarmos esta varivel 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 tcnica,
veja:
SELECT TOP 1 SALARIO FROM(
SELECT TOP 3 SALARIO
FROM PFUNC
ORDER BY SALARIO DESC
)T
ORDER BY SALARIO

Fbio 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))) +'/'+
RTRIM(CONVERT(CHAR,DATEPART(MM,TMOV.DATA)))

TO_CHAR(DATA,YYYY/MM)

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(

Fbio Delboni

fabio.delboni@totvs.com.br

Você também pode gostar