Você está na página 1de 29

Manual Prtico de SQL

Structure Query Language (SQL)


1.Para acesso a um banco de dados relacional, necessrio uma
linguagem.
A SQL uma linguagem usada pela maioria dos bancos de dados
relacionais.
2. uma linguagem baseada no ingls, fcil de escrever, ler e
entender.
3.SQL tem como caractersticas, a economia de tempo, flexibilidade
e segurana na manuteno de bancos de dados.
4.Existem pequenas diferenas da linguagem, em alguns bancos.
No VisualFox por exemplo, quando o comando ocupa mais de uma
linha, devemos colocar ponto e vrgula no final de cada linha, e no
final do comando somente um enter.
No oracle, ao contrrio, devemos colocar um ponto e vrgula
somente no final do comando, mesmo que este ocupe mais
de uma linha.
Estou usando a nomenclatura do oracle, nestes exemplos.

5.Um pouco de SQL:


Veja a Tabela CADASTRO Abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando o comando Select:


O comando Select, seleciona os dados especificados da tabela.
Quando voce usa *, selecionar todos os campos da tabela.
Voce pode selecionar campos determinados tambm.
Select * from Cadastro;
Resultado:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAOCOLOMBO, 4000

Selecionando alguns itens:


Select nome, endereo
from cadatro;
Resultado:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CADASTRO Abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando o comando Insert:


O comando Insert, insere novos dados na tabela.
Insert into Cadastro
values ("CARLOS","RUA ICARAI, 890","339 1212","BELO HORIZONTE");
Voce vera o resultado, fazendo um select:
Select * from Cadastro;
Resultado:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA
CARLOS

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000
RUA ICARAI, 890

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299
339 1212

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE
BELO HORIZONTE

Structure Query Language (SQL)


Veja a Tabela CADASTRO Abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

TELEFONE
222 5534
339 1100
465 2211

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE

Usando o comando Where:


O comando Where, coloca condies na sua Query.
Select * from Cadastro
where cidade = "BELO HORIZONTE";
Resultado:
NOME
FABIANA
SUELI
ALESSANDRA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA
CARLOS

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000
RUA ICARAI, 890

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299
339 1212

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE
BELO HORIZONTE

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando o comando Update:


O comando Update, altera os campos da sua tabela.
Update Cadastro
set nome = "JOSE";
Faa um select, e voce obter o seguinte resultado:
NOME
JOSE
JOSE
JOSE
JOSE
JOSE
JOSE

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

Observe que se voce no define o registro que deseja alterar,


a query mudar todos os nomes para JOSE.
Para voce alterar somente um registro, voce dever incluir uma condio:
Update Cadastro
set nome = "JOSE" where nome = "RIVA";
Faa um select, e voce obter o seguinte resultado:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
JOSE
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando o comando Delete:


O comando Delete, exclui os registros da sua tabela.
Delete from Cadastro;
Se voce fizer um select, ver que a sua tabela est vazia.
Caso voce queira excluir um registro especfico, da mesma
forma que o comando update, voce dever incluir uma condio:
Delete from cadastro
where nome = "FABIANA";
Faca um select, e voce obter o seguinte resultado:
NOME
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


O Comando Create
com este comando, que criamos as tabelas.
Vamos criar uma tabela de Conta Bancaria:
Create table conta_bancaria
(num_conta number(6),
digito number(1),
correntista varchar2(30),
cpf varchar2(14));
Se voce deseja ver a tabela, no oracle, faa o seguinte:
desc conta_bancaria
E o resultado ser:
Name
NUM_CONTA
DIGITO
CORRENTISTA
CPF

Null?
-------------

Type
NUMBER(6)
NUMBER(1)
VARCHAR2(30)
VARCHAR2(14)

Structure Query Language (SQL)


O Comando Alter Table
O comando Alter Table pode alterar a estrutura de uma tabela.
Vamos alterar a tabela Conta_Bancaria:
Adicionando uma coluna:
Alter table conta_bancaria
add (data_cadastro date);
Se voce der um desc conta_bancaria, voce ver:
Name
NUM_CONTA
DIGITO
CORRENTISTA
CPF
DATA_CADASTRO

