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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
1 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
2 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
3 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
4 / edua
38
Consultas
Denindo a base de dados
Modelo da base de dados
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
5 / edua
38
Consultas
1
Criando a base de dados
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
6 / edua
38
Consultas
Criando a base de dados
Relembrando a criação da base
Listing 1: Cria usuário, banco e SCHEMA
P o s t g r e S Q L> c r e a t e u s e r u s u a r i o
S h a l l t h e new r o l e b e a s u p e r u s e r ? ( y / n ) n
S h a l l t h e new r o l e b e a l l o w e d t o c r e a t e d a t a b a s e s ? ( y / n ) n
S h a l l t h e new r o l e b e a l l o w e d t o c r e a t e more new r o l e s ? ( y / n ) n
P o s t g r e S Q L> c r e a t e d b −O u s u a r i o
CREATE DATABASE
P o s t g r e S Q L> p s q l −U u s u a r i o
psql (9.1.9)
Type " h e l p " f o r
primeiro_banco
primeiro_banco
help .
p r i m e i r o _ b a n c o=> CREATE SCHEMA u s r _ e s c o l a ;
CREATE SCHEMA
p r i m e i r o _ b a n c o=>\q
quit
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
7 / edua
38
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 / m a i n / pg_hba . c o n f
# A seguinte l i n h a :
local
all
postgres
ident
# Altera para f i c a r assim :
local
local
all
postgres
primeiro_banco
ident
usuario
trust
logo ut
# 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
su
−
restart
postgres
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
8 / edua
38
Consultas
Criando a base de dados
Cria estrutura da base
Primeiro baixe os arquivos SQL:
Estrutura da base:
https://seacloud.cc/f/20677b5257/
https://seacloud.cc/f/20677b5257/
Carga inicial de dados:
Em seguida execute os arquivos no banco de dados:
Listing 3: Cria base
P o s t g r e S Q L> p s q l −U u s u a r i o − f c r i a −b a n c o . s q l p r i m e i r o _ b a n c o
BEGIN
SET
p s q l : / tmp / c r i a −b a n c o . 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 " p k _ a l u n o " na t a b e l a " a l u n o "
CREATE TABLE
p s q l : / tmp / c r i a −b a n c o . 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 " d i s c i p l i n a "
CREATE TABLE
p s q l : / tmp / c r i a −b a n c o . 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 TABLE
p s q l : / tmp / c r i a −b a n c o . 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 " p k _ c u r s o " na t a b e l a " c u r s o "
CREATE TABLE
p s q l : / tmp / c r i a −b a n c o . 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 " p k _ c o n c e i t o " na t a b e l a " g r a d e _ c o n c e i t o "
CREATE TABLE
ALTER TABLE
COMMIT
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
9 / edua
38
Consultas
Criando a base de dados
Carga inicial dos dados
Listing 4: Alimenta base
áííáííáííáííáíí
P o s t g r e S Q L> p s q l −U u s u a r i o − f
BEGIN
SET
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
(..)
INSERT 0 1
INSERT 0 1
INSERT 0 1
COMMIT
c r i a −b a n c o . s q l
primeiro_banco
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
10 / edua
38
Consultas
1
Junções (JOIN)
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
11 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
12 / edua
38
Consultas
Junções (JOIN)
INNER JOIN
SELECT
Listing 5: Primeiro exemplo de INNER JOIN
d . cod_disciplina ,
d . descricao ,
c . cod_curso ,
d . cod_disciplina_requisito ,
c . descricao
FROM u s r _ e s c o l a . d i s c i p l i n a d
INNER JOIN u s r _ e s c o l a . c u r s o c ON
d . cod_curso = c .
cod_curso
ORDER BY
c . cod_curso ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
13 / edua
38
Consultas
Junções (JOIN)
INNER JOIN
SELECT
Listing 6: Segundo exemplo de INNER JOIN
d . descricao ,
c . cod_curso ,
c . descricao ,
a . matricula
FROM u s r _ e s c o l a . d i s c i p l i n a d
INNER JOIN u s r _ e s c o l a . c u r s o c ON
d . cod_curso = c .
cod_curso
INNER JOIN
usr_escola . aluno_na_disciplina
cod_disciplina
ORDER BY
a
ON
d.
= a . cod_disciplina
c . cod_curso ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
14 / edua
38
Consultas
Junções (JOIN)
INNER JOIN
SELECT
Listing 7: Terceiro exemplo de INNER JOIN
d . descricao ,
c . cod_curso ,
c . descricao ,
a . matricula ,
a l . nome
FROM u s r _ e s c o l a . d i s c i p l i n a d
INNER JOIN u s r _ e s c o l a . c u r s o c ON
d . cod_curso = c .
cod_curso
INNER JOIN
usr_escola . aluno_na_disciplina
cod_disciplina
INNER JOIN
a
ON
d.
= a . cod_disciplina
usr_escola . aluno
al
ON
al . matricula = a .
matricula
ORDER BY
c . cod_curso ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
15 / edua
38
Consultas
Junções (JOIN)
INNER JOIN
SELECT
Listing 8: INNER JOIN com ltro
d . descricao ,
c . cod_curso ,
c . descricao ,
a . matricula ,
a l . nome
FROM u s r _ e s c o l a . d i s c i p l i n a d
INNER JOIN u s r _ e s c o l a . c u r s o c ON
d . cod_curso = c .
cod_curso
INNER JOIN
usr_escola . aluno_na_disciplina
cod_disciplina
INNER JOIN
a
ON
d.
= a . cod_disciplina
usr_escola . aluno
al
ON
al . matricula = a .
matricula
WHERE
c . cod_curso =
'MAT ' ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
16 / edua
38
Consultas
Junções (JOIN)
Considerações sobre performance
1
Carregue o PGAdmin
e execute a consulta no banco de dados;
Execute a consulta no modo Analyze;
O que foi custoso para a consulta?
1
Ferramenta de administração para bases de dados PostgreSQL:
http://www.pgadmin.org/
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
17 / edua
38
Consultas
Junções (JOIN)
Considerações sobre performance
1
Carregue o PGAdmin
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?
1
Ferramenta de administração para bases de dados PostgreSQL:
http://www.pgadmin.org/
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
17 / edua
38
Consultas
Junções (JOIN)
Considerações sobre performance
1
Carregue o PGAdmin
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?
1
Ferramenta de administração para bases de dados PostgreSQL:
http://www.pgadmin.org/
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
17 / edua
38
Consultas
Junções (JOIN)
OUTER JOIN
SELECT
Listing 9: Exemplo de OUTER JOIN
d . cod_disciplina ,
d . descricao ,
c . cod_curso ,
d. cod_disciplina_requisito
FROM u s r _ e s c o l a . d i s c i p l i n a d
FULL OUTER JOIN u s r _ e s c o l a . c u r s o
c
ON
d . cod_curso =
c . cod_curso ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
18 / edua
38
Consultas
Junções (JOIN)
OUTER JOIN
SELECT
Listing 10: Exemplo de OUTER JOIN com ltro
d . cod_disciplina ,
d . descricao ,
d . cod_disciplina_requisito ,
c . cod_curso
FROM u s r _ e s c o l a . d i s c i p l i n a d
FULL OUTER JOIN u s r _ e s c o l a . c u r s o
c
ON
d . cod_curso =
c . cod_curso
WHERE
c . cod_curso =
'DAN ' ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
19 / edua
38
Consultas
Junções (JOIN)
LEFT OUTER JOIN
SELECT
Listing 11: Exemplo de LEFT OUTER JOIN
d . cod_disciplina ,
d . descricao ,
c . cod_curso ,
d. cod_disciplina_requisito
FROM u s r _ e s c o l a . d i s c i p l i n a d
LEFT OUTER JOIN u s r _ e s c o l a . c u r s o
c
ON
d . cod_curso =
c . cod_curso ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
20 / edua
38
Consultas
Junções (JOIN)
LEFT OUTER JOIN
SELECT
Listing 12: Exemplo de LEFT OUTER JOIN com ltro
d . cod_disciplina ,
d . descricao ,
c . cod_curso ,
d. cod_disciplina_requisito
FROM u s r _ e s c o l a . d i s c i p l i n a
LEFT JOIN u s r _ e s c o l a . c u r s o
d
c
ON
d . cod_curso = c .
cod_curso
WHERE
c . cod_curso =
'DAN ' ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
21 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
22 / edua
38
Consultas
Junções (JOIN)
Solução
SELECT
Listing 13: Exercício 1
a . matricula
AS
m1 ,
a . nome ,
a l . m a t r i c u l a AS m2
FROM u s r _ e s c o l a . a l u n o a
LEFT OUTER JOIN u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a
a . matricula =
al
ON
al . matricula ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
23 / edua
38
Consultas
Junções (JOIN)
Exercício
Adicione a informação do nome da disciplina ao exemplo anterior
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
24 / edua
38
Consultas
Junções (JOIN)
Solução
SELECT
Listing 14: Exercício 2
a . matricula
a . nome ,
AS
AS
al . matricula
m1 ,
m2 ,
d . descricao ,
al . cod_disciplina
FROM u s r _ e s c o l a . a l u n o a
LEFT OUTER JOIN u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a
a . matricula =
LEFT OUTER JOIN
al . matricula
usr_escola . d i s c i p l i n a
cod_disciplina
d
ON
al
ON
al .
= d. cod_disciplina
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
25 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
26 / edua
38
Consultas
Junções (JOIN)
Solução
SELECT
Listing 15: Exercício 3
a . matricula
a . nome ,
al . matricula
AS
AS
m1 ,
m2 ,
d . descricao ,
al . cod_disciplina
FROM u s r _ e s c o l a . a l u n o a
LEFT OUTER JOIN u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a
a . matricula =
INNER JOIN
al . matricula
usr_escola . d i s c i p l i n a
cod_disciplina
d
ON
al
ON
al .
= d. cod_disciplina
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
27 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
28 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
29 / edua
38
Funções e Operadores
1
Operadores de data
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
30 / edua
38
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 , t o _ c h a r ( p e r i o d o ,
as mes
FROM u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a ;
'MM/YYYY ' )
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
31 / edua
38
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 , a g e ( p e r i o d o ) as
FROM u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a ;
mes
SELECT c o d _ d i s c i p l i n a , a g e ( now ( ) , p e r i o d o ) as
FROM u s r _ e s c o l a . a l u n o _ n a _ d i s c i p l i n a ;
mes
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
32 / edua
38
Funções e Operadores
Operadores de data
Operadores de data
Listing 18: Funções de data
SELECT c l o c k _ t i m e s t a m p ( ) ,
current_date ,
current_timestamp ,
localtime ,
localtimestamp ,
now ( ) ,
statement_timestamp ( ) ,
timeofday () ,
transaction_timestamp () ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
33 / edua
38
Funções e Operadores
1
Tipo inet
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
34 / edua
38
Funções e Operadores
Tipo inet
Adiciona tipo
Listing 19: Insere tipo inet
BEGIN ;
ALTER TABLE
usr_escola . aluno
inet ;
ADD COLUMN e n d e r e c o _ i p
usr_escola . aluno
endereco_ip = ' 192.168.1.1 '
WHERE m a t r i c u l a = ' 1 ' ;
UPDATE
SET
usr_escola . aluno
endereco_ip = ' 192.168.1.2 '
WHERE m a t r i c u l a = ' 2 ' ;
UPDATE
SET
usr_escola . aluno
endereco_ip = ' 192.168.1.3 '
WHERE m a t r i c u l a = ' 3 ' ;
UPDATE
SET
usr_escola . aluno
endereco_ip = ' 192.168.1.100 '
WHERE m a t r i c u l a = ' 4 ' ;
UPDATE
SET
usr_escola . aluno
endereco_ip = ' 192.168.2.1 '
matricula = '5 ' ;
UPDATE
SET
WHERE
END ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
35 / edua
38
Funções e Operadores
Tipo inet
Funções
SELECT
Listing 20: Funções básicas
abbrev ( endereco_ip ) ,
broadcast ( endereco_ip ) ,
f a m i l y ( endereco_ip ) ,
host ( endereco_ip ) ,
netmask ( endereco_ip )
FROM
usr_escola . aluno ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
36 / edua
38
Funções e Operadores
Tipo inet
Operadores
SELECT
Listing 21: Operadores para endereço IP
matricula ,
nome
FROM u s r _ e s c o l a . a l u n o
WHERE e n d e r e c o _ i p = '192.168.1.1 ' : : i n e t ;
SELECT
matricula ,
nome
FROM u s r _ e s c o l a . a l u n o
WHERE e n d e r e c o _ i p >= '192.168.2.1 ' : : i n e t ;
SELECT
matricula ,
nome
FROM u s r _ e s c o l a . a l u n o
WHERE e n d e r e c o _ i p < '192.168.2.1 ' : : i n e t ;
Eduardo Ferreira dos Santos (SparkGroup Treinamento
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
37 / edua
38
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
Treinamento ePostgreSQL
Capacitação- Aula
em Tecnologia
03
[email protected]
29 de Maio de 2013
38 / edua
38
Download

Treinamento PostgreSQL - Aula 03