Thanks to visit codestin.com
Credit goes to pt.scribd.com

0% acharam este documento útil (0 voto)
403 visualizações23 páginas

Comandos SQL

O documento apresenta os principais comandos SQL para manipulação de dados em bancos de dados relacionais, incluindo comandos para criação de tabelas, inserção, seleção e filtragem de dados. É apresentado o uso de funções, cláusulas e operadores para realizar consultas mais complexas.

Enviado por

sdroieski
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
403 visualizações23 páginas

Comandos SQL

O documento apresenta os principais comandos SQL para manipulação de dados em bancos de dados relacionais, incluindo comandos para criação de tabelas, inserção, seleção e filtragem de dados. É apresentado o uso de funções, cláusulas e operadores para realizar consultas mais complexas.

Enviado por

sdroieski
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 23

Aula de Banco de dados

COMANDOS SQL

COMANDO CREATE TABLE


Create table funcionario
(cod_func int not null,
nome_func varchar(30) not null,
idade_func int not null,
telefone_func varchar(9),
end_func varchar(50)
constraint pk_func primary key(cod_func))
COMANDO INSERT
Comando para inserir valores em todos os campos da tabela.
Insert into funcionario
Values(1,Andre de Almeida,25,5555-5555,Rua Florentina 56 apto 21);
Comando para inserir valores apenas nos campos obrigatrios da
tabela.
Insert into funcionario(cod_func,nome_func,idade_func)
Values(2,Antonio Gomes,28,7895-3456,Rua Florentina 56 apto 35);
COMANDO SELECT
Comando p/ trazer algumas colunas e todas linhas de uma tabela.
SELECT coluna, coluna, coluna FROM tabela;

Comando p/ trazer todas as colunas e linhas da tabela cliente.


SELECT * FROM tabela;

Aula de Banco de dados

CLAUSULA WHERE
A clausula where corresponde ao operador relacional de restrio.
Ela contm as condies que as linhas da relao devem satisfazer para
serem mostradas.
O where quando utilizado deve vir aps a clausula FROM
SINTAXE:
SELECT colunas FROM tabela
WHERE condies que devem ser respeitadas
OPERADORES UTILIZADOS NA CLAUSULA WHERE
OPERADOR
=

OBJETIVO
teste de igualdade

>

maior que

>=

maior ou igual a

<

menor que

<=

menor ou igual a

between a
and b
not between
a and b
<>
In
not in
like % tin%
and

or

maior ou igual a( a) e menor


ou igual a (b)
no maior ou igual a (a) e no
menor ou igual a (b)
teste de desigualdade

EXEMPLO
Select * from estado where
cod_estado = ma
selct*from cliente
where vendas >100
Select * from client where
vendas >=1000
Select * from cliente where vendas
<100
select*from cliente
where venda <=1000
Select * from clientes where vendas
between 1 and 50
Select * from client where
Vendas not between 1 and 50
Select * from estado where
cod_estado <> ma
Select * from clientes where
cod_estado in ( ma, nj)
Select*
from
clientes
where
cod_estado not in ( ma, nj)
Select * from cliente where
sobrenome like %tin%
Select * from cliente where cidade =
natal and sexo = m

igual a qualquer membro


entre parenteses
diferente entre todos os
membros entre parenteses
contem no texto dado a
palavra tin
o operador and pode ser
utilizado
para
compor
expresses lgicas.
o operador or pode ser Select * from cliente where cidade =
utilizado
para
compor natal or sexo = m
expresses lgicas.

Aula de Banco de dados

OPERADORES NUMRICOS
Podemos realizar operaes numricas com colunas da tabelas.
OPERADOR
+

OPERAO
Adio

Subtrao

*
/

multiplica-o
Diviso

EXEMPLO
select vendas_acum + vendas_atuais from
cliente;
select vendas_acum vendas_atuais from cliente;
select vendas_acum * comisso from cliente;
select vendas_acum / 2 from cliente;

FUNO AVG

A funo AVG calcula a mdia dos valores selecionados.


SINTAXE:

AVG (carga_horaria)

Exemplo:
SELECT AVG(carga_horaria) FROM curso;
FUNO MIN/MAX

A funo seleciona o menor ou o maior valor dos valores selecionados.