Null?
----------------

Type
NUMBER(6)
NUMBER(1)
VARCHAR2(30)
VARCHAR2(14)
DATE

Modificar o tipo ou tamanho do campo:


Alter table conta_bancaria
modify (correntista varchar2(40), cpf number(20));
Se voce der um desc conta_bancaria, voce vera:
Name
NUM_CONTA
DIGITO
CORRENTISTA
CPF
DATA_CADASTRO

Null?
----------------

Type
NUMBER(6)
NUMBER(1)
VARCHAR2(40)
VARCHAR2(20)
DATE

Structure Query Language (SQL)


O Comando Drop Table
O comando Drop Table remove a sua tabela da base de dados.
Vamos remover a tabela Conta_Bancaria:
Drop table conta_bancaria;
Se voce der um desc conta_bancaria, voce ver:
Object does not exist.
Portanto, muito cuidado com este comando....

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

Usando o comando Distinct:


O comando Distinct, elimina as linhas duplicadas da sua query:
Select distinct(cidade)
from Cadastro;
Resultado:
CIDADE
---------------------------------------BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE
Observe que, embora ns temos 3 pessoas de Belo Horizonte,
a query mostrou somente uma vez o nome da cidade.

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

TELEFONE
465 2211
222 5534
600 2299
550 1133
339 1100
211 1213

CIDADE
BELO HORIZONTE
BELO HORIZONTE
PORTO ALEGRE
FORTALEZA
BELO HORIZONTE
SAO PAULO

Usando o comando Order by:


O comando Order by, ordena a sua tabela:
Select * from Cadastro
Order by nome;
Resultado:
NOME
ALESSANDRA
FABIANA
REGINA
RIVA
SUELI
WAGNER

ENDERECO
AV. AFONSO PENA, 600
RUA SERGIPE, 233
AV. CRISTOVAO COLOMBO, 4000
RUA MARIANA, 428
RUA DA BAHIA, 1234
AV. PAULISTA, 200

Ns podemos incluir uma condio em nosso select:


Select * from Cadastro
where cidade = "BELO HORIZONTE"
order by nome;
Resultado:
NOME
ALESSANDRA
FABIANA
SUELI

ENDERECO
AV. AFONSO PENA, 600
RUA SERGIPE, 233
RUA DA BAHIA, 1234

TELEFONE
465 2211
222 5534
339 1100

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE

Viu? A query selecionou em ordem alfabtica, somente os registros com


cidade = BELO HORIZONTE.
Voce pode tambm fazer a query em ordem descendente:
Select * from Cadastro
where cidade = "BELO HORIZONTE"
order by nome desc;
Resultado:
NOME
SUELI
FABIANA
ALESSANDRA

ENDERECO
RUA DA BAHIA, 1234
RUA SERGIPE, 233
AV. AFONSO PENA, 600

TELEFONE
339 1100
222 5534
465 2211

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

Usando o comando Group by:


O comando Group by, agrupa os seus dados:
Select CIDADE, COUNT(*)
from Cadastro
GROUP by CIDADE;
Resultado:
CIDADE
BELO HORIZONTE
FORTALEZA
PORTO ALEGRE
SAO PAULO

COUNT(*)
3
1
1
1

A query informou o nmero de pessoas por cidade e em ordem


alfabtica, caracterstica.

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CLIENTE abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

VALOR
10
20
15
10
25
10

Usando o comando Sum:


O comando Sum, soma uma coluna da sua tabela:
Select SUM(VALOR)
from Cliente;
Resultado:
sum(valor)
---------------------------90
A query informou a soma da coluna valor.

Structure Query Language (SQL)


Veja a Tabela CLIENTE abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

VALOR
10
20
15
10
25
10

Usando o comando Max:


O comando Max, seleciona o maior valor de uma coluna:
Select MAX(VALOR)
from Cliente;
Resultado:
max(valor)
---------------------------25
A query informou o valor mximo da coluna valor.

Structure Query Language (SQL)


Veja a Tabela CLIENTE abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

VALOR
10
20
15
10
25
10

Usando o comando Min:


