Escolar Documentos
Profissional Documentos
Cultura Documentos
Treinamentodesql 110504091403 Phpapp01
Treinamentodesql 110504091403 Phpapp01
ETAPAS:
1)
2)
Sentena SQL
1)
Dicionrio de dados
2)
14) Funes
3)
Interpretando a GLINKSREL
1)
Matemtica
4)
2)
String
5)
3)
Converso
6)
7)
8)
Filtros e parmetros
9)
Comando Between
18) Ordenao
10) Subconsulta In
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Instncias
Banco de dados
Tabelas
Vises
Programao
Permisses
Linguagem SQL
BD1
TAB1
BD2
TAB1
BD3
SGBD
Fbio Delboni
fabio.delboni@totvs.com.br
BD4
Registros
ou Tuplas
Fbio Delboni
fabio.delboni@totvs.com.br
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
Chave estrangeira
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
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
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
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
Fbio Delboni
fabio.delboni@totvs.com.br
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
Fbio Delboni
fabio.delboni@totvs.com.br
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!!!
Fbio Delboni
fabio.delboni@totvs.com.br
INTERPRETANDO A GLINKSREL
No entendeu?
Vamos no passo-a-passo!!!
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
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
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
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Este exemplo para SQL Server, em Oracle basta substituir * por (+) .
Fbio Delboni
fabio.delboni@totvs.com.br
PFUNC
PSECAO
PCODSITUACAO
PFUNCAO
Fbio Delboni
fabio.delboni@totvs.com.br
PFUNC
PSECAO
PCODSITUACAO
PFUNCAO
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
PFUNC
PSECAO
PCODSITUACAO
PFUNCAO
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
PFUNC
PSECAO
PCODSITUACAO
PFUNCAO
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
fabio.delboni@totvs.com.br
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
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)
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
NOT IN
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:
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
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
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
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
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
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Fbio Delboni
fabio.delboni@totvs.com.br
Alguns comparativos:
MS SQL SERVER
ORACLE
SUBSTRING(CAMPO,1,5)
SUBSTR(CAMPO,1,5)
SELECT GETDATE()
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 CONVERT(FLOAT,
SELECT TO_NUMBER(
SELECT CONVERT(DATE,
SELECT TO_DATE(
Fbio Delboni
fabio.delboni@totvs.com.br