SINTAXE:

MIN (carga_horaria)
MAX (carga_horaria)

Exemplo:
SELECT MIN(carga_horaria) FROM curso;
SELECT MAX(carga_horaria) FROM curso;
FUNO SUM

A funo faz o somatrio dos dados extraidos da coluna especificada


ignorando os valores null.
SINTAXE:
Exemplo:

SUM (carga_horaria)

SELECT SUM(carga_horaria) FROM curso;

Aula de Banco de dados

FUNO COUNT
A funo traz o numero de linhas (informaes) existentes na tabela.
SINTAXE: COUNT (campo)

Exemplo:
SELECT COUNT(carga_horaria) FROM curso;

FUNO LOWER
Recupera o dado em letra minscula.
SINTAXE:

SELECT
FROM

LOWER (coluna)
tabela

SAIDA - LOWER (NOM_CIDADE)


belo horizonte
belo horizonte
manaus

FUNO UPPER
- Recupera o dado especificado em letra maiscula.
SINTAXE:

SELECT
FROM

UPPER (coluna)
TABELA

SAIDA - UPPER (NOM_CIDADE)


BELO HORIZONTE
BELO HORIZONTE
MANAUS
NATAL

Aula de Banco de dados

FUNO SUBSTRING
A funo SUBSTRING traz uma parte do dado especificado.
SINTAXE:

SUBSTRING (COL/VAL, POS,N)

Exemplo:
SELECT SUBSTRING(SQL*PLUS,1,3),SUBSTRING(nom_cidade,1,3),

SUBSTRING(nom_cidade,4,5)
FROM aluno
sub
SQL
SQL
SQL
SQL

SUBSTRING(nom_cidade,1,3)
BEL
BEL
MAN
NAT

SUBSTRING(nom_cidade,4,5)
O HOR
O HOR
AUS
L

FUNO LTRIM
A funo LTRIM utilizada para remover spacos a esquerda.
SINTAXE:

LTRIM ( CARACTER)

Remove da esquerda os espaos em brancos do carater informado ou da


combinao deles quando informado mais de um caracter.
Exemplo:
SELECT nom_cidade, LTRIM(nom_cidade),LTRIM(nom_cidade)
FROM aluno
Nom_cidade

LTRIM(nom_cidade) LTRIM (nom_cidade)

BELO HORIZONTE
BELO HORIZONTE
MANAUS
NATAL

BELO HORIZONTE
BELO HORIZONTE
MANAUS
NATAL

BELO HORIZONTE
BELO HORIZONTE
MANAUS
TAL

FUNO RTRIM
A funo RTRIM utilizada para remover caracteres especificados de
uma coluna/valor especificado.
SINTAXE:

RTRIM (COL/VAL,CARACTER)

Aula de Banco de dados

Remove da direita da coluna/valor a(s) ocorrencia(s) encontradas do carater


informado ou da combinao deles quando informado mais de um caracter.
Exemplo:
SELECT nom_cidade, RTRIM(nom_cidade,S),RTRIM(nom_cidade,AUS)
FROM aluno
Nom_cidade
(nom_cidade,AUS)

BELO HORIZONTE
BELO HORIZONTE
MANAUS
NATAL

RTRIM(nom_cidade,S)

BELO HORIZONTE
BELO HORIZONTE
MANAU
NATAL

RTRIM

BELO HORIZONTE
BELO HORIZONTE
MAN
NATAL

FUNO REVERSE
A funo REVERSE retorna o campo ao contrario, ou seja, de tras para
frente.
SINTAXE:

REVERSE (campo)

Exemplo:
SELECT
RESERVE (SQL) FROM aluno;
REVERSE(SQL)
LQS
FUNO LEN
A funo LEN retorna o numero de caracteres de uma coluna/valor
especificado.
SINTAXE:

LEN (VAL)

Exemplo:
SELECT
LEN(ORACLE),LEN(nom_aluno)

Aula de Banco de dados

FROM aluno;

LEN(ORACLE)

LEN(Nom_aluno)

6
6
6

4
5
4

FUNO LIKE
A funo LIKE utilizada para trazer um registro que inicie por uma letra
qualquer quando especificado.
SINTAXE:

WHERE produto LIKE P%