O comando Min, seleciona o menor valor de uma coluna:
Select MIN(VALOR)
from Cliente;
Resultado:
min(valor)
---------------------------10
A query informou o valor mnimo da coluna valor.

Structure Query Language (SQL)


Veja a Tabela CLIENTE abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

VALOR
10
20
15
10
25
10

Usando o comando Avg:


O comando Avg, seleciona a mdia de uma coluna:
Select AVG(VALOR)
from Cliente;
Resultado:
avg(valor)
---------------------------15
A query informou a mdia da coluna valor.

Structure Query Language (SQL)


Veja as Tabelas abaixo:
CLIENTE :
CODIGO
001
002
003
004
005
006

NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

SALDO:
CODIGO
001
002
003
004
005
006

VALOR
10
20
15
10
25
10

TELEFONE
222 5534
339 1100
465 2211
211 1213
550 1133
600 2299

Usando Join:
Um join usado quando uma query necessita de dados de mais de uma tabela.
O resultado um subconjunto cartesiano das tabelas.
As tabelas acima, esto relacionadas pelo cdigo.
Vamos listar o nome e o saldo de cada pessoa:
Select cliente.nome, saldo.valor
from cliente, saldo
where cliente.codigo = saldo.codigo;
Resultado:
NOME
VALOR
FABIANA
10
SUELI
20
ALESSANDRA
15
WAGNER
10
RIVA
25
REGINA
10
Lembre_se que voce deve usar sempre a clasula where em um join.

Na query anterior, voce poderia colocar apelidos nas tabelas:


Select a.nome, b.valor
from cliente a, saldo b
where a.codigo = b.codigo;
O resultado o mesmo.
Voce pode salvar o resultado da query em um cursor, que um arquivo
temporrio, que fica na memria enquanto voce est usando aquela
seo.
No visualfox, comum usar cursores, para podermos mostr-los nas consultas
aos usurios.
Ex.:
Select cliente.nome, saldo.valor;
from cliente, saldo;
into cursor exemplo;
where cliente.codigo = saldo.codigo
Esta uma query com uma sintaxe do visualfox.
Podemos sofisticar mais um pouco:
Select cliente.nome, saldo.valor
from cliente, saldo
into cursor exemplo
where cliente.codigo = saldo.codigo and
cliente.codigo > 4;
NOME
VALOR
FABIANA
10
SUELI
20
ALESSANDRA
15
WAGNER
10
Vamos incluir mais uma tabela:
TAB_END
CODIGO
001
002
003
004
005
006

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Vamos selecionar o nome, endereco e saldo das pessoas:


Select cliente.nome, saldo.valor, tab_end.endereco, tab_end.cidade
from cliente, saldo, tab_end
where cliente.codigo = saldo.codigo and
tab_end.codigo = cliente.codigo;

Resultado:
NOME
VALOR
FABIANA
10
SUELI
20
ALESSANDRA
15
WAGNER
10
RIVA
25
REGINA
10

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
FABIANA
SUELI
ALESSANDRA
WAGNER
RIVA
REGINA

SALDO
10
20
15
10
25
10

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando o comando Union


Union a combinao de mais de um select para obter um resultado desejado.
A quantidade de colunas dever ser a mesma em todos os select's.
Vamos fazer uma correo nos saldos, de acordo com a cidade:
Select nome, (saldo*1.10)
from cadastro
where cidade = 'BELO HORIZONTE'
union
select nome, (saldo*1.05)
from cadastro
where cidade = 'SAO PAULO';
E o resultado ser:
NOME
SALDO
FABIANA
11
SUELI
22
ALESSANDRA 16.5
WAGNER
10.5

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO

Podemos tambm, fazer uma intersero:


Retorna apenas as linhas que foram selecionadas nos dois selects.
vamos selecionar as pessoas com saldo menor do que 20 e cidade
= BELO HORIZONTE:
Select nome, saldo
from cadastro
where cidade = 'BELO HORIZONTE'
intersect
select nome, saldo
from cadastro
where saldo < 20;

E voce tera o seguinte resultado:


NOME
FABIANA
ALESSANDRA

SALDO
11
16.5

ENDERECO
RUA SERGIPE, 233
AV. AFONSO PENA, 600

