Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN...

40

Transcript of Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN...

Page 1: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Treinamento PostgreSQL - Aula 03

Eduardo Ferreira dos Santos

SparkGroup

Treinamento e Capacitação em Tecnologia

[email protected]

eduardosan.com

29 de Maio de 2013

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 1 / 38

Page 2: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Cronograma

Semana 1: 27 de Maio a 4 de Junho Administração de Dados

Semana 2: 5-11 de Junho Administração de Banco de Dados

Semana 3: 13-18 de Junho Alta disponibilidade

Semana 4: 19-24 de Junho Performance Tuning

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 2 / 38

Page 3: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Sumário

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 3 / 38

Page 4: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 4 / 38

Page 5: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas

De�nindo a base de dados

Modelo da base de dados

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 5 / 38

Page 6: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Criando a base de dados

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 6 / 38

Page 7: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Criando a base de dados

Relembrando a criação da base

Listing 1: Cria usuário, banco e SCHEMAPostgreSQL> c r e a t e u s e r u s u a r i oS h a l l the new r o l e be a s u p e r u s e r ? ( y/n ) nS h a l l the new r o l e be a l l owed to c r e a t e da t aba s e s ? ( y/n ) nS h a l l the new r o l e be a l l owed to c r e a t e more new r o l e s ? ( y/n ) n

PostgreSQL> c r ea t edb −O u s u a r i o pr ime i ro_bancoCREATE DATABASE

PostgreSQL> p sq l −U u s u a r i o pr ime i ro_banco

p s q l ( 9 . 1 . 9 )Type " help " f o r he l p .

p r ime i ro_banco=> CREATE SCHEMA us r_es co l a ;CREATE SCHEMA

pr ime i ro_banco=>\qqu i t

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 7 / 38

Page 8: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Criando a base de dados

Permissões

Listing 2: Ajusta permissões

vim / e t c / p o s t g r e s q l /9 .0/ main/pg_hba . con f

# A s e g u i n t e l i n h a :

l o c a l a l l p o s t g r e s i d e n t

# A l t e r a para f i c a r as s im :

l o c a l a l l p o s t g r e s i d e n tl o c a l pr ime i ro_banco u s u a r i o t r u s t

logout

# Como root , r e i n i c i e o banco

/ e t c / i n i t . d/ p o s t g r e s q l r e s t a r tsu − po s t g r e s

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 8 / 38

Page 9: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Criando a base de dados

Cria estrutura da base

Primeiro baixe os arquivos SQL:Estrutura da base: https://seacloud.cc/f/20677b5257/

Carga inicial de dados: https://seacloud.cc/f/20677b5257/

Em seguida execute os arquivos no banco de dados:

Listing 3: Cria basePostgreSQL> p sq l −U u s u a r i o −f c r i a−banco . s q l p r ime i ro_bancoBEGINSETp s q l : / tmp/ c r i a−banco . s q l : 1 2 : NOTA: CREATE TABLE / PRIMARY KEY á c r i a r í n d i c e

í i m p l c i t o " pk_aluno " na t a b e l a " aluno "

CREATE TABLEp s q l : / tmp/ c r i a−banco . s q l : 2 0 : NOTA: CREATE TABLE / PRIMARY KEY á c r i a r í n d i c e

í i m p l c i t o " p k _ d i s c i p l i n a " na t a b e l a " disciplina "

CREATE TABLEp s q l : / tmp/ c r i a−banco . s q l : 2 8 : NOTA: CREATE TABLE / PRIMARY KEY á c r i a r í n d i c e

í i m p l c i t o " p k _ a l u n o _ n a _ d i s c i p l i n a " na t a b e l a " a l u n o _ n a _ d i s c i p l i n a "

CREATE TABLEp s q l : / tmp/ c r i a−banco . s q l : 3 3 : NOTA: CREATE TABLE / PRIMARY KEY á c r i a r í n d i c e

í i m p l c i t o " pk_curso " na t a b e l a " curso "

CREATE TABLEp s q l : / tmp/ c r i a−banco . s q l : 4 0 : NOTA: CREATE TABLE / PRIMARY KEY á c r i a r í n d i c e

í i m p l c i t o " pk_conceito " na t a b e l a " g r a d e _ c o n c e i t o "

CREATE TABLEALTER TABLECOMMIT

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 9 / 38

Page 10: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Criando a base de dados

Carga inicial dos dados