Exemplo:
SELECT * FROM aluno;
WHERE nome LIKE P%
OU
SELECT * FROM aluno;
WHERE nome LIKE %P%
No exemplo acima o retorno ser todos os nome que tem a letra P.
FUNO ROUND

A funo ROUND arredonda o valor/coluna especificados com o numero


de casas decimais informado.
SINTAXE:

ROUND (COL/VAL,N)

Exemplo:
SELECT
ROUND(45.923,1),ROUND(45.963,1)
FROM DUAL;

ROUND(45.923,1)

ROUND(45.963,1)

45.9

46

Aula de Banco de dados

FUNO SQRT

A funo SQRT faz o calculo da raiz quadrada do numero/coluna


especificado.
SINTAXE:

SQRT (COL/VAL)

Exemplo: SELECT SQRT(4) FROM curso;


No exemplo acima o retorno ser 2 que a raiz quadrada de 4.
CLAUSULA GROUP BY
A clausula group by utilizada para dividir a tabela em conjuntos
menores de dados relacionados entre si.
Exemplo: Para contar os alunos por cidade.
SELECT
nom_cidade, count(*) FROM curso;
group by nom_cidade;
NOM_CIDADE
BELO HORIZONTE
CAMPINAS
CURITIBA

COUNT(*)
2
1
1

CLAUSULA HAVING (Como se fosse o WHERE)


A clausula having utilizada para selecionar os grupos retornados de
uma seleo feita com group by.
Exemplo: Para selecionar as cidades com mais de dois alunos.
SELECT nom_cidade
group by nom_cidade
having count(*) >= 2;
NOM_CIDADE
BELO HORIZONTE
MANAUS
NATAL

FROM aluno

Aula de Banco de dados

SQL Alias
Em SQL podemos utilizar um alias (pseudnimo) para dar um nome a uma
tabela ou a uma coluna.
Isto pode ser uma boa soluo se voc tiver uma tabela ou coluna com nomes
muito longos ou complexos.
O nome do alias pode ser qualquer coisa, mas geralmente curto.
Sintaxe do SQL Alias para Tabelas:
SELECT nome_coluna(s) FROM nome_tabela AS nome_alias
Sintaxe do SQL Alias para Colunas:
SELECT nome_coluna AS nome_alias FROM nome_tabela
Exemplo de Alias:
Suponhamos que temos uma tabela chamada "Pessoas" e outra tabela
chamada "Ordem_Produtos". Daremos a estas tabela os aliases de "p" e "op",
respectivamente.
Agora queremos listar todas as ordens "Pedro Gomes" responsvel.
Ns usamos a seguinte SELECT declarao:
SELECT op.IDOrdem, p.Sobrenome, p.Nome
FROM Pessoas AS p,
Ordem_Produtos AS op
WHERE p.Sobrenome='Gomes'
and p.Nome='Pedro'
A mesma declarao SELECT sem aliases:
SELECT Ordem_Produtos.IDOrdem, Pessoas.Sobrenome, Pessoas.Nome
FROM Pessoas,
Ordem_Produtos
WHERE Pessoas.Sobremone='Gomes'
and Pessoas.Nome='Pedro'
Como voc pode ver a partir das duas declaraes acima; aliases tornam mais
fceis a leitura e a escrita em ambas as consultas.

Aula de Banco de dados

O operador SQL LIKE


O operador LIKE usado em uma clusula WHERE para procurar um
determinado padro em uma coluna.
Sintaxe SQL LIKE
SELECT nome(s)_coluna(s)
FROM nome_tabela
WHERE nome_coluna LIKE padro

Exemplo do operador LIKE


A tabela Pessoas:
ID Sobrenome Nome
Rua
Cidade
1
Silva
Paulo
Capital, 32
So Paulo
2
Tavares
Pedro Sete de Maro, 23 Campo Grande
3
Gomes
Fabio
Dos Anjos, 44
Manaus
Agora queremos selecionar as pessoas que vivem em uma cidade que
comea com "s" a partir da tabela acima.
Ns usamos a seguinte declarao SELECT:
SELECT * FROM Pessoas
WHERE Cidade LIKE 's%'
O "%" sinal pode ser utilizado para definir caracteres coringas (letras em
faltando
o padro), tanto antes como depois do padro.
O resultado ficar assim:
ID
1