CIDADE
BELO HORIZONTE
BELO HORIZONTE

O exemplo acima, somente para ilustrao, pois poderiamos fazer


a query de uma forma mais simples.
Select nome, saldo
from cadastro
where cidade = 'BELO HORIZONTE' and
saldo < 20;
E o resultado seria o mesmo.
Existe tambm a subtrao, que usada para trazer as linhas
retornadas pela primeira query que no esto na segunda:
Vamos ver a seguinte query:
Select nome, saldo
from cadastro
where cidade = 'BELO HORIZONTE'
minus
select nome, saldo
from cadastro
where saldo < 20;
E o resultado ser o seguinte:
NOME
SUELI

SALDO
22

ENDERECO
RUA DA BAHIA, 1234

CIDADE
BELO HORIZONTE

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
NOME
SALDO
FABIANA
10
SUELI
20
ALESSANDRA
15
WAGNER
10
RIVA
25
REGINA
10

ENDERECO
RUA SERGIPE, 233
RUA DA BAHIA, 1234
AV. AFONSO PENA, 600
AV. PAULISTA, 200
RUA MARIANA, 428
AV. CRISTOVAO COLOMBO, 4000

CIDADE
BELO HORIZONTE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
FORTALEZA
PORTO ALEGRE

Usando Subqueries
Uma subquery um comando select dentro de outro comando select.
Este tipo de estrutura geralmente utilizado quando precisamos selecionar
linhas de uma tabela com uma condio que depende dos dados que esto
na prpria tabela.
Vamos selecionar os menores saldos da tabela acima:
Select *
from cadastro
where saldo = (select min(saldo) from cadastro);
E o resultado ser:
NOME
FABIANA
WAGNER
REGINA

SALDO
10
10
10

ENDERECO
RUA SERGIPE, 233
AV. PAULISTA, 200
AV. CRISTOVAO COLOMBO, 4000

CIDADE
BELO HORIZONTE
SAO PAULO
PORTO ALEGRE

Ou saldos menores do que 20:


Select *
from cadastro
where saldo in (select saldo from cadastro where saldo < 20);
E o resultado ser:
NOME
SALDO
FABIANA
10
ALESSANDRA
15
WAGNER
10
REGINA
10

ENDERECO
RUA SERGIPE, 233
AV. AFONSO PENA, 600
AV. PAULISTA, 200
AV. CRISTOVAO COLOMBO, 4000

No primeiro caso, eu usei '=', porque o resultado do select dentro de


parnteses seria um s, mas no segundo caso, nos teramos mais de uma
resposta, ento, devemos usar a clausula 'in'.

CIDADE
BELO HORIZONTE
BELO HORIZONTE
SAO PAULO
PORTO ALEGRE

Structure Query Language (SQL)


Veja a Tabela CONTA_CORRENTE abaixo:
CODIGO
10
20
30
40
50
60

NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

SALDO
100,00
100,00
150,00
200,00
200,00
150,00

Usando Aliases (Apelidos)


Um alias e criado quando usamos um calculo em uma query ou
selecionamos um valor minimo ou maximo de uma coluna, ou mesmo
concatenamos colunas.
Vamos calcular 1/4 do saldo da tabela acima:
Select
nome,
saldo/4 "CORRECAO"
from conta_corrente;
E o resultado sera:
NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

CORRECAO
25,00
25,00
37,50
50,00
50,00
37,50

O nome da coluna "CORRECAO" foi criado com um alias, caso nos nao
tivessemos colocado este alias, a coluna sairia com o nome "SALDO/4":
Select
nome,
saldo/4
from conta_corrente;
E o resultado sera:
NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

SALDO/4
25,00
25,00
37,50
50,00
50,00
37,50

Structure Query Language (SQL)


Veja a Tabela CONTA_CORRENTE abaixo:
CODIGO
10
20
30
40
50
60

NOME
FABIANA
ALESSANDRA
CARLOS
CALVIN
RAINER
VINICIUS

SALDO
100,00
100,00
150,00
200,00
200,00
150,00

Usando Operadores de Concatenacao


