Buscar

#SELECT avançado #apelidos, #domine seu BD

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SELECT		e	suas	cláusulas	
Prof.	Me.	Sirlon	Thiago	
Select	
• Comando	de	seleção.	Exibe	dados	de	zero	
ou	mais	tabelas.	
• Para	as	nossas	aulas,	o	mais	estudado	e	o	
mais	extenso.	
Select	-	Comando	
•  SELECT	[	ALL	|	DISTINCT	[	ON	(	expressao	[,	...]	)	]	]	
•  				*	|	expression	[	[	AS	]	nome_saida	]	[,	...]	
•  				[	FROM	from_item	[,	...]	]	
•  				[	WHERE	condição]	
•  				[	GROUP	BY	expressao	[,	...]	]	
•  				[	HAVING	condicao	[,	...]	]	
•  				[	WINDOW	nome_window	AS	(	definicao_window	)	[,	...]	]	
•  				[	{	UNION	|	INTERSECT	|	EXCEPT	}	[	ALL	]	select	]	
•  	 	 	 	[	ORDER	BY	expression	[	ASC	|	DESC	|	USING	operador	]	[	NULLS	
{	FIRST	|	LAST	}	]	[,	...]	]	
•  				[	LIMIT	{	quan4dade	|	ALL	}	]	
•  				[	OFFSET	inicio	[	ROW	|	ROWS	]	]	
•  				[	FETCH	{	FIRST	|	NEXT	}	[	quan4dade	]	{	ROW	|	ROWS	}	ONLY	]	
•  				[	FOR	{	UPDATE	|	SHARE	}	[	OF	tabela	[,	...]	]	[	NOWAIT	]	[...]	]	
Select	-	Comando	
• Onde	from_item	pode	ser	um	desses:	
•  [	 ONLY	 ]	 tabela	 [	 *	 ]	 [	 [	 AS	 ]	 alias	
[	(	alias_coluna	[,	...]	)	]	]	
•  (	select	)	[	AS	]	alias	[	(	alias_coluna	[,	...]	)	]	
•  from_item	[	NATURAL	]	4po_join	from_item	
[	 ON	 condicao_join	 |	 USING	 (	 coluna_join	
[,	...]	)	]	
Select	-	Comando	
• SELECT	colunas	
• FROM	tabela	
• WHERE	condicao	
• GROUP	BY	colunas	
• ORDER	BY	colunas	
Select	-	Exemplo	
• Selecionar	 todos	 os	 dados	 de	 todas	 as	
colunas	de	uma	tabela	cliente:	
•  SELECT	*	FROM	cliente;	
• Selecionar	somente	a	coluna	nome	da	tabela	
produto:	
•  SELECT	nome	FROM	produto;		
Select	-	Exemplo	
• Selecionar	somente	nomes	de	produto	únicos	
(dis[ntos)	de	uma	tabela	produto:	
•  SELECT	DISTINCT	nome	FROM	produto;	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	com	valor	de	
venda	maior	que	100	reais:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	valor_venda	>	100;	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	com	valor	de	
venda	maior	que	100	reais	e	valor	de	compra	
menor	que	90	reais:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	valor_venda	>	100	
•  AND	valor_compra	<	90;	
Select	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 não	
estejam	com	o	prazo	de	validade	vencido:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	validade	>=	‘2016-03-16’;	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	que	possuam	
valor	de	venda	entre	50	e	100	reais:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	 valor_venda	 >	 50	 AND	 valor_venda	 <	
100;	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	que	possuam	
valor	de	venda	entre	50	e	100	reais:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	valor_venda	BETWEEN	50	AND	100;	
Select	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 NÃO	
possuam	valor	de	venda	entre	50	e	100	reais:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	 valor_venda	 NOT	 BETWEEN	 50	 AND	
100;	
Select	-	Exemplo	
•  Selecionar	 nomes	 dos	 produtos	 que	
comecem	com	a	letra	“A”:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	nome	LIKE	‘A%’;	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	que	possuam	
a	letra	“a”:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	nome	LIKE	‘%a%’;	
Select	-	Exemplo	
•  Selecionar	 nomes	 dos	 produtos	 que	
terminem	com	a	letra	“a”:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	nome	LIKE	‘%a’;	
Select	-	Exemplo	
•  Selecionar	 nomes	 dos	 produtos	 que	
comecem	com	a	letra	“a”	ou	“b”:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	nome	LIKE	‘A%’	
•  OR	nome	LIKE	‘B%’;	
Select	-	Exemplo	
•  Selecionar	 nomes	 dos	 produtos	 que	
pertençam	aos	la[cínios	ou	carnes:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	categoria	=	‘La[cínios’	
•  OR	categoria	=	‘Carnes’;	
Select	-	Exemplo	
•  Selecionar	 nomes	 dos	 produtos	 que	
pertençam	aos	la[cínios	ou	carnes:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	categoria	IN	(‘La[cínios’,	‘Carnes’);	
Select	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 NÃO	
pertençam	aos	la[cínios	ou	carnes:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	categoria	<>	‘La[cínios’	
•  AND	categoria	<>	‘Carnes’;	
Select	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 NÃO	
pertençam	aos	la[cínios	ou	carnes:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	 categoria	 NOT	 IN	 (‘La[cínios’,	
‘Carnes’);	
Select	-	Exemplo	
• Selecionar	nomes	dos	produtos	que	estejam	
sem	categoria:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	categoria	IS	NULL;	
Alias	-	Exemplo	
• Selecionar	nomes	dos	produtos	de	A	a	Z:	
SELECT	nome	
FROM	produto	
ORDER	BY	nome	ASC	
	
Nota:	o	ASC,	geralmente,	é	opcional.	O	padrão	
é	ASC	
Alias	-	Exemplo	
• Selecionar	nomes	dos	produtos	de	Z	a	A:	
SELECT	nome	
FROM	produto	
ORDER	BY	nome	DESC	
Alias	-	Exemplo	
• Selecionar	nomes	dos	produtos	com	preço	de	
venda	do	maior	para	o	menor:	
SELECT	nome	
FROM	produto	
ORDER	BY	preco_venda	DESC	
ALIASES	(APELIDOS)	
Alias	
• Para	 facilitar	 a	 iden[ficação	 dos	 elementos	
em	 uma	 seleção,	 é	 possível	 criar	 apelidos	
para	os	itens	da	consulta	
• Dá-se,	 então,	 um	 alias	 (ou	 apelido)	 a	 uma	
tabela	
• Todas	 as	 colunas	 devem	 ser	 iden[ficadas	 a	
que	tabela	pertencem	
Alias	
• Necessário	 em	 algumas	 consultas	 com	 JOIN	
(junções)	
• Pode	 não	 ser	 u[lizado,	 ou	 seja,	 existe	 um	
modo	alterna[vo	
Alias	-	Comando	
• SELECT	apelido.coluna	
• FROM	tabela	[	AS	]	apelido	
•  Nota:	o	AS	é	opcional	
Alias	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 da	 tabela	
produto	SEM	A	UTILIZAÇÃO	DO	ALIAS:	
• SELECT	produto.nome	
• FROM	produto	
Alias	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 da	 tabela	
produto:	
• SELECT	prod.nome	
• FROM	produto	AS	prod	
Alias	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 da	 tabela	
produto	 e	 a	 projeção	 do	 preço	 de	 venda	
acrescido	de	30%:	
SELECT	prod.nome,	
						prod.preco_venda	*	1.3	AS	produto_30	
FROM	produto	AS	prod	
FUNÇÕES	NATIVAS	
Funções	nativas	
• Existem	 funções	 na[vas	 do	 PostgreSQL	 que	
podem	 ser	 u[lizadas	 em	 diversas	 partes	 da	
consulta	
Funções	nativas	
•  Funções	agregadas:	
•  MIN(valor)	–	retorna	o	menor	valor	da	expressão	
passada.	 Recebe	 valores	 dos	 [pos	 array,	
numérico,	string	ou	date/[me.	
•  MAX(valor)	–	 retorna	o	maior	valor	da	expressão	
passada.	Recebe	os	mesmos	[pos	que	MIN.	
•  AVG(valor)	 –	 retorna	 a	 média	 aritmé[ca	 do(s)	
valor(es)	 passado(s).	 Recebe	 valores	 dos	 [pos	
smallint,	 int,	 bigint,	 real,	 double	 precision,	
numeric	ou	intervalo.	
Funções	nativas	
• Funções	agregadas:	
•  SUM(valor)	 –	 retorna	 a	 soma	 dos	 valores	 da	
expressão	 passada.	 Recebe	 valores	 dos	 [pos	
smallint,	 int,	 bigint,	 real,	 double	 precision,	
numeric,	intervalo	ou	monetário.	
• COUNT(valor)	–	 retorna	a	contagem	de	 linhas	
da	 expressão	 passada.	 Recebe	 qualquer	
expressão	 (coluna,	 consulta,	 view,	 resultado	
de	uma	função	etc.)	
Funções	nativas	
• Funções	para	String:	
•  LOWER(valor)	 –	 deixa	 o	 valor	 passado	 em	
caixa	baixa	(minúsculo).	
• UPPER(valor)	–	deixa	o	valor	passado	em	caixa	
alta	(maiúsculo).	
•  LENGTH(valor)	 –	 retorna	 a	 quan[dade	 de	
caracteres	da	string	passada.	
Funções	nativas	
•  Funções	para	data:	
•  NOW()	 –	 retorna	 o	 dia	 e	 hora	 atuais	 com	 fuso	
horário.	
•  current_Cme,	 current_date,	 current_Cmestamp	
–	 mesmo	 que	 NOW.	 Time	 para	 hora,	 date	 para	
data,	[mestamp	para	data	e	hora.	
•  EXTRACT(valor)	–	extrai	o	campo	da	data	passada.	
Recebe	um	[mestamp.	
•  AGE(valor1,	valor2)	–	 calcula	o	 intervalo	entre	os	
dois	valores	passados.	Recebe	dois	[mestamp.	
Funções	Nativas	-	Exemplo	
• Selecionar	 a	 quan[dade	 de	 produtos	 que	
possuem	a	letra	“A”	em	seus	nomes:	
•  SELECTCOUNT(*)	AS	quan[dade	
•  FROM	produto	
•  WHERE	nome	LIKE	‘%a%’;	
Funções	Nativas	-	Exemplo	
• Selecionar	 os	 produtos	 com	 menor	 e	 maior	
preço	de	venda:	
SELECT	MIN(preco_venda)	AS	menor,	
								MAX(preco_venda)	AS	maior	
FROM	produto;	
Funções	Nativas	-	Exemplo	
• Selecionar	 a	 soma	 dos	 preços	 de	 venda	 de	
todos	os	produtos:	
SELECT	SUM(preco_venda)	
FROM	produto;	
Funções	Nativas	-	Exemplo	
• Selecionar	 a	média	 dos	 preços	 de	 venda	 de	
todos	os	produtos:	
SELECT	AVG(preco_venda)	
FROM	produto;	
Funções	Nativas	-	Exemplo	
• Selecionar	 os	 nomes	 dos	 produtos	 em	
maiúsculo	e	em	minúsculo:	
SELECT	LOWER(nome)	AS	minusculo	
	 	UPPER(nome)	AS	maiusculo	
FROM	produto;	
Funções	Nativas	-	Exemplo	
• Selecionar	 os	 produtos	 com	 nomes	 maiores	
que	8	caracteres:	
SELECT	nome	
FROM	produto	
WHERE	LENGTH(nome)	>	8;	
Funções	Nativas	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 não	
estejam	com	o	prazo	de	validade	vencido:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	validade	>=	NOW();	
Funções	Nativas	-	Exemplo	
• Selecionar	 nomes	 dos	 produtos	 que	 não	
estejam	com	o	prazo	de	validade	vencido:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	validade	>=	current_date;	
Funções	Nativas	-	Exemplo	
• Selecionar	 nomes	dos	 produtos	 que	 vencem	
esse	ano:	
•  SELECT	nome		
•  FROM	produto	
•  WHERE	EXTRACT(year	from	validade)	=	2016;	
Funções	Nativas	-	Exemplo	
• Selecionar	 quanto	 tempo	 falta	 para	 os	
produtos	expirarem:	
•  SELECT	 AGE(validade,	 current_[mestamp)	 AS	
intervalo	
•  FROM	produto;	
Próxima	aula	
• Cláusulas	GROUP	BY	e	HAVING	
•  Joins	
• Subconsultas	
Exercícios	
• Resolver	 os	 exercícios	 da	 Folha	 de	
Exercícios	2.

Continue navegando