Sobrenome
Silva

Nome
Paulo

Rua
Capital, 32

Cidade
So Paulo

Em seguida, queremos selecionar as pessoas que vivem em uma cidade


que termina com um "s" da tabela "Pessoas".
Ns usamos a seguinte declarao SELECT:
SELECT * FROM Pessoas
WHERE Cidade LIKE '%s'

Aula de Banco de dados

O resultado ficar assim:


ID

Sobrenome

Nome

Rua

Cidade

Gomes

Fabio

Dos Anjos, 44

Manaus

Em seguida, queremos selecionar as pessoas que vivem em uma cidade


que contm o padro "gra" a partir da tabela "Pessoas".
Ns usamos a seguinte declarao SELECT:
SELECT * FROM Pessoas
WHERE Cidade LIKE '%gra%'
O resultado ficar assim:
ID Sobrenome Nome
Rua
Cidade
2
Tavares
Pedro Sete de Maro, 23 Campo Grande
Tambm possvel selecionar as pessoas que vivem em uma cidade
que no contm o padro "gra" a partir da tabela "Pessoas", usando
a palavra-chave NOT.
Ns usamos a seguinte declarao SELECT:
SELECT * FROM Pessoas
WHERE Cidade NOT LIKE '%gra%'
O resultado ficar assim:
ID

Sobrenome

Nome

Rua

Cidade

1
3

Silva
Gomes

Paulo
Fabio

Capital, 32
Dos Anjos, 44

So Paulo
Manaus

A clusula TOP
A clusula TOP utilizada para especificar o nmero de registros de retorno de
uma consulta.
A clusula TOP pode ser muito til em grandes tabelas com milhares de
registros. Retornando um grande nmero de registros teremos impacto no
desempenho.
Nota: Nem todos os sistemas de bancos de dados suportam a clusula
TOP (Transact-SQL).

Aula de Banco de dados

Sintaxe SQL SELECT TOP


SELECT TOP nmero|porcentagem nome(s)_coluna(s)
FROM nome_tabela
Exemplo de SQL TOP :
A tabela Pessoas:
ID Sobrenome Nome
Rua
Cidade
1
Silva
Paulo
Capital, 32
So Paulo
2
Tavares
Pedro Sete de Maro, 23 Campo Grande
3
Gomes
Fabio
Dos Anjos, 44
Rio de Janeiro
4
Neres
Carlos
Amazonas, 19
Bauru
Agora queremos selecionar apenas os dois primeiros registros na tabela acima.

Ns usamos a seguinte sentena SELECT:


SELECT TOP 2 * FROM Pessoas
O resultado ficar assim:
ID Sobrenome Nome

Rua

Cidade

1
Silva
Paulo
Capital, 32
So Paulo
2
Tavares
Pedro Sete de Maro, 23 Campo Grande
Agora queremos selecionar apenas 50% dos registros na tabela acima.
Ns usamos a seguinte declarao SELECT:
SELECT TOP 50 PERCENT * FROM Pessoas

O resultado ficar assim:


ID Sobrenome Nome
Rua
Cidade
1
Silva
Paulo
Capital, 32
So Paulo
2
Tavares
Pedro Sete de Maro, 23 Campo Grande

Aula de Banco de dados

A sentena SQL UPDATE

A sentena UPDATE utilizada para atualizar os registros existentes em uma


tabela.
Sintaxe do SQL UPDATE:
UPDATE nome_da_tabela
SET coluna1=valor1, coluna2=valor2,...,
colunaN=valorN
WHERE alguma_coluna=algum_valor

Nota: Observe a clusula WHERE na sintaxe UPDATE. A clusula WHERE


especifica qual registro ou registros que deveriam ser atualizadas. Se voc
omitir a clusula WHERE, todos os registros sero atualizados!
Exemplo de SQL UPDATE
A tabela Pessoas:
ID Sobrenome Nome
Rua
Cidade
1
Silva
Paulo
Capital, 32
So Paulo
2
Tavares
Pedro Sete de Maro, 23 Campo Grande
3
Gomes
Fabio
Dos Anjos, 44
Rio de Janeiro
4
Neres
Carlos
Amazonas, 19
Bauru
5
Cardoso
Ana
Pedrosa, 889
Manaus

