Treinamento PostgreSQL - Aula 03



Documentos relacionados
AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Bases de Dados 2005/2006. Aula 5

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Comandos de Manipulação

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Treinamento PostgreSQL - Aula 09

Introdução à linguagem SQL

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Treinamento PostgreSQL - Aula 05

Banco de Dados. Maurício Edgar Stivanello

Treinamento sobre SQL

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados. Conversão para o Banco de Dados SisMoura

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

INNER, CROSS, LEFT, RIGHT E FULL JOINS SIMPLES ASSIM! Wellyngton Luiz Cruz Moreira wlcmoreira@hotmail.com

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Banco de Dados. Prof. Antonio

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Memória de aula Semanas 15 e 16

Treinamento PostgreSQL - Aula 10

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Tarefa Orientada 11 Junção Interna

EXEMPLOS DE COMANDOS NO SQL SERVER

PHP INTEGRAÇÃO COM MYSQL PARTE 1

MySQL. Prof. César Melo. com a ajuda de vários

Structured Query Language (SQL) Aula Prática

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Introdução ao SQL. Aécio Costa

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Notas sobre o MySQL: Resumo dos comandos no MySQL linha de comandos:

PostgreSQL Exemplo MDI

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

EXERCÍCIOS PRÁTICOS. Banco de Dados

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

trigger insert, delete, update

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

CONTEÚDOS PROGRAMÁTICOS DA ACADEMIA

Projeto de Banco de Dados: Empresa X

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

BDII SQL Junção Revisão 8

Bases de Dados. Lab 1: Introdução ao ambiente

BANCO DE DADOS Parte 4

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Tarefa Orientada 14 Subconsultas

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Bases de Dados 1º semestre

Plano de Trabalho Docente Ensino Técnico

Prof. Carlos Majer Aplicações Corporativas UNICID

Junções e Índices em Tabelas

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Treinamento em PHP. Aula 7. Ari Stopassola Junior

PROGRAMA. Objectivos Gerais :

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

P L A N I F I C A Ç Ã O A N U A L

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

PgAdmin. O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX.

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.


SQL (Structured Query Language)

Histórico de revisões

Treinamento PostgreSQL - Aula 01

Linguagem SQL. Comandos Básicos

Linguagem de Banco de Dados DML Exercícios

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

CIÊNCIA E TECNOLOGIA DO RIO

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Banco de Dados. Prof. Leonardo Barreto Campos 1

Bases de Dados 2007/2008. Aula 9

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Formação em Banco de Dados. Subtítulo

Profº Aldo Rocha. Banco de Dados

Transcrição:

Treinamento PostgreSQL - Aula 03 Eduardo Ferreira dos Santos SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com eduardosan.com 29 de Maio de 2013 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 1 / 38 edua

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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 2 / 38 edua

Sumário 1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 3 / 38 edua

1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 4 / 38 edua

Denindo a base de dados Modelo da base de dados Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 5 / 38 edua

Criando a base de dados 1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 6 / 38 edua

Criando a base de dados Relembrando a criação da base Listing 1: Cria usuário, banco e SCHEMA PostgreSQL> 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 be 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 be 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 be 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 PostgreSQL> createdb O u s u a r i o primeiro_banco CREATE DATABASE PostgreSQL> p s q l U u s u a r i o p r i m e i r o _ b a n c o p s q l ( 9. 1. 9 ) Type " h e l p " f o r h e l p. primeiro_banco=> CREATE SCHEMA usr_ escola ; CREATE SCHEMA p r i m e i r o _ b a n c o=>\q q u i t Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 7 / 38 edua

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. c o n 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 a s s i m : l o c a l a l l p o s t g r e s i d e n t l o c a l p r i m e i r o _ b a n c o u s u a r i o t r u s t l o g o u t # 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 t s u p o s t g r e s Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 8 / 38 edua

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 base PostgreSQL> p s q l U u s u a r i o f c r i a banco. 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 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 " 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 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 " d i s c i p l i n a " CREATE TABLE p 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 TABLE p 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 " 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 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 " 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 9 / 38 edua

Criando a base de dados Carga inicial dos dados Listing 4: Alimenta base áííáííáííáííáíí PostgreSQL> p s q l U u s u a r i o f c r i a banco. s q l p r i m e i r o _ b a n c o 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 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 10 / 38 edua

1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 11 / 38 edua

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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 12 / 38 edua

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 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 13 / 38 edua

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. m a t r i c u l a 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 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 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 14 / 38 edua

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. m a t r i c u l a, 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 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 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 c o l a. a l u n o a l ON a l. m a t r i c u l a = a. m a t r i c u l a ORDER BY c. cod_curso ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 15 / 38 edua

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. m a t r i c u l a, a l. nome FROM u s r _ e s c o l a. d i s c i p l i n a Listing 8: INNER JOIN com ltro 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 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 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 c o l a. a l u n o a l ON a l. m a t r i c u l a = a. m a t r i c u l a WHERE c. cod_curso = 'MAT' ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 16 / 38 edua

