Professional Documents
Culture Documents
SQL
Padro de linguagem de consulta relacional
aceito pelos comits ANSI e ISO.
Histrico
Criadano incio da dcada 70 pela IBM.
SQL-86 ou SQL1.
SQL-92 ou SQL2.
SQL-99 ou SQL3.
Caractersticas
Linguagemdeclarativa.
DML e DDL.
1
SQL
DML
SELECT
INSERT
UPDATE
DELETE
DDL
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
DML
LINGUAGEM DE
MANIPULAO DE DADOS
2
Comando SELECT
Estrutura Bsica
SELECT <clusula-projeo>
FROM <origem-dados>
WHERE <condio-seleo>
GROUP BY <critrio-grupo>
HAVING <condio-grupo>
ORDER BY <critrio-ordenamento>
Comando SELECT
Clusula de projeo
Lista de elementos separados por vrgula.
3
Exemplo SQL
Listar para tabela jogadores exemplos de
projeo de constantes, colunas e expresses.
Comando SELECT
Clusula FROM
Determina a tabela onde os dados sero obtidos na
resoluo da consulta.
4
Exemplo SQL
Listar o cdigo, o nome e a data de nascimento
de todos os jogadores. Os apelidado para as
colunas devem ser cdigo, nome e data,
respectivamente.
Comando SELECT
Clusula WHERE
Define uma expresso condicional cujo resultado da
avaliao ir determinar quais as linhas da tabela que
sero recuperadas.
5
Exemplo SQL
Obter o cdigo, o nome e o salrio de todos os
jogadores do time 1 que ganham mais que R$
30.000.
Comando SELECT
Consideraes
O identificador DISTINCT pode ser utilizado na
projeo para retirar linhas repetidas do resultado.
6
Exemplo SQL
Obter o nome e o cdigo do time de todos os
jogadores.
Comando SELECT
Funes de agregao
Count(
Count [distinct] coluna )
Recupera o nmero de elementos de um determinado grupo.
Quando especificado com o identificador DISTINCT, efetua a
contagem dos valores diferentes existentes na coluna.
Sum(
Sum [distinct] coluna )
Calcula o somatrio dos valores de uma coluna.
7
Comando SELECT
Funes de agregao
Avg(
Avg [distinct] coluna )
Obtm a mdia entre os valores de uma coluna.
Min(
Min coluna )
Obtm o menor valor armazenado em uma coluna.
Max(
Max coluna )
Obtm o maior valor armazenado em uma coluna.
Exemplo SQL
Listar o total de linhas, o total de times
diferentes e o maior salrio existente na tabela
jogadores.
8
Comando SELECT
Clusula GROUP BY
A clusula GROUP BY permite que os dados
consultados sejam agrupados segundo um
determinado critrio.
Comando SELECT
Clusula GROUP BY
Cada item de grupo pode ser uma coluna ou uma
expresso.
9
Exemplo SQL
Recuperar para cada time, a quantidade de
jogadores, o menor salrio, o maior salrio e a
mdia salarial.
Exemplo SQL
10
Comando SELECT
Consideraes sobre consultas
agrupadas
A consulta agrupada pode ser combinada com a
clusula WHERE, sendo que os dados s so
agrupados depois de filtrados.
Exemplo SQL
Listar quanto cada patrocinador investiu em
cada ano a partir do ano 2000. O resultado deve
conter o cdigo do patrocinador, o ano do
patrocnio e o total investido.
11
Comando SELECT
Clusula HAVING
Funciona de modo similar clusula WHERE, sendo que o filtro
aplicado aos grupos formados pela clusula GROUP BY.
Exemplo SQL
Selecionar o cdigo, o total de atletas, o maior
salrio e a mdia salarial daqueles times que
possuam salrios maiores do que R$ 30.000.
12
Exemplo SQL
Listar o cdigo, o ano do patrocnio e o total
investido daqueles patrocinadores que
investiram mais de R$ 6.000.000,00 em um
mesmo ano a partir de 2001.
Comando SELECT
Clusula ORDER BY
Um resultado pode ser ordenado por qualquer coluna
ou elemento projetado.
13
Comando SELECT
Clusula ORDER BY
Alguns SGBDs permite que a clusula de ordenao
possa ser indicada por nmeros que representam os
elementos projetados no SELECT.
Exemplo SQL
Listar os dados dos jogadores das posies de
cdigo 1, 2 e 3 que ganham mais que R$
30.000. O resultado deve ser ordenado
ascendentemente pelo cdigo do time, e para
um mesmo time, a ordem dos nomes deve ser
decrescente.
14
Exemplo SQL
Listar os dados dos times que pagam um salrio
inferior a R$ 20.000. O resultado deve estar
organizado em ordem decrescente de mdia
salarial e maior salrio.
Comando SELECT
Produto cartesiano
A clusula FROM admite que seja especificada uma
lista de tabelas separadas por vrgula. Se nenhuma
condio de juno for definida na clusula WHERE,
o resultado da seleo o produto cartesiano entre
as tabelas.
15
Exemplo SQL
Listar a combinao de todos os times com
todos os jogadores ordenando pelo nome do
time e nome do jogador.
Comando SELECT
Juno natural
Uma forma comum e genrica para definio de juno natural
utilizar as operaes de seleo e produto cartesiano
combinadas.
16
Comando SELECT
Juno natural
As vrias condies de juno devem formar uma "corrente de
junes" entre todas as tabelas da clusula FROM.
Exemplo SQL
Listar o cdigo, nome, o cdigo do time e o
nome do time de todos os jogadores
cadastrados. O resultado deve ser ordenando
por nome do time e nome do jogador.
17
Exemplo SQL
Listar os patrocinadores de cada time no ano de
2001. O resultado deve conter ordenadamente o
nome do time, o nome do patrocinador e o valor
patrocinado.
Comando SELECT
Juno natural
Outra forma de implementar a juno natural utilizar
o operador JOIN na clusula FROM para indicar as
tabelas que iro fazer parte da juno.
Sintaxe:
Tabela-1 JOIN Tabela-2 ON <condio-juno>
18
Exemplo SQL
Listar o nome, o nome do time e a posio de
todos os jogadores. O resultado deve ser
ordenado por nome do time e nome do jogador.
Comando SELECT
Juno natural
A existncia da juno natural em um determinado
comando no inviabiliza a utilizao das demais
clusulas do comando SELECT.
19
Exemplo SQL
Listar a mdia salarial de cada time. O resultado
deve conter alm da mdia salarial, o cdigo e o
nome do time ordenando pelo nome do time.
Comando SELECT
20
Exemplo SQL LEFT JOIN
Recuperar para cada time todos os seus
jogadores. O resultado deve conter o cdigo e o
nome do time e o nome do jogador. Os times
que no possurem jogadores devem ser
recuperados ordenando pelo nome do time e
nome do jogador.
21
Exemplo SQL FULL JOIN
Recuperar para cada time todos os seus
jogadores. O resultado deve conter o cdigo, o
nome do time e o nome do jogador. Os times
sem jogadores, e os jogadores sem time, devem
ser listados ordenando pelo nome do time e
nome do jogador.
22
Comando SELECT
Subselect
um recurso oferecido pelo SQL que permite a um
comando obter dinamicamente dados de um outro
para composio do resultado.
Exemplo SQL
Listar o cdigo e o nome do time por onde o
jogador de cdigo 2 j atuou.
23
Comando SELECT
No exemplo anterior, os times obtidos do
resultado da consulta tabela histricos so
automaticamente utilizados na seleo dos
dados da tabela times.
Exemplo SQL
Recuperar o cdigo, o nome e o salrio dos
jogadores de melhor remunerao.
24
Comando SELECT
Subselects com ligao
possvel para um subselect utilizar dados oriundos
do select mais externo.
Exemplo SQL
Obter o cdigo, o nome do time, o nome do
jogador e o salrio dos jogadores mais bem
remunerados em cada time ordenando pelo
nome do time e nome do jogador.
25
Comando SELECT
No exemplo anterior, o subslect utiliza na sua condio
de seleo o valor do cdigo do time do select externo (
j.cod_time ).
Comando SELECT
O operador EXISTS
normalmente utilizado em situaes de subselects
onde o operador IN pode ser aplicado.
26
Exemplo SQL
Recuperar o cdigo e o nome do time por onde o
jogador 2 j atuou.
Comando SELECT
Uma lgica de execuo possvel para o
exemplo anterior.
27
Comando SELECT
O subselect na clusula HAVING funciona de
maneira anloga ao subselect na clusula
WHERE.
Exemplo SQL
Listar os times que possuem uma mdia salarial
superior a mdia salarial de todos os jogadores.
28
Exemplo SQL
Obter os dados dos patrocinadores que em um
determinado ano, investiram mais que a mdia
anual.
Comando SELECT
Um subselect na clusula FROM funciona como
uma tabela dinmica cujos dados so obtidos
em tempo de execuo do comando de seleo.
29
Exemplo SQL
Recuperar o cdigo do time, o nome do jogador e
o salrio dos jogadores mais bem remunerados
de cada time.
Comando SELECT
O subselect tambm pode ser definido como um
elemento de projeo.
30
Exemplo SQL
Listar o cdigo, o nome, o salrio e o nome do
time de todos os jogadores que ganham mais que
R$ 30.000.
Comando SELECT
Operador UNION
Implementa a operao relacional de unio, ou seja, recupera,
sem repetio, as linhas pertencentes aos dois comandos de
seleo.
31
Exemplo SQL
Obter os patrocinadores de 2000 e os times que
participaram do campeonato 1 ordenando pelo
nome do patrocinador.
Exemplo SQL
Encontrar os patrocinadores que jamais
patrocinaram o time de cdigo 4 ordenando pelo
nome do patrocinador.
OBS: (subtrao de conjuntos UNION)
32
Exemplo SQL
Obter os times onde j atuaram tanto o jogador 2
quanto o jogador 3 ordenando pelo nome do time.
OBS: (Intercesso de conjuntos)
Comando INSERT
Sintaxe
INSERT INTO <tabela>
VALUES( <lista_de_valores> );
33
Comando INSERT
Sintaxe
INSERT INTO <tabela>
VALUES( <lista_de_valores> );
Comando INSERT
Sintaxe
INSERT INTO <tabela>
VALUES( <lista_de_valores> );
34
Exemplo SQL
insert into times
values ( 90, 'SE', 'Sergipe' );
Exemplo SQL
35
Comando DELETE
Sintaxe
DELETE FROM <tabela>
[ WHERE <condio> ];
Comando DELETE
Sintaxe
DELETE FROM <tabela>
[ WHERE <condio> ];
Pode
ser usado subselect na clusula
WHERE.
36
Exemplo SQL
delete from times;
Comando UPDATE
Sintaxe
UPDATE<tabela>
SET <lista_de_atribuies>
[ WHERE <condio> ];
37
Comando UPDATE
Sintaxe
UPDATE<tabela>
SET <lista_de_atribuies>
[ WHERE <condio> ];
Exemplo SQL
update jogadores
set dat_nasc = '1979-10-09'),
cod_pos = 5
where cod_jog = 1;
update jogadores j
set salario = salario * 1.1
where exists( select t.cod_time
from times t
where t.uf_time = 'RJ' and
t.cod_time = j.cod_time );
38
DDL
LINGUAGEM DE DEFINIO
DE DADOS
39
Exemplo SQL
TABELA PERMANENTE
create table campeonatos
(
cod_camp int not null check( cod_camp > 0 ),
dsc_camp varchar(40) not null,
ano int not null check( ano > 1972 ),
tipo char(1) not null check( tipo in( 'E','N','R' ) ),
dat_ini smalldatetime not null,
dat_fim smalldatetime not null,
def_tipo char(2),
constraint campeonatos_pk primary key( cod_camp ),
constraint campeonatos_ck_datas check( dat_ini < dat_fim )
);
Exemplo SQL
TABELA TEMPORRIA LOCAL #
create table #campeonato
(
cod_camp int not null check( cod_camp > 0 ),
dsc_camp varchar(40) not null,
ano int not null check( ano > 1972 ),
tipo char(1) not null check( tipo in( 'E','N','R' ) ),
dat_ini smalldatetime not null,
dat_fim smalldatetime not null,
def_tipo char(2),
constraint campeonatos_pk primary key( cod_camp ),
constraint campeonatos_ck_datas check( dat_ini < dat_fim )
);
40
Exemplo SQL
TABELA TEMPORRIA GLOBAL ##
create table ##campeonato
(
cod_camp int not null check( cod_camp > 0 ),
dsc_camp varchar(40) not null,
ano int not null check( ano > 1972 ),
tipo char(1) not null check( tipo in( 'E','N','R' ) ),
dat_ini smalldatetime not null,
dat_fim smalldatetime not null,
def_tipo char(2),
constraint campeonatos_pk primary key( cod_camp ),
constraint campeonatos_ck_datas check( dat_ini < dat_fim )
);
41
Comando DROP TABLE
Sintaxe
DROP TABLE table_name
AS
select_statement
42
Exemplo SQL
CREATE VIEW
create view v_jogadores
as
select t.cod_time, t.nom_time, j.cod_jog,
j.nom_jog, p.dsc_pos
from times t, jogadores j, posicoes p
where t.cod_time = j.cod_time and
j.cod_pos = p.cod_pos
43
Comando CREATE INDEX
Sintaxe
CREATE [ UNIQUE ]
[ CLUSTERED | NONCLUSTERED ]
INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
Exemplo SQL
create index jogadores_idx_cod_time
on jogadores( cod_time );
44
Comando DROP INDEX
Sintaxe
DROP INDEX 'table.index | view.index' [ ,...n ]
FUNES DO
DIA-A-DIA
45
FUNES DO DIA A DIA
GETDATE(); LIKE;
DATEADD(); SUBSTRING();
DATEPART(); CHARINDEX();
DATENAME(); REPLACE();
DATEDIFF(); DATALENGTH()
CONVERT(); ou LEN();
CASE; REPLICATE();
RTRIN / LTRIN SP_HELP / TEXT
DICAS
Exemplo SQL
GETDATE()
Retorna a data e hora do sistema.
SELECT GETDATE()
46
Exemplo SQL
DATEADD()
Adicionaou subtrai dia, ms e ano em uma
data qualquer.
Exemplo SQL
DATEPART()
Retorna uma parte da data, dia, ms ou ano.
47
Exemplo SQL
DATENAME()
Retorna somente o nome por extenso do
ms solicitado.
Exemplo SQL
DATEDIFF()
Retorna a diferena entre datas em dia, ms ou ano.
48
Exemplo SQL
CONVERT()
Retorna a data ou hora em formato especficos de acordo com
o nmero informado no comando, [100..114].
DECLARE @I INT
SET @I = 100
Exemplo SQL
CASE
Possibilidade de escolha em um determinado conjunto de
valores.
49
Exemplo SQL
LTRIN / RTRIN
Remove os espaos em brancos da esquerda com LTrin ou da
direita com RTrin.
Exemplo SQL
LIKE
Possibilidade de uma busca mais genrica.
SELECT *
FROM MASTER.DBO.SYSOBJECTS
WHERE NAME LIKE '%USER'
50
Exemplo SQL
SUBSTRING()
Subtrair uma parte de uma string.
Exemplo SQL
CHARINDEX()
Retorna uma posio do CHAR que se
deseja localizar.
51
Exemplo SQL
REPLACE()
Substitui um conjunto de caracteres por
outro conjunto.
SELECT
REPLACE('ABCDEFGHIJLMNOPQRSTUVXZ','Hijlm
NOPQr',' -BANESE- ') 'RESULTADO'
Exemplo SQL
DATALENGTH() ou LEN()
Retorna a quantidade de CHAR em um
determinado texto.
52
Exemplo SQL
REPLICATE()
Repete o valor informado.
Exemplo SQL
SP_HELP ou SP_HELPTEXT
Mostra os detalhes do objeto informado.
53
Exemplo SQL
DICAS
Preenche com zeros esquerda.
select right('00000000000' +
convert(varchar(11), 123),11) CPF
Exemplo SQL
declare @i int
set @i = 100
54
Exemplo SQL
declare
@DescricaoProduto char (50) , -- Ex: Freezer
@PrecoProduto varchar (10) , -- Ex: 450,00
@TempoGarantiaFabricante varchar (02) , -- Ex: 06, 12 ou Meses
55