Agora queremos atualizar a pessoa "Fabio Gomes" na tabela "Pessoas".


Ns usamos a seguinte instruo SQL:
UPDATE Pessoas
SET Rua='Graa, 67', Cidade='Pelotas'
WHERE Sobrenome='Gomes' AND Nome='Fabio'
A tabela Pessoas ficar assim:
ID
1
2
3
4
5

Sobrenome
Silva
Tavares
Gomes
Neres
Cardoso

Nome
Paulo
Pedro
Fabio
Carlos
Ana

Rua
Capital, 32
Sete de Maro, 23
Graa, 67
Amazonas, 19
Pedrosa, 889

Cidade
So Paulo
Campo Grande
Pelotas
Bauru
Manaus

Aula de Banco de dados

Aviso Importante para o SQL UPDATE


Tenha cuidado ao atualizar registros. Se tivssemos a clusula WHERE
omitida no exemplo acima, como este exemplo:
UPDATE Pessoas
SET Rua='Graa, 67', Cidade='Pelotas'
A tabela Pessoas ficaria assim:
ID
1
2
3
4
5

Sobrenome
Silva
Tavares
Gomes
Neres
Cardoso

Nome
Paulo
Pedro
Fabio
Carlos
Ana

Rua
Graa, 67
Graa, 67
Graa, 67
Graa, 67
Graa, 67

Cidade
Pelotas
Pelotas
Pelotas
Pelotas
Pelotas

A funo SQL COUNT()


A funo COUNT() retorna o nmero de linhas que corresponde a um
determinado critrio.
SQL COUNT(nome_coluna)
A funo COUNT(nome_coluna) retorna o nmero de valores (valores nulos
no sero contados) da coluna especificada:
SELECT COUNTnome_coluna) FROM nome_tabela
Sintaxe do SQL COUNT(*)

A funo COUNT(*) retorna o nmero de registros em uma tabela:


SELECT COUNT(*) FROM nome_tabela
Sintaxe do SQL COUNT (DISTINCT nome_coluna)
SELECT COUNT(DISTINCT nome_coluna) FROM nome_tabela
Nota: COUNT (DISTINCT) trabalha com Oracle e Microsoft SQL Server, mas
no com o Microsoft Access.

Aula de Banco de dados

Exemplo do SQL COUNT (nome_coluna)


Temos a seguinte tabela "Pedidos" :
ID
1
2
3
4
5
6

DataPedido
2008/11/12
2008/10/23
2008/09/02
2008/09/03
2008/08/30
2008/10/04

PreoPedido
1000
1600
700
300
2000
100

Cliente
Joo
Paulo
Joo
Joo
Pedro
Paulo

Agora queremos contar o nmero de pedidos de "Paulo".


Ns usamos a seguinte instruo SQL:
SELECT COUNT(Cliente) AS ClientePaulo FROM Pedidos
WHERE Cliente='Paulo'
O resultado do comando SQL acima ser 2, pois o cliente Paulo tem 2
pedidos feitos no total:
ClientePaulo

A funo SQL COUNT()


Exemplo do SQL COUNT (*)
Se ns omitirmos a clusula WHERE, como neste exemplo:
SELECT COUNT(*) AS NumerosPedidos FROM Pedidos
O resultado ficar assim:
NumeroPedidos 6
com o nmero total de linhas na tabela.
Exemplo do SQL COUNT (DISTINCT nome_coluna)
Agora queremos contar o nmero de clientes exclusivos na tabela "Pedidos".
Ns usamos a seguinte instruo SQL:
SELECT COUNT(DISTINCT Cliente) AS NumeroClientes
FROM Pedidos
O resultado ficar assim:
NumeroClientes 3

Aula de Banco de dados

com o nmero de clientes exclusivos (Paulo, Joo, Pedro) na tabela "Pedidos".


O Operador IN
O operador IN permite especificar valores mltiplos em uma clusula WHERE.
Sintaxe SQL IN
SELECT nome_coluna(s)
FROM nome_tabela
WHERE nome_coluna IN (valor1,valor2,...)
Exemplo do Operador IN
A tabela Pessoas:
P_Id Nome
Sobrenome