Listing 4: Alimenta baseáííáííáííáííáííPostgreSQL> p sq l −U u s u a r i o −f c r i a−banco . s q l p r ime i ro_bancoBEGINSETINSERT 0 1INSERT 0 1INSERT 0 1INSERT 0 1INSERT 0 1INSERT 0 1INSERT 0 1( . . )INSERT 0 1INSERT 0 1INSERT 0 1COMMIT

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 10 / 38

Page 11: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 11 / 38

Page 12: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Junções (JOIN)

Junção de duas tabelas (reais ou derivadas) de acordo com as regras

do tipo particular de JOIN:

INNER JOIN A tabela resultado contém todos os resultados de ambas

as tabelas que satisfazam a condição fornecida;

OUTER JOIN A tabela resultado contém todas os resultados de

ambas as tabelas, ainda que a condição não seja

satisfeita;

CROSS JOIN Produto cartesiano dos campos das duas tabelas.

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 12 / 38

Page 13: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

INNER JOIN

Listing 5: Primeiro exemplo de INNER JOIN

SELECT d . c o d_d i s c i p l i n a ,

d . d e s c r i c a o ,

c . cod_curso ,

d . c o d_d i s c i p l i n a_ r e q u i s i t o ,

c . d e s c r i c a o

FROM u s r_e s co l a . d i s c i p l i n a d

INNER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso = c .

cod_curso

ORDER BY c . cod_curso ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 13 / 38

Page 14: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

INNER JOIN

Listing 6: Segundo exemplo de INNER JOIN

SELECT d . d e s c r i c a o ,

c . cod_curso ,

c . d e s c r i c a o ,

a . ma t r i c u l a

FROM u s r_e s co l a . d i s c i p l i n a d

INNER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso = c .

cod_curso

INNER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a ON d .

c o d_d i s c i p l i n a = a . c o d_d i s c i p l i n a

ORDER BY c . cod_curso ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 14 / 38

Page 15: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

INNER JOIN

Listing 7: Terceiro exemplo de INNER JOIN

SELECT d . d e s c r i c a o ,

c . cod_curso ,

c . d e s c r i c a o ,

a . ma t r i c u l a ,

a l . nome

FROM u s r_e s co l a . d i s c i p l i n a d

INNER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso = c .

cod_curso

INNER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a ON d .

c o d_d i s c i p l i n a = a . c o d_d i s c i p l i n a

INNER JOIN u s r_e s co l a . a l uno a l ON a l . ma t r i c u l a = a .

ma t r i c u l a

ORDER BY c . cod_curso ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 15 / 38

Page 16: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

INNER JOIN

Listing 8: INNER JOIN com �ltro

SELECT d . d e s c r i c a o ,

c . cod_curso ,

c . d e s c r i c a o ,

a . ma t r i c u l a ,

a l . nome

FROM u s r_e s co l a . d i s c i p l i n a d

INNER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso = c .

cod_curso

INNER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a ON d .

c o d_d i s c i p l i n a = a . c o d_d i s c i p l i n a

INNER JOIN u s r_e s co l a . a l uno a l ON a l . ma t r i c u l a = a .

ma t r i c u l a

WHERE c . cod_curso = 'MAT' ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 16 / 38

Page 17: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Considerações sobre performance

Carregue o PGAdmin1 e execute a consulta no banco de dados;

Execute a consulta no modo Analyze;

O que foi �custoso� para a consulta?

Aplique o �ltro utilizando o exemplo 8. O que mudou?

Utilize o comando EXPLAIN ANALYZE;

Copie e cole os resultados no site http://explain.depesz.com/

Quais os procedimentos que mais consomem recursos do banco de

dados?

1Ferramenta de administração para bases de dados PostgreSQL:

http://www.pgadmin.org/Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 17 / 38

Page 18: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Considerações sobre performance

Carregue o PGAdmin1 e execute a consulta no banco de dados;

Execute a consulta no modo Analyze;

O que foi �custoso� para a consulta?

Aplique o �ltro utilizando o exemplo 8. O que mudou?

Utilize o comando EXPLAIN ANALYZE;

Copie e cole os resultados no site http://explain.depesz.com/

Quais os procedimentos que mais consomem recursos do banco de

dados?

1Ferramenta de administração para bases de dados PostgreSQL:

http://www.pgadmin.org/Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 17 / 38

Page 19: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Considerações sobre performance

Carregue o PGAdmin1 e execute a consulta no banco de dados;

Execute a consulta no modo Analyze;