Usamos operadores de concatenacao, quando queremos criar uma
coluna a partir de 2 ou mais colunas de uma query.
Vamos apresentar um resultado de uma query:
Select
codigo||' - '||nome,
saldo
from conta_corrente;
E o resultado sera:
CODIGO||' - '||NOME
10 FABIANA
20 - ALESSANDRA
30 CARLOS
40 CALVIN
50 RAINER
60 VINICIUS

SALDO
100,00
100,00
150,00
200,00
200,00
150,00

Podemos tambem criar um alias para a coluna de concatenacao:


Select
codigo||' - '||nome "CORRENTISTA",
saldo
from conta_corrente;
E o resultado sera:
CORRENTISTA
10 FABIANA

SALDO
100,00

20 - ALESSANDRA
30 CARLOS
40 CALVIN
50 RAINER
60 VINICIUS

100,00
150,00
200,00
200,00
150,00

As vezes queremos criar uma tabela a partir de outra e podemos


usar campos concatenados:
Create table CONTA_CORRENTE2
as
Select
codigo||' - '||nome "CORRENTISTA",
saldo
from conta_corrente;
E o se voce der um desc na tabela CONTA_CORRENTE2, tera:
NAME
-------------CORRENTISTA
SALDO

NULL?
--------------

TYPE
-------------VARCHAR2(30)
NUMBER

No caso de criacao de uma tabela, o alias e obrigatorio.

Structure Query Language (SQL)


Veja a Tabela CONTA_CORRENTE abaixo:
CODIGO
10
20
30
40
50
60

NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

SALDO
100,00
100,00
150,00
200,00

Tratamento de Valores Nulos:


Se determinada coluna nao tem um valor, este valor e denominado
nulo. Quando uma operacao aritmetica e feita com um valor nulo, o
resultado e sempre nulo.
Para conversao de valores nulos utiliza_se a
funcao NVL. Vejamos:
Select
nome,
NVL(saldo,10)/4 "CORRECAO"
from conta_corrente;
E o resultado sera:
NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

CORRECAO
25,00
25,00
37,50
2,50
50,00
2,50

Veja que no CALVIN e no CHRISTIAN os valores eram nulos entao,


a query usou a condicao do NVL, ou seja 10/4.

Structure Query Language (SQL)


Veja a Tabela CONTA_CORRENTE abaixo:
CODIGO
10
20
30
40
50
60

NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

SALDO
100,00
100,00
150,00
200,00
200,00
120,00

Operador Between:
O Operador between, seleciona dados que estao entre uma
determinada condicao.
Vejamos a selecao abaixo:
Select
codigo, nome, saldo
from conta_corrente
where saldo between 50 and 150;
E o resultado sera:
CODIGO
10
20
30
60

NOME
VANESSA
NILSON
RACHEL
CHRISTIAN

SALDO
100,00
100,00
150,00
120,00

Na utilizacao do between o menor valor da comparacao


deve vir antes.

Structure Query Language (SQL)


Veja a Tabela CADASTRO abaixo:
CODIGO
10
20
30
40
50
60

NOME
VANESSA
NILSON
RACHEL
CALVIN
RAINER
CHRISTIAN

ESTADO
MG
MG
MG
RS
SP
SP

CIDADE
BELO HORIZONTE
OURO PRETO
BELO HORIZONTE
PORTO ALEGRE
SAO PAULO
SAO PAULO

Operador IN:
O Operador IN pode ser um resultado de uma subquery ou
o resultado de valores determinados:
Usando uma subquery:
Select
codigo, nome, estado, cidade
from cadastro
where cidade in (select cidade from cadatro where estado = 'MG');
E o resultado sera:
CODIGO
10
20
30

NOME
VANESSA
NILSON
RACHEL

ESTADO
MG
MG
MG

CIDADE
BELO HORIZONTE
OURO PRETO
BELO HORIZONTE

ESTADO
MG
MG
MG
RS

CIDADE
BELO HORIZONTE
OURO PRETO
BELO HORIZONTE
PORTO ALEGRE

Definindo valores:
Select
codigo, nome, estado, cidade
from cadastro
where estado in ('MG','RS');
E o resultado sera:
CODIGO
10
20
30
40

NOME
VANESSA
NILSON
RACHEL
CALVIN

Você também pode gostar