Endereo

Cidade

Jos

Silva

Rua das Graas, 11

Bauru

Carlos

Peres

Rua Bahia, 48

Campo Grande

Joo

Ferreira

Rua Lapa, 25

Manaus

Agora queremos escolher as pessoas com um sobrenome igual ao "Silva" ou


"Ferreira" a partir da tabela acima.
Ns usamos a seguinte declarao SELECT:
SELECT * FROM Pessoas
WHERE Sobrenome IN ('Silva','Ferreira')
O resultado ficar assim:
P_Id
Nome
Sobrenome

Endereo

Cidade

Jos

Silva

Rua das Graas, 11

Bauru

Joo

Ferreira

Rua Lapa, 25

Manaus

Assim, escolhemos os sobrenomes que esto dentro da clusula IN.

A Sentena SQL SELECT DISTINCT


Em uma tabela, algumas das colunas podem conter valores duplicados. Este
no um problema, no entanto, s vezes voc ir querer listar apenas os
valores diferentes (distintos) em uma tabela.
A palavra chave DISTINCT pode ser usada para retornar apenas valores
distintos (diferentes).
Sintaxe SQL SELECT DISTINCT
SELECT DISTINCT nome_coluna(s)
FROM nome_tabela
Exemplo de SELECT DISTINCT
A tabela "Pessoas":

Aula de Banco de dados

P_Id

Nome

Sobrenome

Endereo

Cidade

Jos

Silva

Rua das Graas, 11

Bauru

Carlos

Peres

Rua Bahia, 48

Campo Grande

Joo

Ferreira

Rua Lapa, 25

Bauru

Agora queremos selecionar apenas os valores distintos a partir da coluna


chamada "Cidade" da tabela acima.
Ns usamos a seguinte declarao SELECT:
SELECT DISTINCT Cidade FROM Pessoas
O resultado ficar assim: Cidade ( Bauru, Campo Grande)
SQL Alias
Em SQL podemos utilizar um alias (pseudnimo) para dar um nome a uma
tabela ou a uma coluna.
Isto pode ser uma boa soluo se voc tiver uma tabela ou coluna com nomes
muito longos ou complexos.
O nome do alias pode ser qualquer coisa, mas geralmente curto.
Sintaxe do SQL Alias para Tabelas:
SELECT nome_coluna(s)
FROM nome_tabela
AS nome_alias
Sintaxe do SQL Alias para Colunas:
SELECT nome_coluna AS nome_alias
FROM nome_tabela

Exemplo de Alias:
Suponhamos que temos uma tabela chamada "Pessoas" e outra tabela
chamada "Ordem_Produtos". Daremos a estas tabela os aliases de "p" e "op",
respectivamente.
Agora queremos listar todas as ordens "Pedro Gomes" responsvel.
Ns usamos a seguinte SELECT declarao:
SELECT op.IDOrdem, p.Sobrenome, p.Nome
FROM Pessoas AS p,
Ordem_Produtos AS op
WHERE p.Sobrenome='Gomes'
and p.Nome='Pedro'

Aula de Banco de dados

A mesma declarao SELECT sem aliases:


SELECT Ordem_Produtos.IDOrdem, Pessoas.Sobrenome, Pessoas.Nome
FROM Pessoas,
Ordem_Produtos
WHERE Pessoas.Sobremone='Gomes'
and Pessoas.Nome='Pedro'
Como voc pode ver a partir das duas declaraes acima; aliases tornam mais
fceis a leitura e a escrita em ambas as consultas.

A Clusula HAVING
A clusula HAVING foi adicionada ao SQL porque a palavra-chave WHERE
no pode ser utilizada com funes agregadas.
Sintaxe SQL do HAVING
SELECT nome_coluna, funcao_agregada(nome_coluna)
FROM nome_tabela
WHERE nome_coluna operador valor
GROUP BY nome_coluna
HAVING funcao_agregada(nome_coluna) operador valor
Exemplo SQL de HAVING Temos a seguinte tabela "Ordens":
ID_Ordem Data_Ordem Preco_Ordem Cliente
1
2
3
4
5
6

12/11/2008
23/10/2008
2/9/2008
3/9/2008
30/8/2008
4/10/2008

1000
1600
700
300
2000
100