O que foi �custoso� para a consulta?

Aplique o �ltro utilizando o exemplo 8. O que mudou?

Utilize o comando EXPLAIN ANALYZE;

Copie e cole os resultados no site http://explain.depesz.com/

Quais os procedimentos que mais consomem recursos do banco de

dados?

1Ferramenta de administração para bases de dados PostgreSQL:

http://www.pgadmin.org/Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 17 / 38

Page 20: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

OUTER JOIN

Listing 9: Exemplo de OUTER JOIN

SELECT d . c o d_d i s c i p l i n a ,

d . d e s c r i c a o ,

c . cod_curso ,

d . c o d_d i s c i p l i n a_ r e q u i s i t o

FROM u s r_e s co l a . d i s c i p l i n a d

FULL OUTER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso =

c . cod_curso ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 18 / 38

Page 21: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

OUTER JOIN

Listing 10: Exemplo de OUTER JOIN com �ltro

SELECT d . c o d_d i s c i p l i n a ,

d . d e s c r i c a o ,

d . c o d_d i s c i p l i n a_ r e q u i s i t o ,

c . cod_curso

FROM u s r_e s co l a . d i s c i p l i n a d

FULL OUTER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso =

c . cod_curso

WHERE c . cod_curso = 'DAN' ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 19 / 38

Page 22: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

LEFT OUTER JOIN

Listing 11: Exemplo de LEFT OUTER JOIN

SELECT d . c o d_d i s c i p l i n a ,

d . d e s c r i c a o ,

c . cod_curso ,

d . c o d_d i s c i p l i n a_ r e q u i s i t o

FROM u s r_e s co l a . d i s c i p l i n a d

LEFT OUTER JOIN u s r_e s co l a . cu r s o c ON d . cod_curso =

c . cod_curso ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 20 / 38

Page 23: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

LEFT OUTER JOIN

Listing 12: Exemplo de LEFT OUTER JOIN com �ltro

SELECT d . c o d_d i s c i p l i n a ,

d . d e s c r i c a o ,

c . cod_curso ,

d . c o d_d i s c i p l i n a_ r e q u i s i t o

FROM u s r_e s co l a . d i s c i p l i n a d

LEFT JOIN u s r_e s co l a . cu r s o c ON d . cod_curso = c .

cod_curso

WHERE c . cod_curso = 'DAN' ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 21 / 38

Page 24: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Exercício

Considerando o modelo da �gura 5, construa uma consulta que traga a

lista de alunos e a lista de disciplinas, incluindo os alunos que não estão

matriculados em nenhuma disciplina.

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 22 / 38

Page 25: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Solução

Listing 13: Exercício 1

SELECT a . ma t r i c u l a AS m1,

a . nome ,

a l . ma t r i c u l a AS m2

FROM u s r_e s co l a . a l uno a

LEFT OUTER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a l ONa . ma t r i c u l a = a l . ma t r i c u l a ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 23 / 38

Page 26: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Exercício

Adicione a informação do nome da disciplina ao exemplo anterior

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 24 / 38

Page 27: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Solução

Listing 14: Exercício 2

SELECT a . ma t r i c u l a AS m1,

a . nome ,

a l . ma t r i c u l a AS m2,

d . d e s c r i c a o ,

a l . c o d_d i s c i p l i n a

FROM u s r_e s co l a . a l uno a

LEFT OUTER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a l ONa . ma t r i c u l a = a l . ma t r i c u l a

LEFT OUTER JOIN u s r_e s co l a . d i s c i p l i n a d ON a l .

c o d_d i s c i p l i n a = d . c o d_d i s c i p l i n a

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 25 / 38

Page 28: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Exercício

Troque o segundo LEFT OUTER JOIN por INNER JOIN e veja o que

acontece.

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 26 / 38

Page 29: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Consultas Junções (JOIN)

Solução

Listing 15: Exercício 3

SELECT a . ma t r i c u l a AS m1,

a . nome ,

a l . ma t r i c u l a AS m2,

d . d e s c r i c a o ,

a l . c o d_d i s c i p l i n a

FROM u s r_e s co l a . a l uno a

LEFT OUTER JOIN u s r_e s co l a . a l u no_na_d i s c i p l i n a a l ONa . ma t r i c u l a = a l . ma t r i c u l a

INNER JOIN u s r_e s co l a . d i s c i p l i n a d ON a l .

c o d_d i s c i p l i n a = d . c o d_d i s c i p l i n a

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 27 / 38