Considerações sobre performance Carregue o PGAdmin 1 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/ duardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 17 / 38 edua

Considerações sobre performance Carregue o PGAdmin 1 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/ duardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 17 / 38 edua

Considerações sobre performance Carregue o PGAdmin 1 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 17 / 38 edua

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 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 18 / 38 edua

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 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 19 / 38 edua

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 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 20 / 38 edua

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 c o l a. d i s c i p l i n a d LEFT 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 21 / 38 edua

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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 22 / 38 edua

Solução Listing 13: Exercício 1 SELECT a. m a t r i c u l a 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. m a t r i c u l a = a l. m a t r i c u l a ; a l ON Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 23 / 38 edua

Exercício Adicione a informação do nome da disciplina ao exemplo anterior Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 24 / 38 edua

Solução Listing 14: Exercício 2 SELECT a. m a t r i c u l a AS m1, a. nome, a l. m a 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 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. m a t r i c u l a = a l. m a t r i c u l a LEFT OUTER JOIN u s r _ e s c o 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 a l ON Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 25 / 38 edua

Exercício Troque o segundo LEFT OUTER JOIN por INNER JOIN e veja o que acontece. Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 26 / 38 edua

Solução Listing 15: Exercício 3 SELECT a. m a t r i c u l a AS m1, a. nome, a l. m a 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 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. m a t r i c u l a = a l. m a t r i c u l a INNER JOIN u s r _ e s c o 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 a l ON Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 27 / 38 edua

Funções e Operadores 1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 28 / 38 edua

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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 29 / 38 edua

Funções e Operadores Operadores de data 1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 30 / 38 edua

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 ( p e r i o d o, 'MM/YYYY ' ) 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 ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 31 / 38 edua

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 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 ; SELECT c o d _ d i s c i p l i n a, age ( now ( ), 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 ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 32 / 38 edua

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, l o c a l t i m e, l o c a l t i m e s t a m p, now ( ), statement_timestamp ( ), t i m e o f d a y ( ), t r a n s a c t i o n _ t i m e s t a m p ( ) ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 33 / 38 edua

Funções e Operadores Tipo inet 1 Consultas Criando a base de dados 2 Funções e Operadores Operadores de data Tipo inet Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 34 / 38 edua

Funções e Operadores Tipo inet Adiciona tipo BEGIN ; Listing 19: Insere tipo inet ALTER TABLE usr_ escola. aluno ADD COLUMN e n d e r e c o _ i p i n e t ; UPDATE usr_ escola. aluno SET e n d e r e c o _ i p = ' 1 9 2. 1 6 8. 1. 1 ' WHERE m a t r i c u l a = ' 1 ' ; UPDATE usr_ escola. aluno SET e n d e r e c o _ i p = ' 1 9 2. 1 6 8. 1. 2 ' WHERE m a t r i c u l a = ' 2 ' ; UPDATE usr_ escola. aluno SET e n d e r e c o _ i p = ' 1 9 2. 1 6 8. 1. 3 ' WHERE m a t r i c u l a = ' 3 ' ; UPDATE usr_ escola. aluno SET e n d e r e c o _ i p = ' 1 9 2. 1 6 8. 1. 1 0 0 ' WHERE m a t r i c u l a = ' 4 ' ; UPDATE usr_ escola. aluno SET e n d e r e c o _ i p = ' 1 9 2. 1 6 8. 2. 1 ' WHERE m a t r i c u l a = ' 5 ' ; END ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 35 / 38 edua

Funções e Operadores Tipo inet Funções Listing 20: Funções básicas SELECT a b b r e v ( e n d e r e c o _ i p ), b r o a d c a s t ( e n d e r e c o _ i p ), f a m i l y ( e n d e r e c o _ i p ), h o s t ( e n d e r e c o _ i p ), netmask ( e n d e r e c o _ i p ) FROM u s r _ e s c o l a. a l u n o ; Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 36 / 38 edua

Funções e Operadores Tipo inet Operadores Listing 21: Operadores para endereço IP SELECT m a t r i c u l a, 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 m a t r i c u l a, 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 m a t r i c u l a, 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 TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 37 / 38 edua

Funções e Operadores Tipo inet Contato Eduardo Ferreira dos Santos Sparkgroup Lightbase Consultoria em Software Público eduardo.santos@lightbase.com.br eduardo.edusantos@gmail.com www.postgresql.org.br www.eduardosan.com +55 61 3347-1949 Eduardo Ferreira dos Santos (SparkGroup TreinamentoePostgreSQL Capacitação- Aula em Tecnologia 03 eduardo.edusantos@gmail.com 29 de Maio de 2013 38 / 38 edua