Pedro
Jos
Pedro
Pedro
Mauro
Jos

Agora queremos descobrir se algum dos clientes tem um total de ordens


inferior a 2000.
Ns usamos o seguinte comando SQL:
SELECT Cliente, SUM(Preco_Ordem) FROM Ordens
GROUP BY Cliente
HAVING SUM(Preco_Ordem) < 2000
O resultado ficar assim:
Cliente SUM(Preco_Ordem)
Jos
1700

Aula de Banco de dados

Agora queremos descobrir se os clientes "Pedro" ou "Mauro" tem um total de


ordens maior do que 1500.
Ns adicionamos uma clusula WHERE na instruo SQL:
SELECT Cliente, SUM(Preco_Ordem) FROM Ordens
WHERE Cliente = 'Pedro' OR Cliente = 'Mauro'
GROUP BY Cliente
HAVING SUM(Preco_Ordem) > 1500
O resultado ficar assim:
Cliente SUM(Preco_Ordem)
Pedro
2000
Mauro
2000
A Funo SUM()
A funo SUM() retorna a soma total de uma coluna numrica.
Sintaxe SQL do SUM()
SELECT SUM(nome_coluna) FROM nome_tabela
Exemplo de SQL SUM()
Temos a seguinte tabela "Ordens":
ID_Ordem Data_Ordem Preco_Ordem Cliente
1
2
3
4
5
6

12/11/2008
23/10/2008
2/9/2008
3/9/2008
30/8/2008
4/10/2008

1000
1600
700
300
2000
100

Pedro
Jos
Pedro
Pedro
Mauro
Jos

Agora queremos encontrar a soma de todos os campos "Preco_Ordem".


Ns usamos o seguinte comando SQL:
SELECT SUM(Preco_Ordem) AS OrdemTotal FROM Ordens
O resultado ficar assim:
OrdemTotal
5700

Aula de Banco de dados

TRABALHANDO COM DATAS - SQL SERVER


O SQL Server suporta dois tipos de data: datetime e smalldatetime. A
principal diferena entre elas : o datetime utiliza dois inteiros de quatro bytes
para armazenamento. Os primeiros quatro bytes armazenam o nmero de dias
antes ou depois da data base. Datas menores que 01/01/1753 no so
permitidos. Os outros quatro bytes armazenam a hora do dia representado
como o nmero de milissegundos aps a meia-noite. J o tipo smalldatetime
utiliza dois inteiros de dois bytes. Os primeiros 2 bytes armazenam o nmero
de dias aps 01/01/1900. Os outros dois bytes armazenam o nmero de
minutos desde a meia-noite. Considera-se que o smalldatetime armazena data
e hora com menos preciso do que o datetime. Outra diferena entre eles
que o tipo de dados datetime armazena at centsimos de segundo e o
smalldatetime at segundos.
Exemplo: A execuo da SQL abaixo resultou nos dados da Tabela 1.
INSERT INTO [TABELA]
([data_datetime] ,[data_smalldatetime])
VALUES (Getdate() ,GetDate())
id
1
2
3

Data_datetime
2008-09-28 16:15:30.107
2008-09-28 16:15:51.217
2008-09-28 16:21:20.890

Data_smalldatetime
2008-09-28 16:16:00
2008-09-28 16:16:00
2008-09-28 16:21:00

Funo CONVERT
A funo CONVERT retorna uma data de acordo com o formato passado como
parmetro (terceiro parmetro).
SELECT CONVERT(VARCHAR,GETDATE(),0) -> retorna Sep 28 2008
4:48PM
Veja a seguir os principais formatos retornados pela funo CONVERT:
id
1
2
3
4
5
10
11
12
14
20
21

Formato
MM/DD/AA
AA.MM.DD
DD/MM/AA
DD.MM.AA
DD-MM-AA
MM-DD-AA
AA/MM/DD
AAMMDD
HH:MM:SS:MS
AAAA-MM-DD
HH:MM:SS
AAAA-MM-DD

Exemplo
09/28/08
08.09.28
28/09/08
28.09.08
28-09-08
09-28-08
08/09/28
080928
17:02:19:873
2008-09-28 17:03:34
2008-09-28

Aula de Banco de dados

