Home

Tutorial do PostgreSQL 7.3.2

image

Contents

1. es de agrega o Uma fun o de agrega o calcula um nico resultado para v rias linhas de entrada Por exemplo existem fun es de agrega o para contar count somar sum calcular a m dia avg o valor m ximo max e o valor m nimo min para um conjunto de linhas Como exemplo podemos obter a maior temperatura m nima ocorrida em qualquer lugar com SELECT max temp min FROM clima Se desejarmos saber em que cidade ou cidades esta leitura ocorreu podemos tentar 10 Capitulo 2 A linguagem SQL n T 4 ECT cidade FROM clima WHERE temp min max temp_min ERRADO mas n o vai funcionar porque a fun o de agrega o max n o pode ser usada na cl usula WHERE Esta restri o existe porque a cl usula WHERE determina as linhas que passar o para o est gio de agrega o portanto tem que ser avaliada antes das fun es de agrega o serem computadas Entretanto como geralmente o caso a consulta pode ser reformulada para obter o resultado pretendido o que ser feito aqui atrav s de uma subconsulta SELECT cidade FROM clima WHERE temp min SELECT max temp min FROM clima cidade S o Francisco 1 row Isto est correto porque a subconsulta uma a o independente que calcula a sua pr pria agrega o separada mente do que est acontecendo na consulta externa As agrega es tamb m s o muito
2. necess rio definir a vari vel de ambiente PGHOST com o nome da m quina servidora de banco de dados A vari vel de ambiente PGPORT talvez tamb m tenha que ser definida A regra b sica esta se voc tentar iniciar um programa aplicativo e este informar que n o pode se conectar ao banco de dados voc deve consultar o administrador do servidor ou caso seja voc mesmo a documenta o para ter certeza de que o seu ambiente est corretamente configurado Se voc n o entendeu o par grafo anterior ent o por favor leia a pr xima se o 1 2 Fundamentos da Arquitetura Antes de prosseguirmos voc deve entender as bases da arquitetura de sistema do PostgreSQL Compreendendo como as partes do PostgreSQL interagem entre si torna este cap tulo mais claro No jarg o de banco de dados o PostgreSQL utiliza o modelo cliente servidor Uma sess o do PostgreSQL consiste dos seguintes processos programas cooperando entre si Um processo servidor o qual gerencia os arquivos do banco de dados aceita as conex es dos aplicativos cliente com o banco de dados e executa as a es no banco de dados em nome dos clientes O programa servidor de banco de dados chama se postmaster e O aplicativo cliente do usu rio frontend que deseja executar opera es de banco de dados Os aplicativos cliente podem ter naturezas muito diversas o cliente pode ser uma ferramenta no modo caractere um aplica tivo gr fico um servidor Web que acessa o
3. a menos que a ader ncia com a funcionalidade espec fica esteja explicitamente declarada Antes de prosseguir verifique a lista TODO a fazer e a FAQ para ver se o seu erro j n o conhecido Se voc n o conseguir decodificar a informa o da lista TODO relate seu problema O m nimo que podemos fazer tornar a lista TODO mais clara vi Pref cio 6 2 O que relatar A coisa mais importante a ser lembrada quando vamos relatar erros declarar todos os fatos e somente os fatos N o especule sobre o que voc acha que est certo ou errado o que parece que deva ser feito ou qual parte do programa est falhando Se voc n o est familiarizado com a implementa o voc provavelmente vai supor errado e n o vai nos ajudar nem um pouco E mesmo que voc esteja familiarizado uma explana o educada um grande suplemento mas n o substitui os fatos Se n s formos corrigir o erro n s temos que v lo acontecer primeiro Informar fatos cruamente relativamente direto provavelmente pode ser copiado e colado a partir da tela mas geralmente detalhes importantes s o deixados de fora porque algu m pensou que n o tinha import ncia ou que o relat rio seria entendido de qualquer maneira Os seguintes itens devem estar contidos em todo relat rio de erro A segii ncia exata dos passos desde o in cio do programa necess rios para reproduzir o problema Isto deve estar autocontido n o suficiente enviar
4. temp_min EEA S o Francisco 46 S o Francisco 41 Hayward 35 3 rows 2 9 Exclus es 1994 11 27 1994 11 29 1994 11 29 Suponha que n s n o estamos mais interessados nos dados do clima em Hayward Ent o precisamos excluir estas linhas da tabela As exclus es s o realizadas atrav s do comando D DELETE FROM clima WHERE cidade Todos os registros de clima pertencentes a Hayward s o removidos Hayward SELECT FROM clima cidade temp_min H S o Francisco 46 S o Francisco 41 1994 11 27 1994 11 29 12 Capitulo 2 A linguagem SQL 2 rows Deve se tomar cuidado com a forma DELETE FROM nome_da_tabela Sem uma qualifica o o comando DELETE remove todas as linhas de uma dada tabela deixando a vazia O sistema n o vai solicitar uma confirma o antes de realizar esta opera o 13 Capitulo 3 Funcionalidades avancadas 3 1 Introdu o Nos cap tulos anteriores foram descritas funcionalidade b sicas da utiliza o do SQL para armazenamento e acesso aos dados no PostgreSQL Agora ser o discutidas funcionalidades mais avan adas do SQL que simplificam a ger ncia e evitam a perda e a corrup o dos dados Ao final ser o vistas algumas extens es do PostgreSQL Este cap tulo em certas ocasi es faz refer ncia aos exemplos encontrados no Cap tulo 2 para modific los ou melhor los
5. S tio na Web O s tio na Web do PostgreSQL possui detalhes sobre sobre a ltima vers o funcionalidades a serem incor poradas e outras informa es para tornar o trabalho ou a divers o com o PostgreSQL mais produtiva Listas de discuss o As listas de discuss o s o um bom lugar para se conseguir ter as perguntas respondidas para trocar exper i ncia com outros usu rios e para fazer contato com os desenvolvedores Consulte a se o User s Lounge do s tio na Web do PostgreSQL para obter mais informa es Voc mesmo O PostgreSQL um trabalho de c digo aberto e por isso depende do apoio permanente da comunidade de usu rios Quando come amos a utilizar o PostgreSQL dependemos da ajuda de outros tanto atrav s da docu menta o quanto das listas de discuss o Considere ent o em retribuir seus conhecimentos Se voc aprender alguma coisa que n o faz parte da documenta o escreva e contribua Se voc adicionar funcionalidades ao c digo contribua com estas funcionalidades Mesmo queles que n o possuem muita experi ncia podem fazer corre es e pequenas altera es na docu menta o e esta uma boa maneira de se come ar A lista de discuss o lt pgsql docs postgresql org gt um lugar para se visitar com freqii ncia N T No Brasil veja PostgreSQL Brasil 5 Terminologia e nota o Um administrador normalmente a pessoa respons vel pela instala o e funcionamento do servidor Um
6. ada pelo projeto POSTGRES de Berkeley A nfase durante o desenvolvimento do Postgres95 era identificar e compreender os problemas existentes no c digo do servidor Com o PostgreSQL a nfase foi mudada para a melhoria das funcionalidades e dos recursos embora o trabalho continuasse em todas as reas As principais melhorias no PostgreSQL incluem O bloqueio no n vel de tabela foi substitu do por um sistema de concorr ncia multi vers o que permite aos que est o lendo continuarem a ler dados consistentes durante a atividade de escrita e permite efetuar c pias de seguran a atrav s do pg dump enquanto o banco de dados se mant m dispon vel para consultas A implementa o de funcionalidades importantes no servidor incluindo subconsultas padr es restri es e gatilhos e A incorpora o de funcionalidades adicionais compat veis com a linguagem SQL92 incluindo chaves prim rias identificadores entre aspas convers o impl cita de tipo de cadeias de caracteres literais convers o expl cita de tipos e inteiros bin rios e hexadecimais e Os tipos nativos foram aperfei oados incluindo uma grande variedade de tipos para data e hora e suporte adicional para tipo geom trico e A velocidade geral do c digo do servidor foi melhorada em aproximadamente 20 40 e o tempo de inicial iza o do servidor foi reduzido em 80 desde que a vers o 6 0 foi liberada ili Prefacio 3 O que esta contido neste manual Seja
7. bem vindo ao PostgreSQL e ao Tutorial do PostgreSQL Os poucos capitulos que se seguem t m por objetivo fornecer uma breve introdu o ao PostgreSQL aos conceitos de banco de dados relacional e linguagem SQL para os que s o iniciantes em qualquer um destes t picos Somente assume se um conhecimento geral sobre a uti liza o de computadores Nenhuma experi ncia particular com Unix ou em programa o requerida Este tutorial tem por objetivo principal fornecer experi ncia pr tica com rela o aos aspectos importantes do PostgreSQL N o existe nenhuma inten o em se dar um tratamento completo ou abrangente dos t picos cobertos Ap s ler este tutorial pode se prosseguir atrav s da leitura do Guia do Usu rio do PostgreSQL para obter mais conhecimento formal sobre a linguagem SQL ou o Guia do Programador do PostgreSQL para obter informa es sobre o desenvolvimento de aplica es para o PostgreSQL Os que instalam e gerenciam seus pr prios servidores tamb m devem ler o Guia do Administrador do PostgreSQL 4 Revis o dos recursos de documenta o A documenta o do PostgreSQL est organizada em diversos livros Tutorial do PostgreSQL Uma introdu o informal para os novos usu rios Guia do Usu rio do PostgreSQL Documenta o ambiente da linguagem de consulta SQL incluindo tipos de dados e fun es assim como o ajuste do desempenho no n vel de usu rio Todo usu rio do PostgreSQL deve l lo Guia do Administrado
8. ignora as linhas da tabela clima sem correspond ncia N s veremos em breve como isto pode ser mudado e Existem duas colunas contendo o nome da cidade Isto est correto porque a rela o de colunas das tabelas clima e cidades est o concatenadas Na pr tica isto n o o que se deseja e portanto prefer vel escrever a lista das colunas de sa da explicitamente em vez de utilizar o SELECT cidade temp min temp max prcp data localizacao FROM clima cidades WHERE cidade nome Exerc cio Tente descobrir a sem ntica desta consulta quando a cl usula wHERE omitida Uma vez que todas as colunas possuem nomes diferentes o analisador encontra automaticamente a tabela que a coluna pertence mas um bom estilo qualificar completamente os nomes das colunas nas consultas de jun o SE H ECT clima cidade clima temp_min clima temp_max clima prcp clima data cidades localizacao FROM clima cidades WHERE cidades nome clima cidade As consultas de jun o do tipo visto at agora tamb m poderiam ser escritas da seguinte forma alternativa SELECT FROM clima INNER JOIN cidades ON clima cidade cidades nome A utiliza o desta sintaxe n o t o comum quanto das demais acima mas mostrada aqui para que sejam entendidos os pr ximos t picos Agora n s vamos descobrir como se faz para obter os registros de Hayward O que n
9. max temp min VALUES 1994 11 29 Hayward 54 37 Muitos desenvolvedores consideram relacionar explicitamente as colunas um estilo melhor do que confiar na ordem implicita Por favor entre todos os comando mostrados acima para ter alguns dados com que trabalhar nas pr ximas se es Tamb m pode ser utilizado o comando COPY para carregar uma grande quantidade de dados a partir de arquivos de texto Geralmente isto mais r pido porque o comando copy otimizado para esta finalidade embora possua menos flexibilidade do que o comando INSERT Um exemplo poderia ser COPY clima FROM home user clima txt onde o arquivo de origem deve poder ser acessado pelo servidor e n o pelo o cliente uma vez que o servidor l o arquivo diretamente Pode se obter mais informa es sobre o comando copy no Manual de Refer ncia do PostgreSQL 2 5 Consultando uma tabela Para obter os dados de uma tabela a tabela deve ser consultada O comando SELECT do SQL utilizado para esta fun o O comando dividido em lista de sele o a parte que relaciona as colunas a serem retornadas lista de tabelas a parte que relaciona as tabelas de onde os dados v o ser extra dos e uma qualifica o opcional a parte em que s o especificadas as restri es Por exemplo para ver todas as linhas da tabela clima digite SE 4 ECT FROM clima aqui o significa todas as colunas e a sa da dev
10. mostrado acima ou mesmo todo em uma nica linha Dois h fens introduzem um coment rio Tudo que segui los ignorado at o final da linha O SQL n o diferencia letras mai sculas e min sculas nas palavras e nos identificadores a n o ser quando os identificadores est o entre aspas para preservar letras mai sculas e min sculas o que n o foi feito acima O varchar 80 especifica um tipo de dado que pode armazenar cadeias de caracteres arbitr rias com um com primento de at 80 caracteres O int o tipo inteiro normal O real um tipo para armazenar n meros de ponto flutuante de precis o simples date para armazenar data e hora a coluna do tipo date poderia se chamar date o que tanto pode ser conveniente quanto pode causar confus o O PostgreSQL suporta os tipos SQL usuais int smallint real double precision char N varchar N date time timestamp interval assim bem como outros tipos de utilidade geral e um abrangente conjunto de tipos geom tricos O PostgreSQL pode ser personalizado com um n mero arbitr rio de tipos definidos pelo usu rio Como conseqii ncia os nomes dos tipos n o s o sintaticamente palavras chaves exceto onde for requerido para suportar casos especiais no padr o SQL No segundo exemplo s o armazenadas as cidades e suas localiza es geogr ficas CREATE TABLE cidades nome varchar 80 localizacao point i O tipo point um exemplo de tipo espe
11. n o diga apenas que o PostgreSQL caiu A queda de um nico processo do servidor bem diferente da queda do processo postmaster pai por favor n o diga o postmaster caiu quando um nico processo servidor caiu nem o contr rio Al m disso os programas cliente como o terminal interativo psql s o completamente separados do servidor Por favor tente especificar se o problema est no lado do cliente ou no lado do servidor 6 3 Aonde relatar os erros De uma maneira geral os relat rios de erro devem ser enviados para a lista de discuss o de relat rios de erros em lt pgsql bugs postgresgl org gt E necess ria a utiliza o de um assunto descritivo para a mensagem de correio eletr nico talvez uma parte da pr pria mensagem de erro Outro m todo preencher o relat rio de erro dispon vel no s tio do projeto na Web em http www postgresql org O preenchimento desta forma faz com que este seja enviado para a lista de discuss o lt pgsql bugs postgresql org gt N o envie o relat rio de erro para nenhuma lista de discuss o dos usu rios tal como lt pgsql sql postgresgql org gt ou lt pgsql general postgresql org gt Estas listas de discuss o s o para responder perguntas dos usu rios e seus subscritores normalmente n o desejam receber relat rios de erro Mais importante ainda eles provavelmente n o v o conseguir corrigir o erro Por favor tamb m n o envie relat rios para a lista de discuss
12. o dos desenvolvedores em lt pgsql hackers postgresql org gt Esta lista para discutir o desenvolvimento do PostgreSQL e n s viii Pref cio gostamos de manter os relat rios de erro em separado N s podemos decidir discutir o seu relat rio de erro em pgsql hackers se o problema necessitar uma maior averigua o Se voc tiver problema com a documenta o o melhor lugar para relatar na lista de discuss o da documenta o em lt pgsql docs postgresql org gt Por favor seja espec fico sobre qual parte da documenta o voc esta descontente N T Informe os erros encontrados na tradu o deste manual a lt halleypo yahoo com br gt Se o seu erro for algum problema de portabilidade ou uma plataforma n o suportada envie uma mensagem de correio eletr nico para lt pgsql ports postgresql org gt para que n s e voc possamos trabalhar para portar o PostgreSQL para esta plataforma Nota Devido grande quantidade de spam na Internet todos os endere os de correio eletr nico acima s o de listas de discuss o fechadas Ou seja voc precisa subscrever a lista primeiro para depois poder enviar mensagens entretanto voc n o precisa subscrever para utilizar o formul rio de relat rio de erro da Web Se voc deseja enviar uma mensagem de correio eletr nico mas n o deseja receber o tr fego da lista voc pode subscrever e configurar sua op o de subscri o com nomail Para maiores informa es envie uma mens
13. s queremos que seja feito varrer a tabela clima e para cada linha encontrar a linha correspondente em cidades Se nenhuma linha for encontrada n s queremos que algum valor vazio seja colocado nas colunas da tabela cidades Este tipo de consulta chamado de jun o externa outer join As consultas vistas at agora s o jun es internas inner join O comando ent o fica assim SELECT x FROM clima LEFT OUTER JOIN cidades ON clima cidade cidades nome cidade temp min temp max prcp data nome localizacao Hayward 37 54 1994 11 29 S o Francisco 46 50 0 25 1994 11 27 S o Francisco 194 53 S o Francisco 43 ae fl O 1994 11 29 S o Francisco 194 53 3 rows Capitulo 2 A linguagem SQL Esta consulta chamada de jun o externa esquerda left outer join porque a tabela mencionada es querda do operador de jun o ter cada uma de suas linhas aparecendo na sa da ao menos uma vez enquanto que a tabela direita vai ter somente as linhas que correspondem a alguma linha da tabela esquerda aparecendo Ao listar uma linha da tabela esquerda para a qual n o existe nenhuma linha correspondente na tabela direita valores vazios nul1 s o colocados nas colunas da tabela direita Exerc cio Existe tamb m a jun o externa direita right outer join e a jun o externa completa f
14. teis quando combinadas com a cl usula GROUP By Por exemplo pode ser obtida a maior temperatura m nima observada em cada cidade com SELECT cidade max temp min FROM clima GROUP BY cidade cidade max ARAN Hayward h 37 S o Francisco 46 2 rows o que produz uma linha de sa da para cada cidade Cada resultado da agrega o calculado sobre as linhas da tabela que correspondem a uma cidade Estas linhas agrupadas podem ser filtradas utilizando a cl usula HAVING SELECT cidade max temp min FROM clima GROUP BY cidade HAVING max temp min lt 40 cidade max Hayward 37 1 row que nos fornece o mesmo resultado apenas para as cidades que possuam todos os valores de temp min abaixo de 40 Finalmente se n s desejamos somente as cidade que come am com a letra s podemos escrever SE E ECT cidade max temp min FROM clima WHERE cidade LIK GROUP BY cidade HAVING max temp min lt 40 C4 n oe O O operador LIKE faz correspond ncia de padr o e explicado no Guia do Usu rio do PostgreSQL Il importante compreender a intera o entre as agrega es e as cl usulas WH fundamental entre WHERE e HAVING esta 0 WH Capitulo 2 A linguagem SQL E e HAVING do SQL A diferen a E seleciona as linhas de entrada antes dos grupos e agrega es serem computados portanto controla
15. usu rio pode ser qualquer um usando ou querendo usar qualquer parte do sistema PostgreSQL Estes termos n o devem ser interpretados ao p da letra este conjunto de documentos n o estabelece premissas sobre os procedimentos do administrador do sistema utilizado usr local pgsql como sendo o diret rio raiz da instala o e usr local pgsql data como o diret rio contendo os arquivos dos banco de dados Estes diret rios podem ser outros em sua m quina os detalhes podem ser vistos no Guia do Administrador N T var lib pgsql e var lib pgsql data no Mandrake Linux Na sinopse dos comandos os colchetes indicam uma frase ou palavra chave opcional Qualquer coisa entre chaves contendo tamb m barras verticais indica que uma das alternativas deve ser escolhida Os exemplos mostram comandos executados a partir de v rias contas e programas Os comandos executados a partir de uma shell do Unix podem estar precedidos por um caractere de cifr o Os comandos executados a partir da conta de um usu rio tal como root ou postgres s o especialmente sinalizados e explicados Os comandos SQL podem estar precedidos por gt ou n o ter nada os precedendo dependendo do contexto 5 http www postgresql org 6 http www postgresql org users lounge 7 http br groups yahoo com group postgresgl br Prefacio Nota A nota o para sinalizadores de comandos n o totalmente consistente atrav s d
16. 3 9 Heran a esis ces detest togs a e cl Sb dan ds AA E E ethan EA E ives PAG eaewraeee ones 16 3 0 CONCIUSAO everson EO a eee 18 Bibliografia cccicccscesssscaseessscasesoovessssescescesdesus schsesevsesiseussosedeasousesssctesvsssesesseusscsvevas ses SecausbecvccesvassesesessassevedessesGeasvencsas 19 UNCON vsesssccsssscestussstesscssssosiscenssosbasssvancestvessteigsivsseosigeavaseobesesvensestvessivigsbvsseosi A 21 ili Prefacio 1 O que o PostgreSQL O PostgreSQL um sistema de gerenciamento de banco de dados objeto relacional SGBDOR baseado no POSTGRES Vers o 4 2 desenvolvido no Departamento de Ci ncia da Computa o da Universidade da Cal if rnia em Berkeley O projeto POSTGRES liderado pelo Professor Michael Stonebraker foi patrocinado pelas seguintes institui es Defense Advanced Research Projects Agency DARPA Army Research Office ARO National Science Foundation NSF e ESL Inc O PostgreSQL descende deste c digo original de Berkeley possuindo o c digo fonte aberto Fornece suporte s linguagens SQL92 SQL99 al m de outras funcionalidades modernas O POSTGRES foi o pioneiro em muitos conceitos objeto relationais que agora est o se tornando dispon veis em alguns bancos de dados comerciais Os Sistemas de Gerenciamento de Bancos de Dados Relacionais SGBDR tradicionais suportam um modelo de dados que consiste em uma cole o de rela es com nome contendo atribu tos de um tipo espec fico Nos sistem
17. 4
18. NA N A AON I TETEE i EO Ka AAO OIR NO B 2A E AR i Rd ss i 2 Uma breve historia do Postre SQL esri o passas dos e ee REE EE p E EE EE EKES E ESS ed i 2 1 O projeto POSTGRES de Berkeley s esseeeeseeeeeseeeeerrseerrsesserrssrerestssestssreresestrttseersrenterrsrentsreeee ii 22 10 POSIPTESOS 1 cece scat E E E E E E E EE eens ii 23 O POs SOD a eg a os iii 3 QOQque esta contido neste manuals sses eeo ee se e eae desk vote ntipareendysuseteetagenestey Meth sad iii 4 Revis o dos recursos de documenta o 0 0 eeeesseeseeceseeeseceececreeeneceacecsecesueceneecsecesseceeeesuecesaeeeeeesseeenaeeaees iv Terminglo pia e nota iOa a EE E A E AEA E E ua E dados v 6 Gu ia para relatar ELOS usas r a E ARA E OE rS TENS SE RS vi 6 1 Identificando CLTOS ics si i raa eaaa e A E A A R vi 6 2 O querelatara sec eono oree as E E pra E O EE EREE AE dead co A dada Saulo ASIE vi 6 3 Aonde Telatar OS ErrOS os iiair e ia EEEE E EE EE EEE EAE viii 1 Iniciando AAAA EAA E AAA E E EA AE A AEO 1 TT Instalacioni iii e E TEE REEE EE E E E E EA E R TE REEE E 1 1 2 Fundamentos da Arquiletura s teens ene N Sire sia dence uvebuuecvane sueuects a 1 1 3 Criando um banco de dados iscas aaa cosgeasnstuss consis aa ae aoa a aA EEA A AD Ea ov sda PER TINA Cine ERA qua 2 1 4 Acessando um banco dedad sei ircen annn a a a a e a a a E a aiaa 3 2 A linguagem SQL a sssssscsesensssessosessensessscacenssoaeseseesiossuososs seasons casseseessadsveseussea
19. Tutorial do PostgreSQL 7 3 2 The PostgreSQL Global Development Group Tutorial do PostgreSQL 7 3 2 por The PostgreSQL Global Development Group Copyright 1996 2002 The PostgreSQL Global Development Group Legal Notice PostgreSQL is Copyright 1996 2002 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below Postgres95 is Copyright 1994 5 by the Regents of the University of California Permission to use copy modify and distribute this software and its documentation for any purpose without fee and without a written agreement is hereby granted provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT INDIRECT SPECIAL INCIDENTAL OR CONSEQUENTIAL DAMAGES INCLUDING LOST PROFITS ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE SOFTWARE PRO VIDED HEREUNDER IS ON AN AS IS BASIS AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE SUPPORT UPDATES ENHANCEMENTS OR MODIFICATIONS Indice Pre ACIO EA E I EEA E
20. a Uma outra propriedade importante dos bancos de dados transacionais est muito ligada no o de atualiza es at micas quando v rias transa es est o executando ao mesmo tempo cada uma delas n o deve enxergar as mudan as intermedi rias efetuadas pelas outras Por exemplo se uma transa o est ocupada totalizando o saldo de todas as ag ncias n o pode ser visto o d bito efetuado na ag ncia da Alice mas ainda n o creditado na ag ncia do Bob nem o contr rio Portanto as transa es n o devem ser tudo ou nada apenas em termos de seu efeito permanente no banco de dados mas tamb m em termos de visibilidade durante o processamento As atualiza es feitas por uma transa o n o podem ser vistas pelas outras transa es enquanto esta n o terminar quando todas as atualiza es se tornam vis veis ao mesmo tempo No PostgreSQL uma transa o definida cercando se os comandos SQL da transa o com os comandos BEGIN e COMMIT Sendo assim a nossa transa o banc ria ficaria BEGIN UPDATE conta corrente SET saldo saldo 100 00 WHERE nome Alice cette GC COMMIT Se no meio da transa o for decidido que esta n o deve ser conclu da talvez porque foi visto que o saldo da Alice se tornou negativo pode ser executado o comando ROLLBACK em vez do COMMIT fazendo com que todas as atualiza es sejam canceladas O PostgreSQL na verdade trata todo comando SQL como sendo executado
21. a o de porque isto funciona Os nomes dos usu rios do PostgreSQL s o distintos dos nomes das contas do sistema operacional Ao se conectar com um banco de dados pode ser escolhido o nome do usu rio do PostgreSQL que deseja se conectar como Se isto n o for feito isto o padr o utilizar o mesmo nome da conta atual do sistema operacional Como isto ocorre sempre existir uma conta de usu rio do PostgreSQL que possui o mesmo nome do usu rio do sistema operacional que inicializou o servidor e acontece tamb m que este usu rio sempre tem permiss o para criar bancos de dados Em vez de se logar como o usu rio pode ser especificada a op o U em todos os aplicativos para escolher o nome do usu rio do PostgreSQL que se deseja conectar como Capitulo 1 Iniciando h for help with SQL commands for help on internal slash commands g or terminate with semicolon to execute query q to quit meu_bd gt A ltima linha tamb m pode ser meu_bd Isto significa que voc um super usu rio do banco de dados o que acontece geralmente quando voc instala o PostgreSQL por si mesmo Sendo um super usu rio significa que voc n o est sujeito a controles de acesso Para as finalidades deste tutorial isto n o tem import ncia Se voc teve problemas ao inicializar o psql ent o retorne se o anterior Os diagn sticos do psql e do createdb s o similares e se um funcionou o outro deve funcionar tamb m A ltima linha exib
22. a somente na tabela cidades e n o nas tabelas hierarquicamente abaixo de cidades em termos de heran a Muitos comandos dis cutidos at agora SELECT UPDATE e DELETE permitem usar a nota o do ONLY 3 6 Conclus o O PostgreSQL possui muitas funcionalidades n o descritas neste tutorial introdut rio o qual est orientado para os usu rios novatos em SQL Estas funcionalidades est o discutidas com mais detalhes no Guia do Usu rio do PostgreSQL e no Guia do Programador do PostgreSQL Se voc achar que necessita de mais material introdut rio por favor visite o s tio do PostgreSQL na Web para obter mais informa es 1 http www postgresql org 18 Bibliografia Refer ncias e artigos selecionados para o SQL e para o PostgreSQL Alguns relat rios oficiais e t cnicos da equipe original de desenvolvimento do POSTGRES est o dispon veis no s tio na Web do Departamento de Ci ncia da Computa o da Universidade da Calif rnia em Berkeley Livros de Refer ncia sobre o SQL Judith Bowman Sandra Emerson e Marcy Darnovsky The Practical SOL Handbook Using Structured Query Language Third Edition Addison Wesley ISBN 0 201 44787 8 1996 C J Date e Hugh Darwen A Guide to the SOL Standard A user s guide to the standard database language SQL Fourth Edition Addison Wesley ISBN 0 201 96426 0 1997 C J Date An Introduction to Database Systems Volume 1 Sixth Edition Addison We
23. agem para lt ma jordomo amp postgresqgl org gt contendo apenas a palavra help no corpo da mensagem ix Capitulo 1 Iniciando 1 1 Instala o Antes de poder usar o PostgreSQL este deve estar instalado claro poss vel que o PostgreSQL j esteja instal ado em sua m quina seja porque est inclu do na distribui o do sistema operacional ou porque o administrador do sistema fez a instala o Se este for o caso deve se obter informa es na documenta o do sistema operacional ou com o administrador do sistema sobre como acessar o PostgreSQL Se voc n o tiver certeza que o PostgreSQL est dispon vel ou que pode ser usado para os seus experimentos voc poder fazer a instala o por si mesmo Proceder desta maneira n o dif cil e pode ser um bom exerc cio O PostgreSQL pode ser instalado por qualquer usu rio sem privil gios porque nenhum acesso de super usu rio root necess rio Se voc for instalar o PostgreSQL por si mesmo ent o consulte o Guia do Administrador do PostgreSQL para ler as instru es de instala o e depois retorne para este manual quando a instala o estiver completa Certifique se de seguir de perto a se o relativa configura o das vari veis de ambiente apropriadas Se o administrador do sistema n o fez a configura o conforme o padr o talvez algum trabalho adicional deva ser feito Por exemplo se a m quina servidora de banco de dados for uma m quina remota ser
24. anto encorajamos muito que este t pico seja aprendido 3 4 Transa es Transa o um conceito fundamental de todo o sistema de banco de dados O ponto essencial de uma transa o que esta engloba v rios passos em uma nica opera o de tudo ou nada Os estados dos passos intermedi rios n o s o vis veis para as outras transa es concorrentes e se alguma falha ocorrer que impe a a transa o de chegar at o fim ent o nenhum dos passos intermedi rios ir afetar o banco de dados de nenhuma forma Por exemplo considere um banco de dados de uma institui o financeira que cont m o saldo da conta corrente de v rios clientes assim como o saldo total dos dep sitos de cada ag ncia Suponha que se deseje transferir 100 00 da conta da Alice para a conta do Bob Simplificando barbaramente os comandos SQL para esta opera o seriam UPDATE conta corrente SET saldo saldo 100 00 WHERE nome Alice UPDATE filiais SET saldo saldo 100 00 WHERE nome SELECT nome filial FROM conta corrente WHERE nome Alice UPDATE conta corrente SET saldo saldo 100 00 WHERE nome Bob UPDATE filiais SET saldo saldo 100 00 WHERE nome SELECT nome filial FROM conta corrente WHERE nome Bob Os detalhes destes comandos n o s o importantes aqui o importante que exist
25. apenas um comando SELECT sem enviar os comandos CREATE TABLE e INSERT que os precederam se a sa da depender dos dados contidos nas tabelas N s n o temos tempo para realizar a engenharia reversa do esquema do seu banco de dados e se n s tivermos que criar os nossos pr prios dados n s provavelmente n o vamos conseguir reproduzir o problema O melhor formato para realizar um caso de teste para problemas relacionados com a linguagem de consulta um arquivo que possa ser executado a partir do aplicativo psql e que mostre o problema certifique se de que n o exista nada em seu arquivo de inicializa o psqlrc Uma maneira f cil de come ar este arquivo usar o pg dump para gerar as declara es da tabela e dos dados necess rios para montar o cen rio e depois incluir a consulta problem tica Encorajamos voc a minimizar o tamanho de seu exemplo mas isto n o absolutamente necess rio Se o erro for reproduz vel n s o encontraremos de qualquer forma Se o seu aplicativo utiliza alguma outra interface no cliente tal como o PHP ent o por favor tente isolar a consulta problem tica Provavelmente n s n o vamos configurar um servidor Web para reproduzir o seu problema De qualquer maneira lembre se de fornecer os arquivos de entrada exatos e n o suponha que o problema aconte a com arquivos grandes ou bancos de dados de tamanho m dio etc uma vez que estas informa es s o muito imprecisas para que possam ser u
26. as comerciais em uso os tipos poss veis incluem n mero de ponto flutuante inteiro cadeia de caracteres monet rio e data largamente reconhecido que este modelo n o adequado para aplica es futuras de processamento de dados O modelo relacional substituiu com sucesso os modelos anteri ores em parte devido sua simplicidade Espartana Entretanto esta simplicidade tornou a implementa o de certas aplica es muito dif cil O PostgreSQL oferece um substancial poder adicional devido incorpora o dos conceitos mostrados abaixo de uma forma que os usu rios podem facilmente estender o sistema heran a tipos de dados fun es Outras funcionalidades fornecem poder e flexibilidade adicionais restri es gatilhos regras integridade da transa o Estas funcionalidades colocam o PostgreSQL dentro da categoria de bancos de dados referida como objeto relacional Repare que isto diferente daqueles referidos como orientados a objetos que em geral n o s o muito adequados para dar suporte s linguagens de banco de dados relacionais tradicionais Portanto embora o PostgreSQL possua algumas funcionalidades de orienta o a objetos est firmemente ligado ao mundo dos bancos de dados relacionais Na verdade alguns bancos de dados comerciais incorporaram recentemente funcionalidades nas quais o PostgreSQL foi o pioneiro 2 Uma breve hist ria do PostgreSQL O sistema de gerenciamento de banco de da
27. banco de dados para mostrar p ginas da Web ou uma ferramenta especializada para manuten o do banco de dados Alguns aplicativos cliente s o fornecidos junto com a dis tribui o do PostgreSQL sendo a maioria desenvolvida pelos usu rios t pico em aplicativos cliente servidor o cliente e o servidor estarem em m quinas diferentes Neste caso eles se comunicam atrav s de uma conex o de rede TCP IP Deve se ter isto em mente porque arquivos que podem ser acessados na m quina cliente podem n o ser acess veis ou podem somente ser acess veis usando um nome de arquivo diferente pela m quina servidora O servidor PostgreSQL pode tratar m ltiplas conex es concorrentes dos clientes Para esta finalidade iniciado fork um novo processo para cada conex o Deste ponto em diante o cliente e o novo processo servidor passam Capitulo 1 Iniciando a se comunicar sem a interven o do processo original postmaster Portanto o postmaster est sempre ex ecutando aguardando por novas conex es dos clientes enquanto os processos servidores associados aos clientes surgem e desaparecem tudo isso obviamente invis vel para o usu rio sendo somente mencionado para ficar completo 1 3 Criando um banco de dados O primeiro teste a ser feito para ver se poss vel acessar o servidor de banco de dados tentar criar um banco de dados Um servidor PostgreSQL pode gerenciar muitos bancos de dados Tipicamente um banco de dados e
28. c fico do PostgreSQL Finalmente deve ser mencionado que se a tabela n o for mais necess ria ou se deseja recri la de uma forma diferente esta pode ser removida atrav s do seguinte comando DROP TABLE nome da tabela 2 4 Povoando uma tabela com linhas O comando INSERT utilizado para povoar uma tabela com linhas INSERT INTO clima VALUES S o Francisco 46 50 0 25 1994 11 27 Repare que todos os tipos de dados usam formatos de entrada de dados bastante bvios As constantes que n o s o apenas valores num ricos geralmente devem estar entre ap strofos como no exemplo acima O tipo date na verdade muito flex vel com rela o aos dados que aceita mas para este tutorial ser utilizado o formato mostrado acima porque n o possui ambigiiidade O tipo point requer um par de coordenadas como entrada como mostrado abaixo INSERT INTO cidades VALUES S o Francisco 194 0 53 0 Capitulo 2 A linguagem SQL A sintaxe usada anteriormente requer que seja lembrada a ordem das colunas Uma sintaxe alternativa permite relacionar as colunas explicitamente INSERT INTO clima cidade temp_min temp_max prcp data VALUES Sao Francisco 43 57 0 0 1994 l11 29 As colunas podem ser listadas em uma ordem diferente se for desejado ou at mesmo omitir algumas colunas Por exemplo se a precipita o for desconhecida INSERT INTO clima data cidade temp
29. claro 2 6 Jun es entre tabelas At agora nossas consultas somente acessaram uma tabela de cada vez As consultas podem acessar v rias tabelas de uma vez ou acessar a mesma tabela de uma maneira que v rias linhas da tabela s o processadas ao mesmo tempo Uma consulta que acessa v rias linhas da mesma tabela ou de tabelas diferentes de uma vez chamada de consulta de jun o Como exemplo digamos que se deseja listar todos os registros de clima junto com a localiza o da cidade associada Para fazer isto necessitamos comparar a coluna cidade de cada linha da tabela clima com a coluna nome de todas as linhas da tabela cidades e selecionar os pares de linha onde estes valores s o correspondentes Nota Este apenas um modelo conceitual a jun o real pode ser realizada de uma maneira mais eficiente mas isto n o vis vel para o usu rio Esta opera o pode ser efetuada atrav s da seguinte consulta SELECT FROM clima cidades WHERE cidade nome Capitulo 2 A linguagem SQL cidade temp min temp max prcp data nome localizacao Sao Francisco 46 50 0 25 1994 11 27 S o Francisco 194 53 Sao Francisco 43 BA O 1994 11 29 S o Francisco 194 53 2 rows Observe duas coisas no resultado produzido N o existe nenhuma linha para a cidade Hayward Isto porque n o existe entrada correspondente na tabela cidades para Hayward portanto a jun o
30. dentro de uma transa o Se n o for utilizado o comando BEGIN ent o cada comando possui individualmente um BEGIN e um se der tudo certo COMMIT em torno dele Um grupo de comandos envolvidos por um BEGIN e um COMMIT algumas vezes chamado de bloco de transa o Nota Algumas bibliotecas cliente emitem um comando BEGIN e um comando commit automaticamente fazendo com que se obtenha o efeito de um bloco de transa o sem que seja perguntado Verifique a docu menta o da interface sendo utilizada 3 5 Heran a Heran a um conceito de banco de dados orientado a objeto que abre novas possibilidades interessantes ao projeto de bancos de dados Criemos duas tabelas uma tabela cidades e outra tabela capitais Naturalmente as capitais tamb m s o cidades e portanto deve existir alguma maneira de se mostrar implicitamente as capitais quando todas as cidades s o mostradas Sendo bastante perspicaz pode se criar um esquema como este CREATE TABLE capitais nome text populacao real altitude int em p s 16 Capitulo 3 Funcionalidades avan adas estado char 2 CREATE TABLE interior nome text populacao real altitude int em p s CREATE VIEW cidades AS SELECT nome populacao altitude FROM capitais UNION SELECT nome populacao altitude FROM interior Este esquema funciona bem para as consultas mas n o bom q
31. dos objeto relacional hoje em dia conhecido por PostgreSQL e por um breve per odo de tempo chamado Postgres95 derivado do pacote POSTGRES escrito na Universidade da Calif rnia em Berkeley Com mais de uma d cada de desenvolvimento por tr s o PostgreSQL o mais avan ado 1 http s2k ftp CS Berkeley EDU 8000 postgres postgres html Pref cio banco de dados de c digo aberto dispon vel em qualquer lugar oferecendo controle de concorr ncia multi vers o suportando praticamente todas as constru es do SQL incluindo subconsultas transa es tipos definidos pelo usu rio e fun es e dispondo de um amplo conjunto de liga es com linguagens procedurais incluindo C C Java Perl Tcl e Python 2 1 O projeto POSTGRES de Berkeley A implementa o do SGBD POSTGRES come ou em 1986 Os conceitos iniciais para o sistema foram apresen tados em The design of POSTGRES e a defini o do modelo de dados inicial apareceu em The POSTGRES data model O projeto do sistema de regras nesta poca foi descrito em The design of the POSTGRES rules system Os princ pios b sicos e a arquitetura do gerenciador de armazenamento foram detalhados em The design of the POSTGRES storage system O Postgres passou por v rias vers es desde ent o A primeira vers o de demonstra o do sistema se tornou operacional em 1987 e foi exibida em 1988 na Confer ncia ACM SIGMOD A vers o 1 descrita em The im plementation of POSTGRES foi
32. e problema Desejamos ter certeza que n o ser o inseridas linhas na tabela clima sem que haja uma entrada correspondente na tabela cidades Isto chamado de manter a integridade referencial dos dados Em sistemas de banco de dados muito simples isto poderia ser implementado caso fosse primeiro olhando se a tabela cidades para ver se um registro correspondente existe e depois inserindo ou rejeitando o novo registro de clima Esta abordagem possui v rios problemas e muito inconveniente portanto o PostgreSQL pode realizar esta opera o por voc As novas declara es para as tabelas ficariam assim CREATE TABLE cidades cidade varchar 80 primary key 14 Cap tulo 3 Funcionalidades avan adas localizacao point i CREATE TABLE clima cidade varchar 80 references cidades temp_min int temp_max int prep real data date i Agora ao se tentar inserir um registro inv lido INSERT INTO clima VALUES Berkeley 45 53 0 0 1994 11 28 ERROR lt unnamed gt referential integrity violation key referenced from clima not found in ci O comportamento das chaves estrangeiras pode receber um ajuste fino na aplica o N o iremos al m deste exemplo simples neste tutorial mas consulte o Guia do Usu rio do PostgreSQL para obter mais informa es Usar corretamente as chaves estrangeiras com certeza vai melhorar a qualidade dos seus aplicativos de banco de dados port
33. e realmente pode ser feito o que est se tentando fazer Se n o est claro na documenta o que algo pode ou n o ser feito por favor informe isto tamb m um erro da documenta o Se acontecer do programa fazer algo diferente do que est escrito na documenta o isto tamb m um erro Pode incluir mas n o se restringe s seguintes circunst ncias e O programa termina com um erro fatal ou com uma mensagem de erro do sistema operacional que aponta para um erro no programa um exemplo oposto seria uma mensagem de disco cheio uma vez que o pr prio usu rio deve corrigir este problema O programa produz uma sa da errada para uma entrada espec fica O programa se recusa a aceitar uma entrada v lida conforme definido na documenta o O programa aceita uma entrada inv lida sem enviar uma mensagem de erro Por m tenha em mente que a sua id ia de entrada errada pode ser a nossa id ia de uma extens o ou a compatibilidade com a pr tica tradicional e O PostgreSQL falha ao compilar montar ou instalar de acordo com as instru es em uma plataforma suportada Aqui programa se refere a qualquer execut vel e n o apenas ao processo servidor Estar lento ou consumir muitos recursos n o necessariamente um erro Leia a documenta o ou fa a perguntas em alguma lista de discuss o para pedir ajuda para ajustar seus aplicativos N o agir de acordo com o padr o SQL tamb m n o necessariamente um erro
34. e ser cidade temp min temp max prcp data 4 S o Francisco 46 50 O 25 1994 11 27 S o Francisco 43 5a 0 18984 11 29 Hayward 37 54 1994 11 29 3 rows Pode ser especificada qualquer express o arbitr ria na lista de sele o Por exemplo pode se escrever SE ae ECT cidade temp maxttemp min 2 AS temp media data FROM clima O que deve produzir cidade temp media data Capitulo 2 A linguagem SQL Sao Francisco 48 1994 11 27 S o Francisco SO 1994 11 29 Hayward 45 1994 11 29 3 rows Perceba que a cl usula As foi utilizada para mudar o nome da coluna de sa da opcional Operadores booleanos arbitr rios AND OR e NOT s o permitidos na qualifica o da consulta Por exemplo o comando abaixo obt m o clima de S o Francisco nos dias de chuva SELECT FROM clima WHERE cidade S o Francisco AND prep gt 0 0 Resultado cidade temp_min temp_max data 46 50 prep S o Francisco 0 25 1994 11 27 1 row Como nota final pode se desejar que os resultados de uma sele o retornem em uma determinada ordem ou com as linhas duplicadas removidas SELECT DISTINCT cidade FROM clima ORDER BY cidade cidade Hayward S o Francisco 2 rows As cl usulas DISTINCT ORDER BY podem ser usadas separadamente
35. em v rias atualiza es separadas envolvidas para realizar esta opera o bem simples A contabilidade do banco quer ter certeza que todas as atualiza es s o realizadas ou que nenhuma delas acontece N o interessante uma falha no sistema fazer com que Bob receba 100 00 que n o foi debitado da Alice A Alice tamb m n o vai continuar sendo uma cliente satisfeita se o dinheiro for debitado da conta dela e n o for creditado na de Bob necess rio garantir que se algo der errado no meio da opera o nenhum dos passos executados at ent o surtam efeito Agrupando se estas atualiza es em uma transa o nos d esta garantia Uma transa o dita como sendo at mica do ponto de vista das outras transa es ou ela acontece plenamente ou nada acontece 15 Capitulo 3 Funcionalidades avan adas Desejamos tamb m a garantia de uma vez que a transa o esteja completa e aceita pelo sistema de banco de dados que fique permanentemente gravada e n o seja perdida mesmo no caso de uma pane acontecer logo em seguida Por exemplo se estiver sendo registrado um saque em dinheiro pelo Bob n o desejado de forma alguma que o d bito em sua conta corrente desapare a devido a uma pane ocorrida logo depois dele sair do banco Um banco de dados transacional garante que todas as atualiza es feitas por uma transa o est o registradas em um meio de armazenamento permanente ou seja em disco antes da transa o ser considerada complet
36. er real float8 Ver double precision floating point formatting functions G get bit get byte group H hash Ver indexes has database privilege has function privilege has language privilege has schema privilege has table privilege I identifiers in indexes B tree hash multicolumn on functions partial R tree unique inet data type int2 Ver smallint int4 Ver integer int8 Ver bigint integer internal Index intersection interval isolation levels read committed read serializable J joins cross left natural outer K key words list of syntax L label column table language_handler length binary strings Ver binary strings length character strings Ver character strings length like limit line locking M MAC address Ver macaddr macaddr data type 22 N names qualified unqualified namespaces network addresses nextval nonrepeatable read not operator notin nullif numeric constants numeric data type O object identifier data type obj_description offset with query results OID opaque operators logical precedence syntax or operator overlay P path data type pg function is visible pg get constrain
37. ermaneceu dispon vel para os programas escritos na linguagem C e Adicionalmente ao programa monitor um novo programa psql foi fornecido para consultas SQL interativas utilizando o Readline do GNU e Uma nova biblioteca cliente 1ibpgtc1 suportava clientes baseados no Tcl Uma shell pgtclsh permitia que os novos comandos Tcl fizessem uma interface entre os programas Tcl e o servidor Postgres95 A interface para objetos grandes foi refeita A Invers o de objetos grandes era o nico mecanismo para armazen los O sistema de arquivos Invers o foi removido e O sistema de regras no nivel de inst ncia foi removido As regras ainda estavam dispon veis atrav s de regras de reescrita e Um breve tutorial introduzindo as funcionalidades regulares da linguagem SQL assim como as do Postgres95 foi distribu do junto com o c digo fonte e O utilit rio make do GNU no lugar do make do BSD foi utilizado para a gera o Al m disso o Postgres95 podia ser compilado com o GCC sem corre es alinhamento de dados para a precis o dupla foi corrigido 2 3 O PostgreSQL Em 1996 se tornou claro que o nome Postgres95 n o resistiria ao teste do tempo Foi escolhido ent o um novo nome PostgreSQL para refletir o relacionamento entre o POSTGRES original e as vers es mais recentes com funcionalidade SQL Ao mesmo tempo foi mudado o n mero da vers o para come ar em 6 0 colocando os n meros de volta na seqii ncia original come
38. ers partindex de95 ps Z http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M85 95 pdf http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M87 06 pdf http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M89 82 pdf http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M89 17 pdf http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M90 34 pdf 0 http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M90 36 pdf daa 20 Index A aggregate functions alias Ver label all and operator any 2 2 anyarray arrays constants auto increment Ver serial average function B B tree Ver indexes between bigint bigserial binary strings concatenation length bit strings constants data type Boolean data type operators Ver operators logical box data type C case case sensitivity SQL commands character strings concatenation constants data types length cid cidr circle columns system columns col_description comments in SQL comparison operators concurrency conditionals constants cstring currval D data types constants numeric type casts date constants current data type output format Ver Tamb m Formatting decimal Ver numeric dirty read distinct double precision E except exists 21 F false float4 V
39. ida pelo psql o prompt indicando que o psq1 est aguardando voc e que voc pode digitar comandos SQL dentro do espa o de trabalho mantido pelo psq1 Tente usar estes comando meu bd gt SELECT version version PostgreSQL 7 3devel on i586 pc linux gnu compiled by GCC 2 96 1 row meu_bd gt SELECT current_date date meu_bd gt SELECT 2 2 column O programa psq1 possui v rios comandos internos que n o s o comandos SQL Eles come am pelo caractere de contrabarra Alguns destes comandos s o mostrados na mensagem de boas vindas Por exemplo pode ser obtida ajuda na sintaxe de v rios comandos SQL do PostgreSQL digitando se meu bd gt Ah Para sair do psq1 digite meu bd gt q e o psql vai terminar e retornar para a linha de comando do sistema operacional para conhecer outros comandos internos digite no prompt do psql Todas as funcionalidades do psq1 est o documentadas no Manual de Refer ncia do PostgreSQL Se o PostgreSQL estiver instalado corretamente voc tamb m poder digitar man psqi na linha de comando do sistema operacional para ver a documenta o Neste tutorial n s n o vamos utilizar estas funcionalidades explicitamente mas voc poder us las por si pr prio quando julgar adequado Capitulo 2 A linguagem SQL 2 1 Introdu o Este cap tulo cont m uma revis o sobre como utilizar a linguagem SQL para realizar opera es simples Este tutorial tem apenas o prop
40. liberada para alguns poucos usu rios externos em junho de 1989 Em resposta cr tica ao primeiro sistema de regras A commentary on the POSTGRES rules system o sistema de regras foi re projetado On Rules Procedures Caching and Views in Database Systems e a vers o 2 foi liberada em junho de 1990 contendo um novo sistema de regras A vers o 3 surgiu em 1991 adicionando suporte a m ltiplos geren ciadores de armazenamento um executor de consultas melhorado e um sistema de regras de reescrita reescrito Para a maior parte as vers es seguintes at o Postgres95 veja abaixo focaram a portabilidade e a confiabilidade O POSTGRES tem sido usado para implementar muitas aplica es diferentes de pesquisa e produ o incluindo sistema de an lise de dados financeiros pacote de monitoramento de desempenho de turbina a jato banco de dados de acompanhamento de aster ides banco de dados de informa es m dicas al m de v rios sistemas de informa es geogr ficas O POSTGRES tamb m tem sido usado como uma ferramenta educacional em diversas universidades Finalmente a Illustra Information Technologies posteriormente incorporada pela Informix que agora pertence IBM pegou o c digo e comercializou O POSTGRES se tornou o gerenciador de dados prim rio para o projeto de computa o cient fica Sequoia 2000 nos fins de 1992 O tamanho da comunidade de usu rios externos praticamente dobrou durante o ano de 1993 Come ou a se tor
41. m separado usado para cada projeto ou para cada usu rio Possivelmente o administrador j criou um banco de dados para o seu uso Ele deve ter dito qual o nome de seu banco de dados Neste caso esta etapa pode ser pulada indo se direto para a pr xima se o para criar um novo banco de dados chamado meu bd deve ser usado o seguinte comando createdb meu bd O que deve produzir a resposta CREATE DATABASE Se isto acontecer esta etapa foi executada com sucesso e o resto da se o pode ser saltada Se aparecer uma mensagem parecida com createdb command not found ent o o PostgreSQL n o foi instalado adequadamente Ou n o foi instalado ou o caminho de procura n o esta correto Tente executar o comando utilizando o caminho absoluto usr local pgsql bin createdb meu bd O caminho na sua m quina pode ser diferente N T usr bin createdb no Mandrake Linux Fa a contato com o administrador ou verifique novamente as instru es de instala o para corrigir a situa o Outra resposta pode ser esta psql could not connect to server Connection refused Is the server running locally and accepting connections on Unix domain socket tmp s PGSQL 5432 createdb database creation failed Isto indica que o servidor n o foi inicializado ou que n o foi inicializado aonde o createdb esperava que estivesse Novamente verifique as instru es de instala o ou consulte o administrador Se voc n o p
42. nar cada vez mais bvio que a manuten o do c digo do prot tipo e seu suporte estava consumindo uma grande quantidade de tempo que deveria ser dedicado a pesquisas sobre bancos de dados Em um esfor o para reduzir esta sobrecarga de suporte o projeto do POSTGRES de Berkeley terminou oficialmente com a vers o 4 2 2 2 O Postgres95 Em 1994 Andrew Yu e Jolly Chen adicionaram um interpretador da linguagem SQL ao POSTGRES O Post gres95 foi em seguida liberado para a Web para encontrar seu caminho no mundo como um descendente de c digo aberto do c digo original do POSTGRES de Berkeley O c digo do Postgres95 era totalmente escrito em ANSI C e reduzido em tamanho em 25 Muitas mudan as internas melhoraram o desempenho e a facilidade de manuten o O Postgres95 release 1 0 x era 30 50 mais r pido em compara o com o POSTGRES vers o 4 2 utilizando o Wisconsin Benchmark Al m da corre o de erros as melhorias principais foram as seguintes A linguagem de consultas PostQUEL foi substitu da pelo SQL implementado no servidor As subconsultas n o foram suportadas at o PostgreSQL veja abaixo mas podiam ser imitadas no Postgres95 atrav s de fun es SQL definidas pelo usu rio As agrega es foram re implementadas O suporte para a cl usula GROUP 2 http www informix com 3 http www ibm com 4 http meteora ucsd edu s2k s2k home html Prefacio BY das consultas tamb m foi adicionado A interface da 1ibpq p
43. nome padr o do banco de dados o nome sempre deve ser especificado Esta a o remove fisicamente todos os arquivos associados ao banco de dados e n o pode ser desfeita portanto esta opera o somente deve ser feita ap s um longo per odo de reflex o 1 4 Acessando um banco de dados Ap s o banco de dados ter sido criado este pode ser acessado pela e Execu o do programa de terminal interativo do PostgreSQL chamado psgl que permite a entrada edi o e execu o de comandos SQL interativos e Utiliza o de uma ferramenta cliente gr fica existente como o PgAccess ou de um pacote de automa o de escrit rios com suporte a ODBC para criar e manusear bancos de dados Estas possibilidades n o est o cobertas neste tutorial e Cria o de aplicativos personalizados usando uma das v rias liga es com linguagens dispon veis Estas pos sibilidades s o discutidas com mais detalhe no Guia do Programador do PostgreSQL Voc provavelmente deseja iniciar o psq1 para executar os exemplos deste tutorial O psq1 pode ser ativado para usar o banco de dados meu bd digitando o seguinte comando psql meu bd Se o nome do banco de dados for omitido ent o o padr o fica sendo o nome da conta de seu usu rio Voc j viu este esquema na se o anterior No psql voc vai ser saudado com a seguinte mensagem Welcome to psql 7 3 2 the PostgreSQL interactive terminal Type copyright for distribution terms 1 Uma explic
44. o conjunto de documentos Por favor relate os problemas encontrados para a lista de discuss o da documenta o em lt pgsql docs postgresql org gt 6 Guia para relatar erros Quando encontrado algum erro no PostgreSQL n s desejamos conhec lo Seus relat rios de erros s o uma parte importante para tornar o PostgreSQL mais confi vel porque mesmo o mais extremo cuidado n o pode garantir que todas as partes do PostgreSQL v o funcionar em todas as plataformas sob qualquer circunst ncia As sugest es abaixo t m por objetivo ajud lo a preparar seu relat rio de erro para que este possa ser tratado de uma maneira efetiva Ningu m obrigado a segui las mas s o feitas para ser uma vantagem para todos N s n o podemos prometer corrigir todos os erros imediatamente Se o erro for bvio cr tico ou afetar muitos usu rios existe uma boa chance de que algu m vai olh lo Pode acontecer tamb m n s solicitarmos a atual iza o para uma nova vers o para ver se o erro tamb m acontece na nova vers o Tamb m podemos decidir que o erro n o poder ser corrigido antes de uma grande reescrita que planejamos fazer Ou talvez simplesmente muito dif cil corrigi lo e existem coisas mais importantes na agenda Se for necess ria ajuda imediata deve ser levada em considera o a contrata o de um suporte comercial 6 1 Identificando erros Antes de relatar um erro por favor leia e releia a documenta o para verificar s
45. odeling Using Production Rules in a Database System ERL Technical Memorandum M90 33 University of California April 1990 L Rowe e M Stonebraker The POSTGRES data model Proc VLDB Conference Sept 1987 P Seshadri e A Swami Generalized Partial Indexes Proc Eleventh International Conference on Data Engi neering 6 10 March 1995 IEEE Computer Society Press Cat No 95CH35724 1995 p 420 7 M Stonebraker e L Rowe The design of POSTGRES Proc ACM SIGMOD Conference on Management of Data May 1986 M Stonebraker E Hanson e C H Hong The design of the POSTGRES rules system Proc IEEE Conference on Data Engineering Feb 1987 M Stonebraker The design of the POSTGRES storage system Proc VLDB Conference Sept 1987 M Stonebraker M Hearst e S Potamianos A commentary on the POSTGRES rules system SIGMOD Record 18 3 Sept 1989 M Stonebraker The case for partial indexes SIGMOD Record 18 4 Dec 1989 p 4 11 M Stonebraker L A Rowe e M Hirohama The implementation of POSTGRES Transactions on Knowledge and Data Engineering 2 1 IEEE March 1990 M Stonebraker A Jhingran J Goh e S Potamianos On Rules Procedures Caching and Views in Database Systems Proc ACM SIGMOD Conference on Management of Data June 1990 http s2k ftp CS Berkeley EDU 8000 postgres papers ERL M87 13 pdf http simon cs cornell edu home praveen pap
46. omportam se o seu problema o t rmino anormal de seu programa este item obviamente pode ser omitido e Qualquer op o de linha de comando e outras op es de inicializa o incluindo as vari veis de ambiente relacionadas ou arquivos de configura o que foram mudados com rela o ao padr o Novamente seja exato vii Prefacio Se estiver sendo utilizada uma distribui o pr configurada que inicializa o servidor de banco de dados durante o boot deve se tentar descobrir como isto feito e Qualquer coisa feita que seja diferente das instru es de instala o e A vers o do PostgreSQL Pode se executar o comando SELECT version para descobrir a vers o do servi dor ao qual se est conectado A maioria dos programas execut veis suporta a op o version ao menos postmaster versione psql version devem funcionar Se a fun o ou as op es n o existirem en t o a vers o sendo usada muito antiga e merece ser atualizada Tamb m pode ser visto 0 arquivo README no diret rio fonte ou o arquivo com o nome da distribui o ou o nome do pacote Se a vers o for pr configurada como RPMs informe incluindo qualquer sub vers o que o pacote possa ter Se estiver se referindo a uma vers o do CVS isto deve ser mencionado incluindo a data e a hora Se a sua vers o for anterior a 7 3 2 provavelmente n s lhe pediremos que atualize Existem toneladas de cor re es de erro a cada n
47. os e diret rios em sistemas operacionais tipo Unix s o um exemplo de banco de dados hier rquico Um desenvolvimento mais moderno s o os bancos de dados orientados a objeto Cada tabela uma cole o nomeada de linhas Cada linha de uma determinada tabela possui o mesmo conjunto de colunas nomeadas e cada coluna de um tipo de dado espec fico Enquanto as colunas possuem uma ordem fixa em cada linha importante lembrar que o SQL n o garante a ordem das linhas dentro de uma tabela embora as linhas possam ser explicitamente ordenadas para a exibi o As tabelas s o agrupadas em bancos de dados e uma cole o de bancos de dados gerenciada por uma nica inst ncia do servidor PostgreSQL constitui um agrupamento de bancos de dados 2 3 Criando uma nova tabela Uma nova tabela pode ser criada especificando se o seu nome juntamente com os nomes das colunas e seus tipos CREATE TABLE clima cidade varchar 80 temp min Ent temperatura m nima Capitulo 2 A linguagem SQL temp_max int temperatura m xima prep real precipita o data date O comando pode ser digitado no psq1 com as quebras de linha O psq1 vai reconhecer que o comando ainda n o terminou at encontrar o ponto e v rgula Espa os em branco ou seja espa os tabula es e novas linhas podem ser utilizadas livremente nos comandos SQL Isto significa que o comando pode ser digitado com um alinhamento diferente do
48. ossuir o privil gio necess rio para criar bancos de dados a seguinte mensagem ser exibida ERROR CREATE DATABASE permission denied createdb database creation failed Nem todo usu rio possui autoriza o para criar novos bancos de dados Se o PostgreSQL recusar a cria o do banco de dados ent o o administrador deve conceder a permiss o para criar bancos de dados para voc Consulte Capitulo 1 Iniciando o administrador caso isto ocorra Se voc instalou o PostgreSQL por si mesmo ent o voc deve se logar usando a mesma conta utilizada para inicializar o servidor para poder usar este tutorial Voc tamb m pode criar bancos de dados com outros nomes O PostgreSQL permite a cria o de qualquer n mero de bancos de dados em uma instala o Os nomes dos bancos de dados devem ter um primeiro caractere alfab tico estando limitados a um comprimento de 63 caracteres Uma escolha conveniente criar o banco de dados com o mesmo nome de seu usu rio corrente Muitas ferramentas assumem este nome de banco de dados como sendo o padr o evitando a necessidade de digit lo Para criar este banco de dados digite simplesmente createdb Se voc n o deseja mais utilizar o seu banco de dados voc pode remov lo Por exemplo se voc for o dono criador do banco de dados meu ba voc poder remov lo utilizando o seguinte comando dropdb meu bd Para este comando o nome da conta n o utilizado como o
49. ova libera o sendo este o motivo das novas libera es Informa es da plataforma Isto inclui o nome do n cleo e a vers o a biblioteca C o processador e a mem ria Na maioria dos casos suficiente informar o fornecedor e a vers o mas n o se deve assumir que todo mundo sabe exatamente o que o Debian cont m ou que todo mundo use Pentium Se houver problemas de instala o ent o as informa es sobre compilador make etc tamb m s o necess rias N o tenha medo que seu relat rio de erro se torne muito longo Este um fato da vida E melhor relatar tudo da primeira vez do que n s termos que extrair os fatos de voc Por outro lado se os seus arquivos de entrada s o enormes justo perguntar primeiro se algu m est interessado em v los N o perca todo o seu tempo tentando descobrir que mudan as na sua entrada fazem o problema desaparecer Isto provavelmente n o vai ajudar a resolver o problema Se for visto que o erro n o pode ser corrigido imediatamente voc ainda vai ter tempo para compartilhar sua descoberta com os outros Tamb m novamente n o perca seu tempo advinhando porque o erro existe N s o encontraremos brevemente Ao escrever o relat rio de erro por favor escolha uma terminologia que n o confunda O pacote de software em seu todo chamado de PostgreSQL e algumas vezes de Postgres para abreviar Se estiver se referindo especificamente ao processo servidor mencione isto
50. portanto aconselh vel que voc j tenha lido este cap tulo Alguns exemplos deste cap tulo tamb m podem ser encontrados no arquivo advanced sql no diret rio do tutorial Este arquivo tamb m cont m alguns dados de exemplo a serem carregados que n o ser o repetidos aqui consulte a Se o 2 1 para saber como usar este arquivo 3 2 Vis es Reveja as consultas na Se o 2 6 Suponha que a consulta combinando os registros de clima e de localiza o das cidades seja de particular interesse para o seu aplicativo mas que voc n o deseja digitar esta consulta toda vez que necessitar dela Pode se ent o criar uma vis o baseada na consulta a qual d um nome consulta atrav s do qual pode ser feita refer ncia como se fosse uma tabela comum CREATE VIEW minha visao AS SELECT cidade temp min temp max prcp data localizacao FROM clima cidades WHERE cidade nome SELECT FROM minha visao Fazer livre uso de vis es um aspecto chave de um bom projeto de banco de dados SQL As vis es permitem encapsular os detalhes da estrutura das tabelas que podem mudar na medida em que os aplicativos evoluem atr s de interfaces consistentes As vis es podem ser utilizadas em praticamente todos os lugares em que uma tabela pode ser utilizada Construir vis es baseadas em vis es n o raro 3 3 Chaves estrangeiras Reveja as tabelas clima e cidades no Cap tulo 2 Considere o seguint
51. quais linhas ir o para o computo da agrega o enquanto que o HAVING seleciona grupos de linhas ap s os grupos e agrega es serem computados Portanto a cl usula WHERE n o pode conter fun es de agrega o n o faz sentido tentar utilizar uma agrega o para determinar quais linhas ser o a en trada da agrega o Por outro lado a cl usula HAVING sempre possui fun o de agrega o Falando estritamente permitido escrever uma cl usula HAVING que n o possua agrega o mas desperd cio A mesma condi o poderia ser utilizada de forma mais eficiente no est gio do WH Observe que a restri o do nome da cidade poderia ser colocada na cl usula WH ERE uma vez que n o necessita de nenhuma agrega o Isto mais eficiente do que colocar a restri o na cl usula HAVING porque evita que sejam feitos os procedimentos de agrupamento e agrega o para todas as linhas que n o atendem a cl usula WHERE 2 8 Atualiza es As linhas existentes podem ser atualizadas usando se o comando UPDAT E Suponha que seja descoberto que as leituras de temperatura estejam todas 2 graus acima ap s 28 de Novembro de 1994 Estes dados podem ser corrigidos da seguinte maneira UPDATE clima W Agora vejamos o novo estado dos dados SET temp_max temp_max 2 HERE data gt 1994 11 28 temp_min 2 data SELECT FROM clima cidade
52. r do PostgreSQL Informa es sobre a instala o e a administra o do servidor Todos os que administram um servidor Post greSQL tanto para uso pessoal quanto para uso por outras pessoas devem l lo Guia do Programador do PostgreSQL Informa es avan adas para programadores de aplicativos Os t picos incluem a extensibilidade de tipo e de fun o interfaces com bibliotecas e quest es relativas ao projeto de aplicativos Manual de Refer ncia do PostgreSQL P ginas de refer ncia contendo a sintaxe para os comandos SQL programas para a esta o cliente e servidor Este manual um aux lio aos Guias do Usu rio do Administrador e do Programador Guia do Desenvolvedor do PostgreSQL Informa es para os desenvolvedores do PostgreSQL Feito para queles que est o contribuindo para o projeto PostgreSQL As informa es sobre o desenvolvimento de aplicativos est o mostradas no Guia do Programador Al m deste conjunto de manuais existem outros recursos para ajudar na instala o e uso do PostgreSQL man pages As p ginas do Manual de Refer ncia no formato tradicional man do Unix N o existe diferen a no con te do iv Pref cio FAQs As listas de perguntas fregiientemente formuladas Frequently Asked Questions FAQ documentam tanto quest es gerais como algumas quest es espec ficas para uma plataforma READMEs Os arquivos README leia me est o dispon veis em alguns pacotes contribu dos
53. sito de fazer uma introdu o e de forma alguma um tutorial completo sobre a linguagem SQL Muitos livros foram escritos sobre o SQL incluindo o Understanding the New SQL e A Guide to the SQL Standard Voc deve ficar ciente de que alguma funcionalidades da linguagem no PostgreSQL s o extens es ao padr o Nos exemplos a seguir assumido que voc tenha criado o banco de dados chamado meu ba conforme descrito no cap tulo anterior e que tenha ativado o psql Os exemplos presentes neste manual tamb m podem ser encontrados no fonte da distribui o do PostgreSQL no diret rio src tutorial Consulte o arquivo README neste diret rio para saber como us los Para iniciar o tutorial em ingl s fa a o seguinte cd src tutorial psql s mydb mydb gt i basics sql O comando i l os comandos no arquivo especificado A op o s ativa o modo passo a passo que faz uma pausa antes de enviar cada comando para o servidor Os comandos utilizados nesta se o est o no arquivo basics sql 2 2 Conceitos O PostgreSQL um sistema de gerenciamento de banco de dados relacional SGBDR Isto significa que um sistema para gerenciar dados armazenados em rela es Uma rela o essencialmente um termo matem tico para tabela A no o de armazenar dados em tabelas um lugar t o comum hoje em dia que pode parecer totalmente bvio mas existem v rias outras maneiras de se organizar bancos de dados Arquiv
54. sley 1994 Ramez Elmasri e Shamkant Navathe Fundamentals of Database Systems 3rd Edition Addison Wesley ISBN 0 805 31755 4 August 1999 Jim Melton e Alan R Simon Understanding the New SQL A complete guide Morgan Kaufmann ISBN 1 55860 245 3 1993 Jeffrey D Ullman Principles of Database and Knowledge Base Systems Volume 1 Computer Science Press 1988 Documenta o espec fica do PostgreSQL Stefan Simkovics Enhancement of the ANSI SQL Implementation of PostgreSQL Department of Information Systems Vienna University of Technology November 29 1998 Discusses SQL history and syntax and describes the addition of INTERSECT and EXCEPT constructs into PostgreSQL Prepared as a Master s Thesis with the support of O Univ Prof Dr Georg Gottlob and Univ Ass Mag Katrin Seyr at Vienna University of Technology A Yue J Chen The POSTGRES Group The Postgres95 User Manual University of California Sept 5 1995 Zelaine Fong The design and implementation of the POSTGRES query optimizer University of California Berkeley Computer Science Department 1 http s2k ftp CS Berkeley EDU 8000 postgres papers 2 http s2k ftp CS Berkeley EDU 8000 postgres papers UCB MS zfong pdf 19 Bibliografia Confer ncias e Artigos Nels Olson Partial indexing in POSTGRES research project University of California UCB Engin T7 49 1993 0676 1993 L Ong e J Goh A Unified Framework for Version M
55. souns sesoouanbasesdasousseuscesseossosionasostanbensend 5 2 1 Introdu o esor series elon Gio as AI A eR SAA A ee kt hee hie tia ae Stee 5 2 2 CONCEITOS iriiria E E EAE E EAE a E E OE stage itv oun EEA AE liaise esa haart Giese 5 273 Criando uma nova t bela renr a cs E EE E E ied svesven e ENTRO Ng cos ceca cnuntevbobevadveseuser berets 5 2 4 Povoando uma tabela com linhas ee eeseeeeecesseesceeececeseeesecescecsececsecencecseeeeseceatecsecesaeceaeeeeeesaeeeaeeneess 6 2 3 Consultando uma tabela ssocsveocescececweviz in eire onda dat coswes deerseswbeusuesdeisechoneees EAEE dio nc nulos aca aeons 7 2 6 Jun es entre tabelas sesir e sh eo ESE ope Ra pasa E pe Ee EEE E E EE e e Ear ESS 8 2 7 Fun es de aprega o ienr ae E Ee E E E E E E eed E E cano 10 PRI NMC IVATO AEE E EE E E oes 12 2 9 EXCIUS ES casser a E vs E Ha tee ok NEE tee Ot ee Na a ee oa 12 3 Funcionalidades avan adas sessesessesocsesoesessesossesossesossessesossesoesesseoossesosoesosoesessosessosoesessoseesssossesossessssossesosses 14 Bde Introdu o tene taere ar cs Sula cen stb adia A cas pop EAE E S EA E AUGI dp Pane TS EE EEEE SEEE 14 9125 VIS ES EEE dacs caesves SRU ONE ESTAS LORD EEN cheeses oboe Ola Ava TEUS SOLOS sda vey adeee tees sh Da nE san PLACE Do PEL ano d cas ia 14 3 3 Chavesestranseiras is ss eck es neces nec Saha cea Rel aah died Ela A cmi a heehee nee a 14 SA ErANSA ES E E E hee ee he ee ee ee EEE Ae Rn a lee a asa 15
56. tdef pg get indexdef pg get ruledef pg get userbyid pg get viewdef pg opclass is visible pg operator is visible pg table is visible pe type is visible phantom read Index point polygon Q qualified names quotes and identifiers escaping R R tree Ver indexes real record regclass regoper regoperator regproc regprocedure regtype regular expressions Ver Tamb m pattern matching S schema current schemas search path changing at runtime current select select list sequences and serial type serial serial4 serial8 setting current set setval set_bit set_byte similar to sintaxe 23 SQL smallint some sorting query results standard deviation strings Ver character strings subqueries substring T text Ver character strings tid time constants current data type output format Ver Tamb m Formatting time with time zone data type time without time zone time time zones timestamp data type timestamp with time zone data type timestamp without time zone data type timezone conversion trigger true types Ver data types U union unqualified names user current V variance version void W where X xid Index 2
57. tilizadas e A sa da produzida Por favor n o diga que n o funcionou ou que deu pau Se houver uma mensagem de erro mostre a mesmo que voc n o consiga entend la Se o programa terminar com um erro do sistema operacional diga qual Se nada acontecer informe Mesmo que o resultado do seu caso de teste seja o t r mino anormal do programa ou seja bvio de alguma outra maneira pode ser que isto n o aconte a em nossa plataforma A coisa mais f cil a ser feita copiar a sa da do terminal se for poss vel Nota No caso de erros fatais a mensagem de erro informada pelo cliente pode n o conter toda a infor ma o dispon vel Por favor olhe tamb m o log produzido no servidor de banco de dados Se voc n o mant m a sa da do 1log do servidor esta uma boa hora para come ar a faz lo A sa da esperada uma informa o importante a ser declarada Se voc escreve apenas Este comando produz esta sa da ou Isto n o o que eu esperava n s podemos executar olhar a sa da e achar que est tudo correto e exatamente o que n s esper vamos que fosse N s n o temos que perder tempo para decodificar a sem ntica exata por tr s de seus comandos Abstenha se especialmente de dizer meramente Isto n o o que o SQL diz ou o que o Oracle faz Pesquisar o comportamento correto do SQL n o uma tarefa divertida nem n s sabemos como todos os outros bancos de dados relacionais existentes se c
58. uando necess rio atualizar v rias linhas entre outras coisas Uma solu o melhor esta CREATE TABLE cidades nome text populacao real altitude int em p s CREATE TABLE capitais estado char 2 INHERITS cidades Neste caso uma linha de capitais herda todas as colunas nome populacao e altitude de seu ancestral cidades O tipo da coluna nome text um tipo nativo do PostgreSQL para cadeias de caracteres de tamanho vari vel As capitais dos estados t m uma coluna a mais chamada estado que guarda a sigla do estado No PostgreSQL uma tabela pode herdar de nenhuma ou de v rias tabelas Por exemplo a consulta abaixo lista os nomes de todas as cidades incluindo as capitais dos estados que est o localizadas a uma altitude superior a 500 p s H SE ECT name altitude ROM cities WHERE altitude gt 500 hy o que retorna nome altitude Las Vegas 2174 Mariposa 1953 Madison 845 3 rows Por outro lado a consulta abaixo lista todas as cidades que n o s o capitais e est o situadas a uma altitude superior a 500 p s 4 SE ECT nome altitude 17 Cap tulo 3 Funcionalidades avan adas FROM ONLY cidades WHERE altitude gt 500 name altitude Las Vegas 2174 Mariposa 1953 2 rows Nesta consulta a palavra ONLY antes de cidades indica que a consulta deve ser efetuad
59. ull outer join Tente descobrir o que fazem Tamb m poss vel fazer a jun o da tabela com si mesma Isto chamado de autojun o self join Como exemplo suponha que n s desejamos descobrir todos os registro de clima que est o no intervalo de temperatura de outros registros de clima Portanto n s precisamos comparar as colunas temp min e temp max de cada linha de clima com as colunas temp min e temp max de todas as outras linhas da tabela ci ima N s podemos fazer isto utilizando a seguinte consulta 4 SE ECT Cl cidade Cl temp min AS menor Cl temp_max AS maior C2 cidade C2 temp_min AS menor C2 temp_max AS maior FROM clima Cl clima C2 WHERE Cl temp min lt C2 temp min AND Cl temp max gt C2 temp max cidade menor maior cidade menor maior 4 H S o Francisco 43 57 S o Francisco 46 50 Hayward at A 54 S o Francisco 46 50 2 rows A tabela clima teve o seu nome mudado para C1 e C2 para que se possa distinguir o lado esquerdo e o direito da jun o Estes aliases tamb m podem ser utilizados em outras consultas para reduzir a digita o como por exemplo SELECT FROM clima w cidades c WHERE w cidade c nome Ser encontrada esta forma de abreviar com bastante freqti ncia 2 7 Fun es de agrega o Como a maioria dos produtos de banco de dados relacional o PostgreSQL suporta fun

Download Pdf Manuals

image

Related Search

Related Contents

User Manual Scavenger Transceiver Module STM 300  bankable  ISTRUZIONI PER L`USO TERMOVENTILATORE CERAMICO  Datasheet    Sony ACC-FM50A Operating Instructions  Skriv ut RA Sim DfU 28 oct EN.qxd  User Manual - i-Cat  Heath Zenith SL-5650 User's Manual  形名 IPSiO PJ X3131 IPSiO PJ WX3131 IPSiO PJ X3241  

Copyright © All rights reserved.
Failed to retrieve file