Page 30: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 28 / 38

Page 31: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores

Introdução

Objetivos:

Realizar operações com tipos de dados diferentes;Comparar valores em diferentes formatos;Conversão de dados;Operadores complexos e dados abstratos.

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 29 / 38

Page 32: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Operadores de data

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 30 / 38

Page 33: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Operadores de data

Operadores de data

Listing 16: Conversão de dados

SELECT c o d_d i s c i p l i n a , to_char ( pe r i odo , 'MM/YYYY' )

as mes

FROM u s r_e s co l a . a l u no_na_d i s c i p l i n a ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 31 / 38

Page 34: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Operadores de data

Operadores de data

Listing 17: Operadores de data

SELECT c o d_d i s c i p l i n a , age ( p e r i o do ) as mes

FROM u s r_e s co l a . a l u no_na_d i s c i p l i n a ;

SELECT c o d_d i s c i p l i n a , age (now ( ) , p e r i o do ) as mes

FROM u s r_e s co l a . a l u no_na_d i s c i p l i n a ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 32 / 38

Page 35: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Operadores de data

Operadores de data

Listing 18: Funções de data

SELECT c lock_t imestamp ( ) ,

current_date ,

current_timestamp ,

l o c a l t im e ,

l o ca l t ime s t amp ,

now ( ) ,

statement_timestamp ( ) ,

t imeo fday ( ) ,

t r an sac t i on_t imes tamp ( ) ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 33 / 38

Page 36: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Tipo inet

1 Consultas

Criando a base de dados

Junções (JOIN)

2 Funções e Operadores

Operadores de data

Tipo inet

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 34 / 38

Page 37: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Tipo inet

Adiciona tipo

Listing 19: Insere tipo inetBEGIN ;

ALTER TABLE u s r_e s co l a . a lunoADD COLUMN endereco_ip i n e t ;

UPDATE u s r_e s co l a . a lunoSET endereco_ip = ' 192.168.1.1 '

WHERE ma t r i c u l a = '1 ' ;

UPDATE u s r_e s co l a . a lunoSET endereco_ip = ' 192.168.1.2 '

WHERE ma t r i c u l a = '2 ' ;

UPDATE u s r_e s co l a . a lunoSET endereco_ip = ' 192.168.1.3 '

WHERE ma t r i c u l a = '3 ' ;

UPDATE u s r_e s co l a . a lunoSET endereco_ip = ' 1 9 2 . 1 6 8 . 1 . 1 0 0 '

WHERE ma t r i c u l a = '4 ' ;

UPDATE u s r_e s co l a . a lunoSET endereco_ip = ' 192.168.2.1 '

WHERE ma t r i c u l a = '5 ' ;

END ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 35 / 38

Page 38: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Tipo inet

Funções

Listing 20: Funções básicas

SELECT abbrev ( endereco_ip ) ,

b r o adca s t ( endereco_ip ) ,

f am i l y ( endereco_ip ) ,

ho s t ( endereco_ip ) ,

netmask ( endereco_ip )

FROM u s r_e s co l a . a l uno ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 36 / 38

Page 39: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Tipo inet

Operadores

Listing 21: Operadores para endereço IP

SELECT mat r i c u l a ,

nome

FROM u s r_e s co l a . a l uno

WHERE endereco_ip = '192.168.1.1' : : i n e t ;

SELECT mat r i c u l a ,

nome

FROM u s r_e s co l a . a l uno

WHERE endereco_ip >= '192.168.2.1' : : i n e t ;

SELECT mat r i c u l a ,

nome

FROM u s r_e s co l a . a l uno

WHERE endereco_ip < '192.168.2.1' : : i n e t ;

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 37 / 38

Page 40: Treinamento PostgreSQL - Aula 03 · PDF fileConsultas Junções (JOIN) INNER JOIN Listing 7: erceiroT exemplo de INNER JOIN EELCT d. descricao , c . cod_curso , c . descricao , a.

Funções e Operadores Tipo inet

Contato

Eduardo Ferreira dos Santos

Sparkgroup

Lightbase Consultoria em Software Público

[email protected]

[email protected]

www.postgresql.org.br

www.eduardosan.com

+55 61 3347-1949

Eduardo Ferreira dos Santos (SparkGroup Treinamento e Capacitação em Tecnologia [email protected] eduardosan.com)Treinamento PostgreSQL - Aula 03 29 de Maio de 2013 38 / 38