23
24
101
102
103
104
105
108
110
111
112
120
121

HH:MM:SS:MS
AAAA-MM-DD
HH:MM:SS
MM/DD/AAAA
AAAA.MM.DD
DD/MM/AAAA
DD.MM.AAAA
DD-MM-AAAA
HH:MM:SS
MM-DD-AAA
AAAA/MM/DD
AAAAMMDD
AAAA-MM-DD
HH:MM:SS
AAAA-MM-DD
HH:MM:SS:MS

17:04:32.700
2008-09-28
17:05:28
09/28/2008
2008.09.28
28/09/2008
28.09.2008
28-09-2008
17:09:56
09-28-2008
2008/09/28
20080928
2008-09-28 17:11:37
2008-09-28
17:12:02.467

Referncias: http://msdn.microsoft.com/en-us/library/aa258277(SQL.80).aspx
Utilizando a clusula Case em um Select - SQL Server
Suponha que exista em sua aplicao, a tabela Pedidos. Esta tabela possui os
seguintes campos: id, data da compra, forma de pagamento e o valor. O campo
forma de pagamento (forma_pagamento) pode assumir os seguintes valores: 1
(boleto bancrio), 2 (carto de crdito VISA) ou 3 (carto de crdito
MASTERCARD).
Pedidos
id
data
forma_pagamento valor
1 12/09/2008
1
108,00
2 17/09/2008
2
52,00
3 18/09/2008
3
328,00

Para consultar as formas de pagamento cadastradas:


SELECT id, nome from Forma_Pagamento
Se quisssemos mostrar o nome da forma de pagamento escolhida,
poderamos fazer da seguinte forma:
if forma_pagamento = 1 then
nome_forma_pagamento = Boleto Bancrio
elseif forma_pagamento = 2 then
nome_forma_pagamento = Carto de Crdito VISA
else
nome_forma_pagamento = Carto de Crdito MASTERCARD
end if

Aula de Banco de dados

Mas em vez disso, podemos utilizar o comando CASE dentro do Select. Veja:
SELECT id,
CASE id
when 1 then 'Boleto Bancrio'
when 2 then 'Carto de Crdito VISA'
when 3 then 'Carto de Crdito MASTERCARD'
end as nome
FROM forma_pagamento
Suponhamos agora, que exista a tabela Clientes. Para saber se o cliente
cadastrado uma pessoa fsica ou jurdica basta olhar para o campo
pessoa_fisica. Se este campo estiver setado, imprimimos Pessoa Fsica,
caso contrrio, Pessoa Jurdica:
SELECT id,nome,
CASE
when pessoa_fisica is not null then 'Pessoa Fsica'
else 'Pessoa Jurdica'
END as tipo_pessoa
FROM clientes

NEWID(): Selecionando registros aleatrios no SQL Server


Para obter os dados de uma tabela de forma aleatria, o SQL Server dispe a
funo NEWID(). Para isto,basta utiliz-la na clusula ORDER BY de sua
consulta. Como o prprio nome diz a cada execuo gerado um novo GUID
(Global Unique Identifier) e o registro ser ordenado de acordo com esse valor.
Esses GUIDs so nicos, logo, a ordenao nunca ser igual.
Exemplo:
SELECT * FROM Clientes ORDER BY NEWID()
Podemos utilizar o TOP 1 para retornar apenas o primeiro registro de forma
aleatria: Veja:
SELECT TOP 1 * FROM Clientes ORDER BY NEWID()
A funo NEWID() pode ser usada tambm na Insero de dados na tabela.
Primeiro criamos uma tabela com dois campos: GuidCol do tipo
uniqueidentifier e NumCol do tipo inteiro.
CREATE TABLE Minha_Tabela(GuidCol uniqueidentifier, NumCol int)
Agora, faremos a insero de dados nesta tabela:
INSERT INTO Minha_Tabela(NEWID(), 4) //GuidCol nunca armazenar valor
iguais

Aula de Banco de dados

INSERT INTO Minha_Tabela(NEWID(), 5)


E por fim, selecionaremos um registro aleatrio:
SELECT * TOP 1 FROM Minha_Tabela ORDER BY NEWID() // ser
escolhido 1(uma) tupla inserida acima randomicamente.

Você também pode gostar