Você está na página 1de 83

TREINAMENTO DE SQL PARTE 1 de 2.

ETAPAS:
1) 2) Conceitos de banco de dados Sentena SQL 1) 2) 3) 4) 5) 6) 7) 8) 9) Dicionrio de dados Consulta simples em uma tabela Interpretando a GLINKSREL Ligando tabelas / Inner Join Outher Join Left / Right Consulta com vrias tabelas Apelido de tabela / coluna Filtros e parmetros Comando Between 12) Comando Distinct 13) Agrupando Dados

14) Funes
1) 2) 3) Matemtica String Converso

15) Funes de Agregao 16) Comando Having 17) Union e Union All 18) Ordenao 19) Comando Case When

10) Subconsulta In

11) Subconsulta Alias / Externa


Fbio Delboni fabio.delboni@totvs.com.br

20) Comando RowNum do Oracle

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

TAB1

TAB1

TAB1 TAB2 TAB3

BD1

BD2

BD3

BD4

SGBD
Fbio Delboni fabio.delboni@totvs.com.br

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
FCFO

CHILDTABLE
TMOV

MASTERFIELD
CODCOLIGADA, CODCFO

CHILDFIELD
CODCOLCFO, CODCFO

2
MASTERTABLE.MASTERFIELD
FCFO.CODCOLIGADA, FCFO.CODCFO

CHILDTABLE.CHILDFIELD
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) 2) Salrio inferior a 1000 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: = <> < <= > >= LIKE Igual Diferente Menor Menor ou igual Maior Maior ou igual 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 NOT IN In, serve para comparar um campo com valores de uma lista. 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 Com o Having

Fbio Delboni

fabio.delboni@totvs.com.br

Union e Union All


Union Union All

Fbio Delboni

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
SUBSTRING(CAMPO,1,5) SELECT GETDATE() DATEPART(DD,DATA) DATEPART(MM,DATA) DATEPART(YYYY,DATA) RTRIM(CONVERT(CHAR,DATEPART(YYYY,TMOV.DATA))) +'/'+ RTRIM(CONVERT(CHAR,DATEPART(MM,TMOV.DATA))) SELECT 'TEXTO1' + 'TEXTO2' FROM ... SELECT CONVERT(VARCHAR,DATA) FROM.. SELECT CONVERT(FLOAT, SELECT CONVERT(DATE,

ORACLE
SUBSTR(CAMPO,1,5) SELECT SYSDATE FROM DUAL TO_CHAR(DATA,DD) TO_CHAR(DATA,MM) TO_CHAR(DATA,YYYY) TO_CHAR(DATA,YYYY/MM)

SELECT TEXTO1 || TEXTO2 FROM SELECT TO_CHAR(DATA) FROM SELECT TO_NUMBER( SELECT TO_DATE(

Fbio Delboni

fabio.delboni@totvs.com.br