Home
Manual de Referência do PostgreSQL 7.2
Contents
1. Legend uname arwR privileges granted to a user group gname arwR privileges granted to a group arwR privileges granted to PUBLIC ELEC read PDATI ql write uN E ps append EFERENCES RIGGER arwdRxt ALL PRIVILEGES TFT xo od ass DO O HEuU RE GRANT O comando REVOKE utilizado para revogar os privil gios de acesso Exemplos Conceder para todos os usu rios o privil gio de inserir na tabela filmes GRANT INSERT ON filmes TO PUBLIC Conceder todos os privil gios ao usu rio manuel na vis o tipos GRANT ALL PRIVILEGES ON tipos TO manuel Compatibilidade SQL92 A palavra chave PRIVILEGES em ALL PRIVILEGES requerida O SQL n o aceita a concess o de privil gios em mais de uma tabela no mesmo comando A sintaxe do SQL92 para o comando GRANT permite conceder privil gios individuais para as colunas da tabela e permite conceder o privil gio de conceder o mesmo privil gio para outros GRANT privil gio ON objeto coluna 1 Ey TO PUBLIC nome do usu rio WITH GRANT OPTION O SQL permite conceder o privil gio USAGE em outros tipos de objeto CHARACTER SET COLLA TION TRANSLATION DOMAIN O privil gio TRIGGER foi introduzido no SQL99 O privil gio RULE uma extens o do PostgreSQL Consulte tamb m REVOKE INSERT
2. hoje 1998 03 31 17 41 31 02 SET Compatibilidade SQL92 A segunda sintaxe mostrada acima SET TIME ZONE tenta imitar o SQL92 Entretanto o SQL permite somente deslocamentos num ricos para a zona hor ria Todos os outros par metros mostrados assim como a primeira sintaxe mostrada acima s o extens es do PostgreSQL SET CONSTRAINTS Name SET CONSTRAINTS especifica o modo de restri o da transa o corrente Synopsis 109 ET CONSTRAINTS ALL restri o DEFERRED IMMEDIATE Descric o O comando SET CONSTRAINTS especifica o comportamento da avalia o da restri o na transa o cor rente No modo IMMEDIATE imediato as restri es s o verificadas ao final de cada comando No modo DEFERRED postergado as restri es n o s o verificadas at a efetiva o commit da transa o Na hora da cria o sempre dada restri o uma destas tr s caracter sticas INITIALLY DEFERRED ini cialmente postergada INITIALLY IMMEDIATE DEFERRABLE inicialmente imediata posterg vel ou INITIALLY IMMEDIATE NOT DEFERRABLE inicialmente imediata n o posterg vel A terceira classe n o afetada pelo comando SET CONSTRAINTS Atualmente somente as restri es de chave estrangeira s o afetadas por este comando As restri es de
3. Descri o O comando REVOKE permite ao criador de um objeto revogar as permiss es concedidas anteriormente a um ou mais usu rios ou grupos de usu rios A palavra chave PUBLIC refere se ao grupo de todos os usu rios definido implicitamente Observe que um usu rio em particular possui a soma dos privil gios concedidos diretamente ao pr prio usu rio com os privil gios concedidos aos grupos de que for membro e com os privil gios concedidos a PUBLIC Da por exemplo revogar o privil gio SELECT para PUBLIC n o significa necessariamente que todos os usu rios perdem o privil gio SELECT sobre o objeto queles que receberam o privil gio diretamente ou atrav s de um grupo permanecem com o privil gio Consulte a descri o do comando GRANT para conhecer o significado dos tipos de privil gio Notas Use o comando z do psql para exibir os privil gios concedidos nos objetos existentes Consulte tamb m o comando GRANT para obter informa es sobre o formato Exemplos Revogar o privil gio de inserir na tabela fi Imes concedido a todos os usu rios REVOKE INSERT ON filmes FROM PUBLIC Revogar todos os privil gios concedidos ao usu rio manuel sobre a vis o vis tipos REVOKE ALL PRIVILEGES ON vis tipos FROM manuel REVOKE Compatibilidade SQL92 As notas sobre compatibilidade presentes no comando GRANT se aplicam de forma an loga ao comando REVOK
4. Entradas nome O nome de uma tabela existente a ser removida Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR table nome does not exist Se a tabela especificada n o existe no banco de dados Descri o O comando DROP TABLE remove tabelas do banco de dados Somente o criador pode remover a tabela A tabela poder ficar sem linhas mas n o ser removida usando o comando DELETE Se a tabela sendo destru da possuir ndices secund rios nela estes ndices ser o removidos primeiro A remo o apenas do ndice secund rio n o afeta o conte do da tabela subjacente Notas Consulte os comandos CREATE TABLE ALTER TABLE para obter informa es sobre como criar e mod ificar tabelas DROP TABLE Utiliza o Destruir as tabelas filmes e distribuidores DROP TABLE filmes distribuidores Compatibilidade SQL92 O SQL92 especifica algumas funcionalidades adicionais para o comando DROP TABLE DROP TABLE tabela RESTRICT CASCADE RESTRICT Garante que somente uma tabela sem vis es dependentes ou restri es de integridade pode ser de stru da CASCADE Toda vis o ou restri o de integridade que fa a refer ncia tabela tamb m ser removida Tip Atualmente as vis es que fazem refer ncia tabela devem ser removidas explicitamente DROP TRIGGER Name DROP TRIGGER remove um g
5. IN FROM cursor Descri o O comando MOVE permite ao usu rio mover a posi o do cursor o n mero especificado de linhas O comando MOVE trabalha como o comando FETCH por m somente posiciona o cursor sem retornar as linhas Consulte o comando FETCH para obter detalhes sobre a sintaxe e a utiliza o Notas O comando MOVE uma extens o da linguagem do PostgreSQL Consulte o comando FETCH para obter uma descri o dos argumentos v lidos Consulte o comando DECLARE para definir o cursor Consulte os comandos BEGIN COMMIT e ROLLBACK para obter mais informa es sobre as transa es Utiliza o Criar e usar um cursor BEGIN WORK DECLARE liahona CURSOR FOR SELECT FROM filmes Saltar as primeiras 5 linhas MOVE FORWARD 5 IN liahona MOVE Ler a sexta linha no cursor liahona FETCH 1 IN liahona FETCH cod titulo did data prod tipo duracao e P 303 48 Hrs 103 1982 10 22 A o 01 37 1 row fechar o cursor liahona e efetivar a transa o CLOSE liahona COMMIT WORK MOVE Compatibilidade SQL92 N o existe o comando MOVE no SQL92 Em vez disto o SQL92 permite usar o comando FETCH para buscar uma linha na posi o absoluta do cursor movendo implicitamente o cursor para a posi o correta NOTIFY Name NOTIFY gera uma notifica o Synopsis NOTIFY nome Entradas nome da notifica
6. Synopsis CREATE LOCAL TEMPORARY TEMP TABLE nome da tabela nome da coluna AS consulta Descric o O comando CREATE TABLE AS cria e carrega uma tabela com dados produzidos pelo comando SELECT As colunas da tabela possuem os nomes e tipos de dado associados s colunas da sa da produzida pelo comando SELECT exceto que poss vel substituir os nomes das colunas fornecendo se uma lista expl cita de novos nomes de colunas O comando CREATE TABLE As exibe alguma semelhan a com a cria o de uma vis o mas na realidade bastante diferente este comando cria a nova tabela e executa a consulta apenas uma vez para fazer a carga inicial dos dados da nova tabela A nova tabela n o vai ter conhecimento das pr ximas mudan as ocorridas na tabela de origem da consulta Contrastando com este comportamento uma vis o executa novamente o comando SELECT sempre que consultada Par metros LOCAL TEMPORARY OU LOCAL TEMP Se for especificado a tabela criada como uma tabela tempor ria Tabelas tempor rias s o automati camente eliminadas no final da sess o Uma tabela persistente com o mesmo nome caso exista n o ser vista na sess o enquanto a tabela tempor ria existir Todo ndice criado em tabela tempor ria tamb m tempor rio A palavra LOCAL opcional nome da tabela O nome da nova tabela a
7. para o gatilho Os EI vis es s o mais apropriadas para este caso ECT n o modifica nenhuma linha portanto n o poss vel criar gatilhos para s EL ECT Regras e Consulte os cap tulos sobre SPI Interface de Programa o do Servidor e Gatilhos no Guia do Progra mador do PostgreSQL para obter mais informa es Notas Para criar um gatilho em uma tabela o usu rio deve possuir o privil gio TRIGGI Na vers o atual gatilhos de declara o STAT EM ER na tabela ENT triggers n o est o implementados Consulte o comando DROP TRIGGER para obter informa es sobre como remover gatilhos Exemplos Verificar se o c digo do distribuidor existe na tabela de distribuidores antes de inserir ou atualizar uma linha da tabela filmes CREATE TRIGG BEFORE INSERT OR UPDATE EXECUTE PROCEDURE ER se dist existe ON filmes FOR verificar chave primaria EACH ROW did distribuidores did Antes de remover um distribuidor ou de atualizar o seu c digo remover todas as refer ncias para a tabela filmes CREATE TRIGGER se filme exist BEFORE DELETE OR UPDATE ON distribuidores FOR EXECUTE PROCEDURE verificar chave primaria 1 EACH ROW CASCAD E did filmes did O segundo exemplo tamb m pode ser implementado usando
8. SELECT INTO cr a uma nova tabela a partir do resultado de uma consulta Synopsis SELECT ALL DISTINCT ON express o express o AS nome_sa da INTO TEMPORARY TEMP TABLE nova_tabela FROM item de WHERE condi o GROUP BY express o HAVING condi o UNION INTERSECT EXCEPT ALL select ORDER BY express o ASC DESC USING operador 1 FOR UPDATE OF nome tabela A LIMIT in cio contador ALL OFFSET in cio onde item de pode ser ONLY nome tabela AS alias lista alias coluna 1 1 select AS alias lista alias coluna item_de NATURAL join_type item_ de ON condi o jun o USING lista coluna jun o Entradas TEMPORARY TEMP Se TEMPORARY ou TEMP for especificado a tabela criada vai existir apenas durante a sess o sendo automaticamente eliminada no fim da sess o Uma tabela permanente com o mesmo nome caso exista n o ser vis vel nesta sess o enquanto a tabela tempor ria existir Todo ndice criado em tabela tempor ria tamb m tempor rio nova tabela O nome da nova tabela a ser criada A tabela n o pode existir Entretanto pode ser criada uma tabela tempor ria que possua o mesmo nome de uma tabela permanente existente SELECT INTO Todas as outras entra
9. vacuumdb teste Para limpar e analisar para o otimizador o banco de dados chamado grande ba vacuumdb analyze grande bd Para limpar uma nica tabela chamada foo em um banco de dados chamado xyz z y e analisar uma nica coluna da tabela chamada bar para o otimizador vacuumdb analyze verbose table foo bar xyzzy 72 Iil Aplicativos para o servidor do PostgreSQL Esta parte cont m informa es de refer ncia para os aplicativos do servidor e utilit rios de suporte do PostgreSQL Estes comandos s s o teis quando executados no computador onde o servidor de banco de dados est instalado Outros programas utilit rios est o listados em Reference Il Aplicativos para a estac o cliente do PostgreSQL 73 Name initdb cria um novo agrupamento de bancos de dados do PostgreSQL Synopsis initdb pgdata D diret rio username U nome do usu rio pwprompt W encoding E codificac o L diret rio noclean n debug d Descric o O initdb cria um novo agrupamento de bancos de dados do PostgreSQL ou sistema de bancos de dados Um agrupamento de bancos de dados uma cole o de bancos de dados que s o gerenciados por uma nica inst ncia do servidor Criar um sistema de banco de dados consiste em criar os diret rios onde os dados dos bancos de dados v o residir gerar as tabelas do cat logo compartilhado tabelas que pertencem ao agrupamento como um todo e n o a algu
10. B trees de alta concorr ncia de Lehman Yao RTREE implementa R trees padr o utilizando o algoritmo de parti o quadr tica de Guttman HASH uma implementa o das dispers es lineares de Litwin GIST Generalized Index Search Trees rvores de Procura de ndice Generalizadas CREATE INDEX coluna O nome de uma coluna da tabela nome_do_operador Uma classe de operador associada Veja abaixo para obter mais detalhes nome da fun o Uma fun o que retorna um valor que pode ser indexado predicado Define a express o da restri o constraint para o ndice parcial Sa das CREATE Mensagem retornada se o ndice for criado com sucesso ERROR Cannot create index nome do ndice already exists Este erro ocorre se for imposs vel criar o ndice Descri o O comando CREATE INDEX constr i o ndice nome do ndicena tabela especificada Tip Os ndices s o utilizados principalmente para melhorar o desempenho do banco de dados mas a utiliza o n o apropriada causa uma degrada o do desempenho Na primeira sintaxe exibida acima os campos chave para o ndice s o especificados como nomes de coluna V rios campos podem ser especificados se o m todo de acesso do ndice suportar ndices com m ltiplas colunas Na segunda sintaxe exibida acima o ndice definido sobre o resultado da fun o definida pelo usu rio nome da fun o aplicada sobre uma ou mais
11. SQL92 O comando CLOSE totalmente compat vel com o SQL92 CLOSE CLUSTER Name CLUSTER agrupa uma tabela de acordo com um ndice Synopsis CLUSTER nome_do_ ndice ON nome_da_tabela Entradas nome_do_ ndice O nome de um ndice nome_da_tabela O nome de uma tabela Sa das CLUSTER O agrupamento foi realizado com sucesso ERROR relation lt numero_tabelarelac o gt inherits nome_da_tabela ERROR Relation nome_da_tabela does not exist Descric o O comando CLUSTER instrui o PostgreSQL para agrupar a tabela especificada por nome da tabela baseado no ndice especificado por nome do ndice necess rio que o ndice tenha sido criado anteriormente na tabela nome da tabela Quando a tabela agrupada ela fisicamente reordenada baseado na informa o do ndice O agrupa mento est tico Em outras palavras assim que a tabela for atualizada as modifica es n o ser o agru padas Nenhuma tentativa feita para manter as novas inst ncias ou as tuplas atualizadas agrupadas Se for desejado a tabela pode ser reagrupada manualmente executando se o comando novamente CLUSTER Notas Na realidade a tabela copiada para uma tabela tempor ria ordenada pelo ndice e em seguida renomeada para o seu nome original Por esta raz o todas as permiss es de acesso concedidas e os outros ndices s o perdidos quando o agrupamento realizado No caso de se estar ac
12. pr processador de SQL embutido para a linguagem C Synopsis ecpg v t I caminho de inclus o oarquivo de sa da arquivo Entradas O ecpg aceita os seguintes argumentos de linha de comando V Exibe informa o da vers o Ativa a auto efetiva o auto commit das transa es Neste modo cada comando automatica mente efetivado a menos que esteja dentro de um bloco de transa o expl cito No modo padr o os comandos s s o efetivados quando o exec sql commit executado I caminho de inclus o Especifica um caminho de inclus o adicional Por padr o os seguintes o diret rio atual usr local include o caminho de inclus o que foi definido na hora da compila o do PostgreSQL por padr o usr loca1 pgsq1 include e usr include oarquivo de sa da Especifica que o ecpg deve escrever toda a sua sa da no arquivo de sa da Se esta op o n o for fornecida a sa da escrita em nome c assumindo se que o arquivo de entrada se chama nome pgc Se o arquivo de entrada n o tiver o sufixo esperado pgc ent o o arquivo de sa da ter pgc apensado ao nome do arquivo de entrada arquivo Os arquivos a serem processados Sa das O ecpg cria um arquivo ou escreve em stdout Valor retornado O ecpg retorna O se terminar a execu o com sucesso ou um valor diferente de O se ocorrer algum erro 19 ecpg Descric o O ecpg um pr processador de SQL embutido para a
13. JOIN proc_juncao HASHES SORT1 op ord esq SORT2 op ord dir Entradas nome O operador a ser definido Veja abaixo os caracteres permitidos nome da fun o A fun o utilizada para implementar este operador tipo esquerdo O tipo do argumento do lado esquerdo do operador se houver Esta op o omitida em um operador un rio esquerdo tipo direito O tipo do argumento do lado direito do operador se houver Esta op o omitida em um operador un rio direito op comutador O comutador deste operador op negador O negador deste operador proc restr A fun o estimadora de seletividade de restri o para este operador proc juncao A fun o estimadora de seletividade de jun o para este operador HASHES Indica que este operador pode suportar uma jun o por hash CREATE OPERATOR op_ord_esqg Se este operador pode suportar uma jung o por mesclagem o operador que ordena o tipo de dado do lado esquerdo deste operador op_ord_dir Se este operador pode suportar uma jung o por mesclagem o operador que ordena o tipo de dado do lado direito deste operador Sa das CREATE Mensagem retornada se o operador for criado com sucesso Descri o O comando CREATE OPERATOR define um novo operador nome O usu rio que define um operador se torna seu dono O operador nome uma seqii ncia de at NAMEDATALEN 1 31 por padr o caracteres da
14. ROLLBACK WORK Fora isso totalmente com pat vel SELECT Name SELECT retorna linhas de uma tabela ou de uma vis o Synopsis SELECT ALL DISTINCT ON express o 11 express o AS nome sa da FROM item de WHERE condi o GROUP BY express o HAVING condi o UNION INTERSECT EXCEPT ALL select ORDER BY express o ASC DESC USING operador 1 FOR UPDATE OF nome da tabela 11 LIMIT contador ALL OFFSET in cio onde item de pode ser ONLY nome da tabela AS ali s lista coluna alias 1 select AS ali s lista_coluna_alias item de NATURAL tipo de jun o item de ON condi o de jun o USING lista coluna jun o Entradas express o O nome de uma coluna da tabela ou uma express o nome sa da Especifica outro nome para uma coluna retornada utilizando a cl usula AS Este nome utilizado principalmente como o t tulo da coluna exibida Tamb m pode ser utilizado para fazer refer ncia ao valor da coluna nas cl usulas ORDER BY e GROUP BY Mas o nome sa da n o pode ser usado nas cl usulas WHERE e HAVING nestes casos deve se escrever novamente a express o item de A refer ncia a uma tabela uma subconsulta ou uma cl usula de jun o Veja abaixo para obter detalhes SEL
15. Sa das SELECT Mensagem retornada se o SELECT for executado com sucesso NOTICE Closing pre existing portal nome do cursor Esta mensagem exibida se o mesmo nome de cursor j estiver declarado no bloco de transa o corrente A defini o anterior descartada ERROR DECLARE CURSOR may only be used in begin end transaction blocks Este erro ocorre quando o cursor n o declarado dentro de um bloco de transa o Descri o O comando DECLARE permite ao usu rio criar cursores os quais podem ser usados para buscar de cada vez um pequeno n mero de linhas de uma consulta grande Os cursores podem retornar dados tanto no formato texto quanto bin rio usando o comando FETCH Os cursores normais retornam os dados no formato texto em ASCII ou outro esquema de codifica o de pendendo de como o servidor PostgreSQL foi compilado Como os dados s o armazenados nativamente no formato bin rio o sistema necessita fazer uma convers o para produzir o formato texto Adicional mente o formato texto geralmente possui um tamanho maior do que o formato bin rio correspondente Quando a informa o retorna na forma de texto o aplicativo cliente pode precisar converter para o formato bin rio para manipul la Os cursores bin rios retornam os dados na representa o bin ria nativa Por exemplo se uma consulta retornar o valor um de uma coluna inteira ser recebida a cadeia de
16. W Descri o O pg dumpall um utilit rio para exportar dumping todos os bancos de dados do PostgreSQL para um arquivo script O arquivo script cont m comandos SQL que podem ser usados como entrada do psql para restaurar os bancos de dados Exporta chamando pg dump para cada banco de dados do PostgreSQL O pg dumpall tamb m exporta objetos globais que s o comuns a todos os bancos de dados O pg dump n o salva estes objetos Atualmente isto inclui informa es sobre os usu rios do banco de dados e os grupos Portanto o pg dumpall uma solu o integrada para realizar c pias de seguran a dos bancos de dados Mas observe a limita o n o pode exportar objetos grandes porque o pg dump n o exporta estes objetos para arquivos texto Se existirem bancos de dados contendo objetos grandes estes devem ser exportados usando um dos modos n o texto do pg dump Como o pg dumpall l as tabelas de todos os bancos de dados muito provavelmente ser necess rio se conectar como um superusu rio para poder gerar uma exporta o completa Tamb m ser necess rio o privil gio de superusu rio para executar o script salvo para poder criar usu rios e grupos e para poder criar os bancos de dados O script SQL escrito na sa da padr o Devem ser usados operadores na linha de comando para redirecion lo para um arquivo Op es O pg dumpall aceita os seguintes argumentos de linha de comando C clean Ge
17. dif cil de ser contornada criando se um procedimento armazenado que execute estes comandos Consulte tamb m CREATE FUNCTION DROP TRIGGER Guia do Programador do PostgreSQL CREATE TYPE Name CREATE TYPE define um novo tipo de dado Synopsis CREATE TYPE nome do tipo INPUT fun o de entrada OUTPUT fun o de sa da INTERNALLENGTH comprimento interno VARIABLE EXTERNALLENGTH comprimento externo VARIABLE DEFAULT padr o ELEME elemento DELIMITER delimitador SEND fun o de envio RECEIVE fun o de recep o PASSEDBYVALUE ALIGNMENT alinhamento STORAGE armazenamento Entradas nome_do_tipo O nome do tipo a ser criado comprimento_interno Um valor literal especificando o comprimento interno do novo tipo comprimento_externo Um valor literal especificando o comprimento externo exibido do novo tipo fun o de entrada O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados da forma externa para a forma interna do tipo fun o de sa da O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados da forma interna numa forma adequada para ser exibida elemento O tipo sendo criado um array especifica o tipo dos element
18. local se a conex o for atrav s de um soquete do dom nio Unix ou ainda local dir namel se o soquete do dom nio Unix n o estiver no local padr o da compila o ae 3 O nome do hospedeiro do servidor de banco de dados truncado ap s o primeiro ponto ou local se a conex o for atrav s de um soquete do dom nio Unix de V O n mero da porta na qual o servidor de banco de dados est na espera ao 5 O nome do usu rio que se est conectado n o o nome do usu rio do sistema operacional local A Sa O nome do banco de dados corrente o 2 gt Como mas a sa da ser til se o banco de dados for o banco de dados padr o o Se o usu rio corrente for um superusu rio do banco de dados ent o HF sen o gt o po cep No prompt 1 normalmente mas se estiver no modo linha nica e se a sess o estiver desconectada do banco de dados o que pode acontecer se o Yconnect falhar No prompt 2 2 2 ap strofo ou aspas dependendo se psql aguarda mais entrada devido ao comando n o ter terminado ainda porque est dentro de um coment rio ou porque est entre ap strofos ou aspas No prompt 3 a seqii ncia n o se transforma em nada sequ ncia substitu da por sd gitos Se d gitos come ar por 0x os caracteres restantes s o interpretados como d gitos hexadecimais e o caractere com o c digo correspondente substitu do Se o primeir
19. o Condi o de notifica o a ser sinalizada Sa das NOTIFY Constata que o comando NOTIFY foi executado Notify events Eventos s o enviados para da sua programa o Descri o O comando NOTIFY envia um os clientes escutando se e como cada aplicativo cliente reage depende evento de notifica o para cada aplicativo cliente que tenha executado anteriormente o comando LISTEN nome da notifica o para a condi o de notifica o especificada no banco de dados corrente A notifica o passada para o cliente por um evento de notifica o inclui o nome da condi o de notifica o e o PID do processo servidor que est notificando Fica por conta do projetista do banco de dados definir os nomes das condi es que ser o utilizadas em um determinado banco de dados e o significado de cada uma Usualmente o nome da condi o de notifica o o mesmo nome de uma tabela do banco de dados e o evento de notifica o essencialmente diz Eu modifiquei a tabela d uma olhada nela e veja o que h de novo Por m este tipo de associa o n o exigida pelos comandos NOTIFY LISTEN Por exemplo o NOTIFY projetista do banco de dados pode usar v rios nomes diferentes de condig o para sinalizar diferentes tipos de mudan a em uma nica tabela O comando NOTIFY fornece uma forma de sinal simples ou mecanismo de IPC comunica o entre pro cessos para um conjunto de processos acessa
20. o de vers o mas se o pg_dump falhar n o diga que n o foi avisado n no quotes Suprime as aspas em torno dos identificadores a menos que seja absolutamente necess rio Pode causar problemas na importa o dos dados exportados se existirem palavras reservadas usadas pelos identificadores Este era o comportamento padr o para o pg_dump antes da vers o 6 4 N quotes Inclui aspas em torno dos identificadores Este o padr o 0 oids Exporta os identificadores de objeto OIDs para todas as tabelas Deve se usar esta op o quando a coluna OID referenciada de alguma maneira por exemplo em uma restri o de chave estrangeira Caso contr rio esta op o n o deve ser usada O no owner N o gera comandos para definir o mesmo dono do objeto do banco de dados original Tipicamente O pg dump gera comandos Yconnect espec fico do psq1 para definir o dono dos elementos do esquema Consulte tamb m as op es R e X use set session authorization Observe que 31 R pg dump a op o O n o impede todas as reconex es ao banco de dados mas somente quelas que s o usadas exclusivamente para acertar o dono Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore no reconnect S Pro be o pg_dump gerar um script que requeira reconex es com o banco de dados quando for re alizada a importa o Usualm
21. ou ser um nico comando de contrabarra Portanto n o podem ser misturados comandos SQL com meta comandos do psql Para que isto seja obtido pode se enviar a cadeia de caracteres para o psql conforme mostrado a seguir echo Ax AM select from foo psql d dbname nome_bd Especifica o nome do banco de dados a se conectar Equivale a especificar o nome_bd como o primeiro argumento n o op o da linha de comando e echo queries Mostra todos os comandos enviados para o servidor Equivale a definir a vari vel ECHO como queries E echo hidden Exibe o comando real gerado pelo id e por outros comandos de contrabarra Pode ser usado caso se deseje incluir uma funcionalidade similar nos pr prios programas Equivale a definir a vari vel ECHO HIDDEN a partir do psq l f file nome do arquivo Usa o arquivo nome do arquivo como origem dos comandos em vez de ler os comandos intera tivamente Ap s o arquivo ser processado o psql termina Sob muitos aspectos equivale ao comando interno Mi Seo nome do arquivo for h fen a entrada padr o lida O uso desta op o sutilmente diferente de escrever psq1 lt nome do arquivo De uma maneira geral as duas fazem o esperado mas o uso de f ativa algumas funcionalidades teis como as mensagens de erro contendo o n mero da linha Ao se usar esta op o tamb m existe uma pequena chance de reduzir a sobrecarga da inicializa o Por outro lado utilizando o r
22. tabela_ascendent y A it WITH OIDS WITHOUT OIDS onde restri o de coluna CONSTRAINT nome da restri o NOT NULL NULL UNIQUE PRIMARY KEY CHECK express o REFERENCES tabela referenciada coluna referenciada MATCH FULL ON DELETE a o ON UPDATE a o 3 DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE e restri o de tabela CONSTRAINT nome da restri o UNIQUE nome da coluna 1 PRIMARY KEY nome da coluna 1 CHECK express o FOREIGN KEY nome da coluna REFERENCES tabela referenciada MATCH FULL MATCH PARTIAL ON DELETE a o ON UPDATE a o DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE Descri o O comando CREATE TABLE cria uma tabela nova inicialmente vazia no banco de dados atual O usu rio que executa o comando torna se o dono da tabela O comando CREATE TABLE tamb m cria automaticamente um tipo de dado que representa o tipo da tupla tipo estrutura correspondente a uma linha da tabela Portanto uma tabela n o pode ter o mesmo nome de um tipo de dado existente Uma tabela n o pode possuir mais de 1600 colunas Na pr tica o limite efetivo menor
23. traduzido diretamente para o atributo border nos outros modos somente os valores O sem borda 1 linhas divis rias internas e 2 moldura da tabela fazem sentido 52 psql expanded ou x Alterna entre os formatos regular e expandido Quando o formato expandido ativado todas as sa das possuem duas colunas ficando o nome do campo esquerda e o valor direita Este modo til quando os dados n o cabem na tela no modo normal horizontal O modo expandido suportado por todos os quatro modos de sa da null O segundo argumento a cadeia de caracteres a ser impressa sempre que o campo for nulo O padr o n o imprimir nada o que pode ser facilmente confundido com por exemplo uma cadeia de caracteres vazia Portanto pode se preferir escrever Apset null nulo fieldsep Especifica o separador de campos a ser utilizado no modo de sa da n o alinhado Desta forma pode se criar por exemplo uma sa da separada por tabula o por v rgula ou por um outro caractere conforme a prefer ncia do programa Para definir o caractere de tabula o como sep arador de campo deve se usar pset fieldsep Nt O separador de campos padr o o a barra vertical ou o s mbolo do pipe footer Alterna a exibi o do rodap padr o x linhas recordsep Especifica o separador de registro linha a ser usado no modo de sa da n o alinhado O padr o o caractere de nova linha tup
24. ERROR Could not initialize database directory Estas mensagens est o relacionadas com a falta de permiss o no diret rio de dados o disco estar cheio ou outro problema no sistema de arquivos O usu rio sob o qual o servidor de banco de dados est processando deve ter permiss o para o local Descri o O comando CREATE DATABASE cria um banco de dados novo no PostgreSQL O criador se torna o dono do novo banco de dados Um local alternativo pode ser especificado com a finalidade de por exemplo armazenar o banco de dados em um disco diferente O caminho deve ter sido preparado anteriormente com o comando initlocation Se o nome do caminho n o possuir uma barra interpretado como sendo o nome de uma vari vel de ambiente a qual deve ser conhecida pelo servidor Desta maneira o administrador do banco de da dos pode exercer controle sobre os locais onde os bancos de dados podem ser criados Uma escolha usual por exemplo PGDATA2 Se o servidor for compilado com ALLOW ABSOLUTE DBPATHS o que n o feito por padr o nomes de caminhos absolutos identificados por uma barra inicial por exemplo usr local pgsal data tamb m s o permitidos Por padr o o novo banco de dados ser criado clonando o banco de dados padr o do sistema templatel Um gabarito diferente pode ser especificado escrevendo se TEMPLATE nome Em particular escrevendo se TEMPLATE template0 pode ser criado um banco de dados b
25. Somente o dono do tipo pode remov lo Notas Eresponsabilidade do usu rio remover os operadores fun es agrega es m todos de acesso subtipos e tabelas que usam o tipo removido Entretanto o tipo de dado array associado que automaticamente criado pelo comando CREATE TYPE removido automaticamente Se um tipo nativo do PostgreSQL for removido o comportamento do servidor torna se imprevis vel Exemplos Para remover o tipo caixa DROP TYPE caixa Compatibilidade DROP TYPE O comando DROP TYPE existe no SQL99 Assim como a maioria dos outros comandos drop o DROP TYPE do SQL99 requer uma cl usula de comportamento da remo o para selecionar entre remover todos os objetos dependentes ou n o remover se existir algum objeto dependente DROP TYPE nome CASCADE R ESTRICT O PostgreSQL atualmente ignora inteiramente as depend ncias Observe que o comando CREATE TYPE entes do SQL99 Consulte tamb m CREATE TYPE e os mecanismos de extens o de tipo do PostgreSQL s o difer DROP USER Name DROP USER remove uma conta de usu rio do banco de dados Synopsis DROP USER nome Entradas nome O nome de um usu rio existente Sa das DROP USER Mensagem retornada se o usu rio for removido com sucesso ERROR DROP USER user nome does not exist Esta mensagem ocorre quando o nome do u
26. a defini o da vis o tamb m mostrada A forma do comando d id ntica mas todos os coment rios associados s colunas da tabela tamb m s o mostrados Note Se Ya for chamado sem nenhum argumento torna se equivalente ao Natvs mostrando uma lista de todas as tabelas vis es e sequ ncias Isto puramente uma medida de conveni n cia ida padr o Lista todas as fun es de agrega o dispon veis juntamente com os tipos de dado com que operam Se padr o uma express o regular for especificado somente as agrega es correspondentes ser o exibidas dd objeto Mostra a descrig o do objeto que pode ser uma express o regular ou de todos os objetos se nen hum argumento for fornecido Objeto compreende agrega es fun es operadores tipos rela es tabelas vis es ndices segii ncias objetos grandes regras e gatilhos Por exemplo gt dd version Object descriptions Name What Description version function PostgreSQL version string 1 row As descri es dos objetos podem ser geradas pelo comando SQL COMMENT ON 48 df psql Note O PostgreSQL armazena a descri o dos objetos na tabela do sistema pg_description padr o Lista as fun es dispon veis juntamente com o tipo de dado de seus argumentos e do valor retor nado Se padr o uma express o regular for especificado somente as fun es correspondentes ser o mostradas
27. caracteres 1 com o cursor padr o enquanto que o cursor bin rio retornaria um valor de 4 bytes igual a control A A Os cursores bin rios devem ser usados com cuidado Aplicativos do usu rio como o psql n o est o atentos a cursores bin rios esperando que os dados cheguem no formato texto A representa o da cadeia de caracteres arquiteturalmente neutra enquanto que a representa o bin ria pode ser diferente entre m quinas com arquiteturas diferentes O PostgreSQL n o soluciona a ordem dos bytes ou outros problemas de representa o para os cursores bin rios Portanto se a m quina cliente e a m quina servidora usam representa es diferentes por exemplo big endian versus little endian provavelmente n o vai ser desejado que os dados retornem no formato bin rio Entretanto os cursores bin rios podem ser um pouco mais eficientes porque existe menos sobrecarga de convers o na transfer n cia de dados do servidor para o cliente DECLARE Tip Se a inten o for mostrar os dados em ASCII buscar os dados em ASCII reduz o esfor o realizado pelo cliente Notas Os cursores s est o dispon veis nas transa es Use os comando BEGIN COMMIT e ROLLBACK para definir um bloco de transa o No SQL92 os cursores somente est o dispon veis nos aplicativos com SQL embutido ESQL O servidor PostgreSQL n o implementa o comando OPEN cursor expl cito o cursor considerado aberto ao ser declarado E
28. conjunto uni o das linhas retornadas pelas consultas envolvidas Os dois SELECT que representam os operandos diretos do UNION devem produzir o mesmo n mero de colunas e as colunas correspondentes devem possuir tipos de dado compat veis O resultado de uma UNION n o cont m nenhuma linha repetida a menos que a op o ALL all seja especificada ALL impede a elimina o das linhas repetidas Quando existem v rios operadores UNION no mesmo comando SELECT estes s o processados da es querda para a direita a menos que outra ordem seja definida pelo uso de par nteses Atualmente FOR UPDATE n o deve ser especificado nem no resultado nem nas entradas de uma UNION A cl usula INTERSECT tabela consulta INTERSECT ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL SELECT OFFSET in cio onde tabela_consulta especifica qualquer express o de seleg o sem as cl usulas ORDER BY FOR UPDATE ou LIMIT INTERSECT semelhante a UNION exceto que retorna somente as linhas presentes nas sa das das duas consultas em vez de todas as linhas presentes nas duas consultas O resultado do INTERSECT n o possui nenhuma linha repetida a menos que a op o ALL seja especifi cada Com ALL uma linha que possui m repeti es em L e n repeti es em R aparece min m n vezes Quando existem v rios operadores INTERSECT no mesmo comando SELECT estes s
29. m possui uma cl usula FROM expl cita SQL92 Cl usula SELECT No padr o SQL92 a palavra chave opcional AS somente informativa podendo ser omitida sem afetar o significado O analisador parser do PostgreSQL requer a presen a desta palavra chave para mudar o nome das colunas da sa da porque a funcionalidade de extensibilidade de tipo ocasiona ambigiiidades no analisador dentro deste contexto Entretanto As opcional nos itens da cl usula FROM A frase DISTINCT ON n o faz parte do SQL92 assim como LIMIT e OFFSET No SQL92 uma cl usula ORDER BY pode utilizar somente os nomes das colunas do resultado ou n meros enquanto uma cl usula GROUP BY pode utilizar somente os nomes das colunas da entrada O PostgreSQL estende cada uma destas cl usulas para permitir a outra escolha tamb m mas utiliza a interpreta o padr o no caso de ambigiiidade O PostgreSQL tamb m permite que as duas cl usulas especifiquem express es arbitr rias Observe que os nomes que aparecem em uma express o s o sempre obtidos a partir dos nomes das colunas da entrada e n o dos nomes das colunas do resultado Cl usulas UNION INTERSECT EXCEPT A sintaxe do SQL92 para UNION INTERSECT EXCEPT permite a adi o da op o CORRESPOND ING BY tabela consulta UNION ALL CORRESPONDING BY nome coluna tabela consulta 12 SELECT A cl usula CORRESPONDING BY n o suportada pelo PostgreSQL 13 SELECT INTO Name
30. n o se pretende pelo menos ainda que seja uma funcionalidade para COPY DATABASE de uso geral recomendado que os bancos de dados utilizados como gabarito sejam tratados como se fossem apenas de leitura Consulte o Guia do Administrador do PostgreSQL para obter mais informa es Utiliza o Para criar um banco de dados novo silva gt create database lusiadas Para criar um banco de dados novo na rea alternativa bd_privado mkdir bd privado initlocation bd privado The location will be initialized with username silva This user will own all the files and must also own the server process Creating directory home silva bd_privado Creating directory home silva bd_privado base initlocation is complete psql silva Welcome to psql the PostgreSQL interactive terminal Type Acopyright for distribution terms h for help with SOL commands NX for help on internal slash commands Xg or terminate with semicolon to execute query Xq to quit silva gt CREATE DATABASE outrolugar WITH LOCATION home silva bd privado CREATE DATABASE CREATE DATABASE Compatibilidade SQL92 N o existe o comando CREATE DATABASE no SQL92 Os bancos de dados s o equivalentes aos cat logos cuja criag o definida pela implementag o CREATE FUNCTION Name CREATE FUNCTION define uma nova fun o Synopsis CREATE OR REPLACE FUNCTION nome RETURNS tipo_ret
31. o 02 08 CLOSE liahona COMMIT WORK fechar a consulta e efetivar o trabalho FETCH Compatibilidade SQL92 Note O uso n o embutido de cursores uma extens o do PostgreSQL A sintaxe e a utilizac o dos cursores est sendo comparada com rela o forma embutida dos cursores definida no SQL92 O SQL92 permite o posicionamento absoluto de cursores para a busca FETCH e permite armazenar os resultados em vari veis explicitadas FETCH ABSOLUTE FROM cursor INTO vari vel ABSOLUTE O cursor deve ser posicionado na linha especificada pelo n mero absoluto Todos os n meros de linhas no PostgreSQL s o n meros relativos portanto esta funcionalidade n o suportada vari vel Vari vel do programa GRANT Name GRANT define privil gios de acesso Synopsis GRANT SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER ON TABLE nome do objeto TO nome do usu rio GROUP nome do grupo PUBLIC Descri o O comando GRANT concede permiss es espec ficas no objeto tabela vis o seqii ncia para um ou mais usu rios ou grupos de usu rio Estas permiss es s o adicionadas s j concedidas caso existam A palavra chave PUBLIC indica que o privil gio deve ser concedido para todos os usu rios inclusive aos que vierem a ser criado posteriormente PUBLIC pode ser considerado como um grupo
32. o comando VACUUM para recuperar o espa o desperdi ado Os arquivos declarados no comando COPY s o lidos ou escritos diretamente pelo servidor e n o pelo aplicativo cliente Portanto devem residir ou serem acess veis pela m quina servidora de banco de dados e n o pela esta o cliente Os arquivos devem ser acess veis e poder ser lidos ou escritos pelo usu rio do PostgreSQL o ID do usu rio sob o qual o servidor processa e n o pelo cliente O copy com nome de arquivo s permitido aos superusu rios do banco de dados porque permite ler e escrever em qualquer arquivo que o servidor possua privil gio de acesso Tip A instru o copy do psql l e escreve arquivos na esta o cliente usando as permiss es do cliente portanto n o restrita aos superusu rios Recomenda se que os nomes dos arquivos usados no comando COPY sejam sempre especificados como um caminho absoluto sendo exigido pelo servidor no caso do COPY TO mas para COPY FROM existe a op o de ler um arquivo especificado pelo caminho relativo O caminho interpretado como sendo relativo ao diret rio de trabalho do servidor algum lugar abaixo de SPGDATA e n o relativo ao diret rio de trabalho do cliente Formatos dos Arquivos Formato Texto Quando o comando COPY utilizado sem a op o BINARY o arquivo lido ou escrito um arquivo de texto com uma linha para cada linha da tabela As colunas atributos s o separadas na linha pelo caractere de
33. o das tuplas atrav s de blocos para tentar compactar a tabela para o menor n mero de blocos de disco Esta forma muito mais lenta e requer o bloqueio exclusivo de cada tabela para process la O FREEZE uma op o com finalidade especial que faz as tuplas serem marcadas como congeladas logo que seja poss vel em vez de aguardar at que sejam bastante velhas Se for realizado quando n o existir nenhuma outra transa o sendo executada no mesmo banco de dados ent o garantido que todas as tuplas do banco de dados sejam congeladas e n o estar o sujeitas aos problemas do recome o do ID de transa o n o importa quanto tempo o banco de dados for deixado sem executar o VACUUM O FREEZE n o recomendado para uso rotineiro Sua nica utiliza o esperada em conjunto com a prepara o dos bancos de dados de gabarito dos usu rios ou outros bancos de dados que s o unicamente para leitura e n o receber o as opera es da rotina de manuten o VACUUM Consulte o Guia do Administrador para obter detalhes Notas Recomenda se que os bancos de dados de produ o ativos sejam VACUUM nizados freqiientemente pelo menos toda noite para que sejam removidas as linhas expiradas Ap s incluir ou excluir um grande n mero de linhas pode ser uma boa id ia executar o comando VACUUM ANALYZE para a tabela afetada Esta opera o vai atualizar os cat logos do sistema com os resultados de todas
34. o do PostgreSQL Embora as linguagens de programa o do servidor possam ser removidas diretamente usando v rios co mandos SQL recomenda se usar o droplang porque este executa v rias verifica es e muito mais f cil de usar Consulte o comando DROP LANGUAGE para obter mais informa es Notas Use o createlang para adicionar uma linguagem Utiliza o Para remover a linguagem pltcl droplang pltcl nome do bd 16 dropuser Name dropuser remove uma conta de usu rio do PostgreSQL Synopsis dropuser op es home do usu rio Entradas h q i host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es echo Exibe os comandos que o dropuser gera e envia para o servidor quiet N o exibe a resposta jnteractive Solicita a confirma o antes de remover o usu rio nome do usu rio Especifica o nome do usu rio do PostgreSQL a ser removido O nome deve existir na instala o PostgreSQL Ser solicitado o nome caso este n o seja fornecido na linha de comando As op es h p e e s o passadas literalmente para o psql As op es u e w do psql tamb m est o dispon veis mas podem causar confus o ne
35. o est obsoleta sendo conceitualmente errada Solicitar um nome de usu rio n o por padr o e solicitar uma senha porque o servidor requer s o duas coisas realmente diferentes Encoraja se o uso das op es U e w em seu lugar U username nome_do_usu rio Conecta se as banco de dados como o usu rio nome do usu rio em vez do padr o E necess rio ter permiss o para faz lo claro v variable set atribui o Realiza a atribui o de vari vel como o comando interno set Observe que necess rio separar o nome e o valor se houver por um sinal de igual na linha de comando Para remover a defini o de uma vari vel omite se sinal de igual Para definir uma vari vel sem um valor usa se o sinal de igual mas omite se o valor Estas atribui es s o realizadas durante um est gio bem no princ pio da inicializa o portanto as vari veis reservadas para finalidades internas devem ser sobrescritas mais tarde V version Mostra a vers o do psa W password Requer que o psql solicite a senha antes de se conectar ao banco de dados Esta continuar definida por toda a sess o mesmo que a conex o ao banco de dados seja mudada com o meta comando connect Na vers o corrente o psql solicita automaticamente a senha sempre que o servidor requerer autenti ca o por senha Uma vez que atualmente isto se baseia em um hack o reconhecimento autom tico pode falhar misteriosamente e por isso existe est
36. o houver outro meio para fazer o ajuste da linha mas ser mantido na tabela principal com prefer ncia maior que os itens xtended e external CREATE TYPE Tipos Array Sempre que um tipo de dado definido pelo usu rio criado o PostgreSQL automaticamente cria um tipo array associado cujo nome consiste do nome do tipo base prefixado por um caractere sublinhado O analisador compreende esta conven o de nome e traduz as requisi es para colunas do tipo foo em requisi es do tipo foo O tipo array criado implicitamente de comprimento vari vel e usa as fun es de entrada e sa da nativas array intearray out Pode se perguntar com raz o porque existe a op o ELEMENT se o sistema produz o tipo array cor reto automaticamente O nico caso em que til utilizar ELEMENT quando se constr i um tipo de comprimento fixo que internamente um array de N componentes id nticos e deseja se que estes N componentes sejam acessados diretamente por ndices em adi o a qualquer outra opera o que se planeje fornecer para este tipo como um todo Por exemplo o tipo name permite que seus chars constituintes se jam acessados desta forma Um tipo point 2 D pode permitir que seus dois componentes sejam acessados como point 0 e point 1 Observe que esta facilidade somente funciona para tipos de comprimento fixo cuja forma interna seja exatamente uma seqii ncia de N campos de tamanho fixo id nticos Um tipo
37. para verificar se foi executado com sucesso Nas vers es anteriores ao PostgreSQL 7 1 antes do comando pg config existir n o existia um m todo equivalente para encontrar as informa es de configura o Hist rico O utilit rio pg config apareceu pela primeira vez no PostgreSQL 7 1 Consulte tamb m Guia do Programador do PostgreSQL 28 pg_dump Name pg_dump extrai um banco de dados do PostgreSQL para um arquivo script ou de exporta o Synopsis pg dump a s b c C d D f arquivo F formato n N 0 0 ER SS t tabela v x X palavra chave Z 0 9 h hospedeiro p porta U nome do usu rio W nome bd Descri o O pg dump um utilit rio para salvar um banco de dados do PostgreSQL em um arquivo script ou de exporta o Os arquivos script s o no formato texto puro e cont m os comandos SQL necess rios para reconstruir o banco de dados no estado em que este se encontrava no momento que foi salvo Estes scripts podem ser usados at para reconstruir o banco de dados em outras m quinas com outras arquiteturas e com algumas modifica es at em outros SGBDR Al m do script existem outros formatos de exporta o feitos para serem usados em conjunto como pg restore para reconstruir o banco de dados que permitem ao pg restore selecionar o que deve ser restaurado ou mesmo reordenar a restaura o dos itens Estes formatos de exporta o tamb m s o
38. verifica o check e de unicidade s o sempre inicialmente imediata n o posterg vel Compatibilidade SQL92 SQL99 ET CONSTRAINT definida no SQL92 e no SQL99 WU SET SESSION AUTHORIZATION Name SET SESSION AUTHORIZATION define o identificador do usu rio da sess o e o identificador do usu rio corrente da sess o corrente Synopsis uN ET SESSION AUTHORIZATION nome do usu rio Descri o Este comando define o identificador do usu rio da sess o e o identificador do usu rio corrente do contexto da sess o SQL corrente como sendo nome do usu rio O identificador do usu rio da sess o inicialmente definido como sendo o possivelmente autenticado nome do usu rio fornecido pelo cliente O identificador do usu rio corrente normalmente igual ao iden tificador do usu rio da sess o mas pode mudar temporariamente no contexto das fun es setuid e de outros mecanismos semelhantes O identificador do usu rio corrente relevante para a verifica o das permiss es A execu o deste comando permitida apenas se o usu rio inicial da sess o o usu rio autenticado tiver o privil gio de superusu rio Esta permiss o mantida durante o per odo da conex o por exemplo poss vel se tornar temporariamente um usu rio sem privil gios e em seguida voltar a ser um superusu rio Exemplos SELECT SESSION USER CURRENT USER current user session user S a 4
39. 02 28 M 401 War and Peace 104 1967 02 12 Suspense 05207 T_601 Yojimbo 106 1961 06 16 Suspense 01 50 DA101 Das Boot 110 1981 11 11 Suspense 02 29 Compatibilidade SQL92 O SQL92 define uma sintaxe distinta para o comando UPDATE na posi o do cursor UPDATI tabela Sl WHERE CURRE ET coluna express o T OF cursor onde cursor identifica um cursor aberto VACUUM Name VACUUM limpa e opcionalmente analisa o banco de dados Synopsis VACUUM FULL FREEZE VACUUM FULL FREEZE ERBOSE tabela ERBOSE ANALYZE tabela coluna Entradas FULL Seleciona uma limpeza completa que pode recuperar mais espa o mas muito mais demorada e bloqueia a tabela em modo exclusivo FREEZE Seleciona um congelamento agressivo das tuplas VERBOSE Produz um relat rio detalhado da atividade de limpeza de cada tabela ANALYZE Atualiza as estat sticas utilizadas pelo otimizador para determinar o modo mais eficiente de executar uma consulta tabela O nome da tabela espec fica a ser limpa Por padr o todas as tabelas do banco de dados corrente coluna O nome da coluna espec fica a ser analisada Por padr o todas as colunas Sa das VACUU O comando terminou NOTICE Relation tabela O cabe alho do relat rio da tabela VACUUM NOTICE Pages 98 Changed 25 Reapped 74 Empty 0 Ne
40. 100 gt 100 AND nome lt gt Definir uma restri o de chave prim ria para a tabela filmes Restri es de chave prim ria da tabela podem ser definidas usando uma ou mais colunas da tabela CREATE TABLE filmes cod CHAR 5 titulo VARCHAR 40 did DECIMAL 3 data prod DATE tipo VARCHAR 10 duracao INTERVAL HOUR TO MINUTE CONSTRAINT pk filmes PRIMARY K EY cod titulo CREATE TABLE Definir a restrig o de chave prim ria para a tabela distribuidores Os dois exemplos abaixo s o equiv alentes o primeiro utiliza a sintaxe de restri o de tabela e o segundo utiliza a nota o de restri o de coluna CREATE TABLE distribuidores did ECIMAL 3 nome CHAR VARYING 40 PRIMARY KEY did U 5 CREATE TABLE distribuidores did DECIMAL 3 PRIMARY KEY nome VARCHAR 40 O comando abaixo especifica uma constante literal como valor padr o da coluna nome faz com que o valor padr o da coluna did seja gerado como o pr ximo valor de um objeto de seqii ncia faz com que o valor padr o da coluna data_ins seja a data e hora em que a linha inserida CREATE TABLE distribuidores nome VARCHAR 40 DEFAULT luso filmes did INTEGER DEFAULT NEXTVAL seg distribuidores data ins TIMESTAMP DEFAULT CURRENT TIMESTAMP Definir duas restri es de coluna NOT NULL na tabela
41. ALL NEXT PRIOR IN FROM cur Entradas dire o Um seletor definindo a dire o da busca Pode ser um dos seguintes FORWARD busca a s pr xima s linha s Este o padr o quando o seletor for omitido BACKWARD busca a s linha s anterior es RELATIVE Somente por compatibilidade com o SQL92 contador O contador determina quantas linhas ser o buscadas Pode ser um dos seguintes Um n mero inteiro com sinal que especifica quantas linhas ser o buscadas Observe que um n mero negativo equivalente a mudar o sentido de FORWARD e de BACKWARD ALL Busca todas as linhas remanescentes NEXT Equivalente a especificar um contador igual a 1 PRIOR Equivalente a especificar um contador igual a 1 FETCH cursor O nome de um cursor aberto Sa das O comando FETCH retorna o resultado da consulta definida pelo cursor especificado As seguintes men sagens retornam quando a consulta falha NOTICE PerformPortalFetch portal cursor not found Se o cursor n o tiver sido previamente declarado O cursor deve ser declarado dentro do bloco da transa o OTICE Hj ETCH ABSOLUTE not supported using RELATIVE O PostgreSQL n o suporta o posicionamento absoluto do cursor ERROR FETCH RELATIVE at current position is not supported O SQL92 permite buscar repetitivamente o cursor em sua posi o corrente usando a sintax
42. Bros Warren Beatty Westward Woody Allen Compatibilidade Extens0es O PostgreSQL permite que seja omitida a cl usula FROM da consulta Esta funcionalidade da linguagem de consulta PostQuel original foi mantida sendo muita utilizada para calcular os resultados de express es com constantes SELECT 2 2 column Outros SGBDRs n o podem fazer isto a n o ser que seja introduzida uma tabela especial com uma nica linha para se efetuar a sele o a partir desta tabela Uma utiliza o menos bvia desta caracter stica para abreviar consultas normais a uma ou mais tabelas SELECT distribuidores WHERE distribuidores nome Westward did nome 108 Westward 11 SELECT Isso funciona porque um FROM impl cito adicionado para cada tabela que referenciada na consulta mas n o mencionada no FROM Ao mesmo tempo em que uma forma conveniente de abreviar f cil de ser usado de forma errada Por exemplo a consulta SELECT distribuidores FROM distribuidores d deve ser um engano provavelmente o que se deseja SELECT d FROM distribuidores d em vez da jun o sem restri es SELECT distribuidores FROM distribuidores d distribuidores distribuidores que obtido na realidade Para ajudar a detectar este tipo de engano o PostgreSQL 7 1 e posteriores advertem quando um FROM impl cito usado em uma consulta que tamb
43. D column inserts attribute inserts Exporta os dados como comandos INSERT com nomes expl citos das colunas INSERT INTO tabela coluna VALUES tornando a importa o muito lenta mas necess rio se for desejado mudar a ordem das colunas f arquivo file arquivo Envia a sa da para o arquivo especificado Se for omitido a sa da padr o usada 30 pg_dump F formato format formato Seleciona o formato da sa da O formato pode ser um dos seguintes P Exporta um script SQL para um arquivo texto puro padr o t Exporta um arquivo tar adequado para servir de entrada para o pg_restore Usando este for mato de exporta o pode se reordenar e ou excluir elementos do esquema durante a restaura o do banco de dados Tamb m poss vel limitar quais dados s o importados durante a restaura o c Exporta um arquivo personalizado apropriado para servir de entrada para o pg_restore Este o formato mais flex vel porque permite a reordena o da importa o dos dados assim como dos elementos do esquema Este formato tamb m comprimido por padr o i ignore version Ignora a diferen a de vers o entre o pg_dump e o servidor de banco de dados Como o pg_dump trabalha muito ligado aos cat logos do sistema toda vers o do pg_dump feita para ser usada so mente com a vers o correspondente do servidor de banco de dados Use esta op o se for necess rio desconsiderar a verifica
44. INCREMENT incremento MINVALUE valor min AXVALUE valor max START in cio CACHE cache CYCLE HH 3 Entradas TEMPORARY ou TEMP Se for especificado o objeto de seqii ncia criado somente para esta sess o e automaticamente eliminado ao t rmino da sess o Uma segii ncia permanente com o mesmo nome caso exista n o ser vis vel nesta sess o enquanto a segii ncia tempor ria existir nome seg O nome da seqii ncia a ser criada incremento A cl usula INCREMENT incremento opcional Um valor positivo cria uma segii ncia ascendente enquanto um valor negativo cria uma seqii ncia descendente O valor padr o um 1 valor min A cl usula opcional MINVALUE valor min determina o valor m nimo que a seqii ncia pode gerar Por padr o 1 e 2 63 1 para segii ncias ascendentes e descendentes respectivamente valor max A cl usula opcional MAXVALUE valor max determina o valor m ximo para a segii ncia Por padr o 2 63 1 e 1 para segii ncias ascendentes e descendentes respectivamente in cio A cl usula opcional START in cio permite a seqii ncia iniciar com qualquer valor Por padr o o valor inicial igual a valor min para sequ ncias ascendentes e igual a valor max para sequ ncias descendentes cache A op o CACHE cache permite que os n meros da segii ncia sejam pr viamente alocados e ar mazenados em mem ria para a
45. Name INSERT cria novas linhas na tabela Synopsis INSERT INTO tabela DEFAULT VALUES coluna by VALUES 19 express o ECT consulta Entradas tabela O nome de uma tabela existente coluna O nome de uma coluna da tabela DEFAULT VALUES Todas as colunas s o preenchidas com nulo ou pelos valores especificados quando a tabela criada usando a cl usula DEFAULT express o Uma express o ou valor v lido a ser atribu do coluna consulta Uma consulta v lida Consulte o comando SELECT para obter uma descri o mais detalhada dos argumentos v lidos Sa das INSERT oid 1 Mensagem retornada se somente uma linha for inclu da O identificador do objeto oid o OID num rico da linha inclu da INSERT 0 Mensagem retornada se mais de uma linha for inclu da O o n mero de linhas inclu das INSERT Descric o O comando INSERT permite a inclus o de novas linhas na tabela Pode ser inclu da uma linha de cada vez Ou v rias linhas como o resultado de uma consulta As colunas da lista de inserg o podem estar em qualquer ordem As colunas que n o aparecem na lista de inser o s o inclu das utilizando o valor padr o seja o valor DEFAULT declarado ou nulo O PostgreSQL rejeita a nova coluna se um valor nulo for inclu do em uma coluna declarada como NOT NULL Se a express o para cada coluna n o for do tipo de dado
46. S e pedro pedro SET SESSION AUTHORIZATION paulo SELECT SESSION_USER CURRENT_USER current_user session_user a A paulo paulo Compatibilidade SQL99 O SQL99 permite que algumas outras express es apare am no lugar de nome do usu rio as quais n o s o importantes na pr tica O PostgreSQL permite a sintaxe do identificador nome do usu rio SET SESSION AUTHORIZATION que o SQL n o permite O SQL n o permite a execu o deste comando durante uma transa o O Post greSQL n o faz esta restri o porque n o h motivo para faz la O padr o deixa os privil gios necess rios para executar este comando por conta da implementa o SET TRANSACTION Name Synopsis SET TRANSACTION define as caracter sticas da transa o corrente SET TRANSACTION ISOLATION LEVEL READ COMMITTED SERIALIZABLE SET SESSION CHARACTERISTICS AS TRANSACTION ISOLA TION LEVEL READ COMMITTED SERIALIZABLE Descric o Este comando define o n vel de isolamento da transa o O comando sS ter sticas para a transa o SQL corrente n o possuindo qualquer efeito ET TRANSACTION define as carac sobre nenhuma transa o seguinte Este comando n o pode ser utilizado ap s a primeira consulta ou instru o que modifique os dados SELECT INSERT DELETE UPDATE FETCH COPY da transa o tiver
47. acessado O ndice uma funcionalidade dependente da implementa o e portanto n o existe comando espec fico para ndice ou a sua defini o na linguagem SQL92 DROP LANGUAGE Name DROP LANGUAGE remove uma linguagem procedural definida pelo usu rio Synopsis DROP PROCEDURAL LANGUAGE nome Entradas nome O nome de uma linguagem procedural existente Para manter a compatibilidade com as vers es anteriores o nome pode estar entre ap strofos Sa das DROP Mensagem retornada se a linguagem for removida com sucesso ERROR Language nome doesn t exist Esta mensagem ocorre quando a linguagem chamada nome n o encontrada no banco de dados Descri o O comando DROP PROCEDURAL LANGUAGE remove a defini o da linguagem procedural registrada an teriormente chamada nome Notas T O comando DROP PROCEDURAL LANGUAGE uma extens o do PostgreSQL linguagem Consulte o comando CREATE LANGUAGE para obter informa es sobre como criar linguagens proce durais Nao verificado se existem fun es ou procedimentos de gatilhos registrados nesta linguagem Para habilit los novamente sem ter que remover e recriar todas as fun es o atributo prolang do pg proc das DROP LANGUAGE fun es deve ser ajustado para o novo ID do objeto da entrada da pg language recriada para a linguagem procedural Utiliza o Remover a linguagem PL Sample DROP LAN
48. as mudan as recentes VACUUM permitindo ao otimizador de consultas do PostgreSQL fazer melhores escolhas ao planejar as consultas dos usu rios A op o FULL n o recomendada para uso rotineiro mas pode ser til em casos especiais Um exemplo ap s ter sido removida a maioria das linhas da tabela e deseja se que a tabela seja fisicamente encolhida para ocupar menos espago em disco O comando VACUUM FULL geralmente encolhe mais a tabela do que o comando VACUUM simples Keep 0 UnUsed 0 Utiliza o Abaixo est mostrado um exemplo da execu o do comando VACUUM em uma tabela do banco de dados regression regression gt VACUUM VERBOSE ANALYZE onek OTICE Relation onek OTICE Index onek uniquel Pages 14 Tuples 1000 Deleted 3000 CPU 0 00s 0 11u sec elapsed 0 12 sec OTICE Index onek unique2 Pages 16 Tuples 1000 Deleted 3000 CPU 0 00s 0 10u sec elapsed 0 10 sec OTICE Index onek hundred Pages 13 Tuples 1000 Deleted 3000 CPU 0 00s 0 10u sec elapsed 0 10 sec OTICE Index onek stringul Pages 31 Tuples 1000 Deleted 3000 CPU 0 01s 0 0 u sec elapsed 0 10 sec OTICE Removed 3000 tuples in 70 pages CPU 0 02s 0 04u sec elapsed 0 07 sec OTICE Pages 94 Changed 0 Empty 0 Tup 1000 Vac 3000 Total CPU 0 05s 0 45u sec elapsed 0 59 sec OTICE Analyzing onek VACUU Compatibilidade SQL92 N o existe
49. bit n o esperado neste intervalo Atualmente somente um bit sinalizador est definido os outros devem ser zero Bit 16 Se for igual a 1 os OIDs est o inclu dos no arquivo O caso contr rio Comprimento da rea de extens o do cabe alho Valor int32 do comprimento em bytes do restante do cabe alho n o se incluindo Na vers o inicial ser zero com a primeira tupla vindo a seguir Mudan as futuras no formato podem permitir a pre sen a de dados adicionais no cabe alho O leitor deve simplesmente desprezar qualquer dado da rea de extens o do cabe alho que n o souber o que fazer com a mesma A rea de extens o do cabe alho imaginada como contendo uma segii ncia de blocos auto identificantes O campo de sinalizadores n o tem por finalidade informar os leitores o que existe na rea de extens o O projeto espec fico do conte do da rea de extens o do cabe alho foi deixado para uma vers o futura Este projeto permite tanto adi es de cabe alho precedente compat veis adicionar blocos de extens o de cabe alho ou sinalizar com bits de baixa ordem e mudan as n o precedente compat veis usar bits de alta ordem para sinalizar estas mudan as e adicionar dados de apoio para a rea de extens o se for necess rio Tuplas Cada tupla come a com um contador int16 do n mero de campos na tupla atualmente todas as tuplas da tabela possuem o mesmo contador mas isto pode n o ser verdade para sempre Ent o
50. coluna que tamb m herdada da mesma forma o tipo de dado deve ser o mesmo das colunas herdadas e a defini o das colunas ser mesclada em uma nica coluna Entretanto declara es de colunas novas e herdadas com o mesmo nome n o precisam especificar restri es id nticas todas as restri es fornecidas em qualquer uma das declara es s o mescladas sendo todas aplicadas nova tabela Se a nova tabela especificar explicitamente um valor padr o para a coluna este valor padr o substitui CREATE TABLE qualquer valor padr o das declara es herdadas Fora isso toda tabela ascendente que especificar um valor padr o para a coluna deve especificar o mesmo valor ou um erro ser gerado WITH OIDS ou WITHOUT OIDS Esta cl usula opcional especifica se as linhas da nova tabela devem possuir OIDs identificadores do objeto O padr o possuir OIDs Se a nova tabela herdar de qualquer tabela que possua OIDs ent o a cl usula WITH OIDS for ada mesmo que no comando esteja especificado WITHOUT OIDS A especifica o de WITHOUT OIDS permite ao usu rio suprimir a gera o dos OIDs para as linhas da tabela Este procedimento pode ser interessante em tabelas grandes porque reduz o consumo de OIDs e portanto adia o recome o deste contador de 32 bits Quando o contador recome a n o mais poss vel assumir a sua unicidade o que reduz muito a sua utilidade CONSTRAINT nome da restri o Um nome opcional para a rest
51. consiste em uma cabe alho zero ou mais tuplas e um rodap Cabe alho do Arquivo O cabe alho do arquivo consiste de 24 bytes para campos fixos seguidos por uma rea de extens o do COPY cabe alho de tamanho vari vel Os campos fixos s o Assinatura A segii ncia de 12 bytes PGBCOPY n 377 r n 0 observe que o nulo uma parte requerida da assinatura A assinatura foi projetada para permitir a f cil identifica o de arquivos corrompidos por uma transfer ncia n o apropriada Esta assinatura modificada por filtros de tradu o de nova linha nulos suprimidos bits altos suprimidos ou mudan as de paridade Campo de disposi o de inteiro Constante int32 0x01020304 na ordem dos bytes de origem Se uma ordem errada dos bytes for detectada aqui o leitor poder se envolver em uma mudan a na ordem dos bytes dos campos poste riores Campo de sinalizadores M scara de bits int32 usada para caracterizar aspectos importantes do formato do arquivo Os bits s o numerados de O LSB at 31 MSB observe que este campo armazenado na ordem dos bytes da plataforma de origem assim como todos os campos inteiro seguintes Os bits 16 31 s o reservados para caracterizar quest es cr ticas do formato do arquivo o leitor deve abortar se for encontrado um bit n o esperado neste intervalo Os bits 0 15 s o reservados para sinalizar quest es de formato precedente compat veis o leitor deve simplesmente ignorar qualquer
52. correto ser tentada uma convers o autom tica de tipo necess rio possuir o privil gio INSERT na tabela para inserir linhas assim como o privil gio SELECT nas tabelas especificadas na cl usula WHERE Utiliza o Inserir uma nica linha na tabela filmes INSERT INTO filmes VALUES UA5O2 Bananas 105 1971 07 13 Com dia INTERVAL 82 minute No segundo exemplo mostrado abaixo a ltima coluna dura o foi omitida e portanto vai receber o valor padr o NULL INSERT INTO filmes codigo titulo did data prod tipo VALUES T 601 Yojimbo 106 DATE 1961 06 16 Drama Inserir uma nica linha na tabela distribuidores observe que somente a coluna nome est especificada portanto vai ser atribu do o valor padr o para a coluna did que foi omitida INSERT INTO distribuidores nome VALUES Entrega R pida Inserir v rias linhas na tabela filmes a partir da tabela tmp INSERT INTO filmes SELECT FROM tmp Inclus o em arrays Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es sobre arrays Criar um tabuleiro vazio de 3x3 posi es para o Jogo da Velha todos 3 comandos criam o mesmo atributo do tabuleiro INSERT VA INSERT VA INSERT VA INSERT TO tictactoe game board 1 3 1 3 AO A A A A A AN O E TO tictactoe game board 3 3 ES 2 13 GHGHCH TO tictactoe game board
53. dado compartilhadas Um programador de sistemas com conhecimento adequado poder ent o usar um depurador para examinar a mem ria compartil hada e o estado do sem foro S O postmaster ir parar todos os outros processos servidores enviando o sinal SIGSTOP mas n o ir faz los terminar permitindo aos programadores de sistema coletar os core dumps de todos os processos servidores manualmente Sa das semget No space left on device Se esta mensagem for recebida deve se executar o comando ipcclean e em seguida tentar iniciar o postmaster novamente Se ainda assim n o funcionar provavelmente ser necess rio configurar 9 postmaster o n cleo kernel para a mem ria compartilhada e os sem foros conforme descrito nas notas de instalac o Se forem executadas v rias inst ncias do postmaster em um nico hospedeiro ou se o n cleo tiver mem ria compartilhada e ou limites de sem foro particularmente pequenos provavel mente ser necess rio reconfigurar o n cleo para aumentar os par metros de mem ria compartilhada ou de sem foros Tip Pode se conseguir adiar a reconfigura o do n cleo diminuindo se B para reduzir o con sumo de mem ria compartilhada do PostgreSQL e ou reduzindo se N para reduzir o consumo de sem foros StreamServerPort cannot bind to port Se esta mensagem for vista deve se ter certeza de que n o existe nenhum outro processo postmaster executando no mesmo computador usando o mesm
54. de comprimento vari vel para permitir ndices deve possuir a representa o interna generalizada usada por array in e array out Por raz es hist ricas ou seja claramente errado mas muito tarde para mudar os ndices de arrays de comprimento fixo come am por zero enquanto ndices de arrays de comprimento vari vel come am por um Notas ee 9 Os nomes dos tipos definidos pelo usu rio n o podem come ar pelo caractere sublinhado _ e po dem ter o comprimento de apenas 30 caracteres ou de uma maneira geral NAMEDATALEN 2 em vez dos NAMEDATALEN 1 caracteres permitidos para os outros nomes Os nomes de tipo come ados por sublin hado s o reservados para os nomes dos tipos array criados internamente Exemplos Este exemplo cria o tipo de dado caixa e em seguida usa o tipo na defini o de uma tabela CREATE TYPE caixa INTERNALLENGTH 16 INPUT meu procedimento 1 OUTPUT meu procedimento 2 CREATE TABLE thbl caixa id INT4 descricao caixa Se a estrutura interna de caixa fosse um array contendo quatro float 4 poder amos escrever CREATE TYPE caixa INTERNALLENGTH 16 INPUT meu procedimento 1 OUTPUT meu procedimento 2 ELEMENT float4 o que permitiria o valor de um componente da caixa ser acessado atrav s do ndice Fora isso o tipo se comporta da mesma maneira qu
55. de um analisador SQL Quando dispon veis o psql constru do para usar automaticamente estas funcionalidades Se por algum motivo n o se gostar da completa o por tabula o pode se desativ la informando isto no arquivo chamado input rc no diret rio home Sif psql set disable completion on Sendif Esta n o uma funcionalidade do psql mas sim do readline Leia a sua documenta o para obter mais detalhes Se a biblioteca do readline estiver instalada mas o psql parecer n o us la deve se ter certeza que o script configure do PostgreSQL pode encontr la O script configure precisa encontrar a biblioteca libreadline a ou uma biblioteca compartilhada equivalente e os arquivos de cabe alho readline h e history h ou readline readline he readline history h nos diret rios apropriados Se os arquivos de biblioteca e de cabe alhos estiverem instalados em um lugar obscuro este local deve ser informado ao configure como por exemplo configur with includes opt gnu includ with libs opt gnu lib Em seguida necess ro recompilar o psql n o necessariamente toda a rvore do c digo A biblioteca GNU readline pode ser obtida do projeto GNU no servidor de FTP ftp ftp gnu org Exemplos Note Esta se o somente mostra uns poucos exemplos espec ficos para o psql Se for desejado aprender o SQL ou se tornar familiar com o PostgreSQL aconselhada a leitura do tutorial que est inclu do na distrib
56. distribuidores sendo que uma delas recebe um nome explicito CREATE TABLE distribuidores did DECIMAL 3 CONSTRAINT nao nulo NOT NULL nome VARCHAR 40 NOT NULL Definir uma restri o de unicidade para a coluna nome CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 UNIQU El 5 O comando acima equivalente ao mostrado abaixo especificado atrav s de uma restri ao de tabela CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 UNIQUE nome CREATE TABLE Compatibilidade O comando CREATE TABLE est em conformidade com o SQL92 Intermediate e com um subconjunto do SQL99 com excess es listadas abaixo e nas descri es acima Tabelas tempor rias Al m da tabela tempor ria local o SQL92 tamb m define a declara o CREATE GLOBAL TEMPORARY TABLE Tabelas tempor rias globais tamb m s o vis veis por outras sess es Para as tabelas tempor rias existe uma cl usula opcional ON COMMIT CREATE GLOBAL LOCAL TEMPORARY TABLE nome da tabela ON COMMIT DELETI A cl usula ON COMMIT especifica se a tabela tempor ria deve ou n o ser esvaziada quando o comando COMMIT executado Se a cl usula ON COMMIT for omitida o SQL92 especifica como padr o ON COMMIT DELETE ROWS Entretanto o comportamento do PostgreSQL sempre ON COMMIT PR
57. dos dados da entrada Normalmente esta uma fun o com dois argumentos o primeiro sendo do tipo tipo dado estado e o segundo do tipo tipo dado entrada Outra possibilidade para uma fun o de agrega o que n o examina seus valores de entrada a fun o possuir apenas um argumento do tipo tipo dado estado Em qualquer um dos casos a fun o deve retornar um valor do tipo tipo dado estado Esta fun o recebe o valor atual do estado e o item atual de dado da entrada e retorna o valor do pr ximo estado tipo dado estado O tipo de dado do valor do estado da agrega o func final O nome da fun o final chamada para calcular o resultado da agrega o ap s todos os dados da entrada terem sido percorridos A fun o deve possuir um nico argumento do tipo tipo dado estado O tipo de dado do valor da agrega o definido pelo tipo do valor retornado por esta fun o Se func final n o for especificado ent o o valor do estado final utilizado como sendo o resultado da agrega o e o tipo da sa da fica sendo o tipo dado estado cond inicial A atribui o inicial para o valor do estado Deve ser uma constante literal na forma aceita pelo tipo de dado tipo dado estado Se n o for especificado o valor do estado come a com NULL CREATE AGGREGATE Sa das CREATE Mensagem retornada se o comando for executado com sucesso Descri o O comando CREATE AGGREGATE permite ao usu rio ou ao prog
58. e roteia os dados entre o servidor e o sistema de arquivos local A sintaxe do comando semelhante do comando SQL copy Consulte sua descri o para obter detalhes Observe que por causa disto regras especiais de an lise se aplicam ao comando copy Em particular as regras de substitui o de vari vel e de escapes de contrabarra n o se aplicam 47 psql Tip Este modo de opera o n o t o eficiente quanto o comando SQL copy porque todos os dados passam atrav s da conex o IP cliente servidor ou pelo soquete Para uma grande quantidade de dados o outro modo pode ser prefer vel Note Observe a diferen a de interpreta o da stdin e da stdout entre as c pias feitas no cliente e no servidor na c pia no cliente estes se referem sempre entrada e a sa da do psa Na c pia pelo servidor a stdin vem do mesmo lugar que o comando copy veio por exemplo um script executado com a op o f e a stdout se refere sa da do comando veja o meta comando o abaixo Xcopyright Mostra os termos da distribuig o e dos direitos autorais do PostgreSQL Xd rela o Mostra todas as colunas da rela o que pode ser uma tabela vis o ndice ou segii ncia seus tipos e os atributos especiais como NOT NULL ou valor padr o se houver Se a rela o for de fato uma tabela todos os ndices definidos chaves prim rias restri es de unicidade e de verifica o tamb m s o listadas Se a rela o for uma vis o
59. e v o ser um pouco diferentes cada vez que o comando ANALYZE for executado mesmo que o conte do da tabela n o se altere podendo ocasionar pequenas mudan as no custo estimado pelo otimizador mostrado no comando EXPLAIN As estat sticas coletadas geralmente incluem a relag o dos valores com maior incid ncia de cada coluna e um histograma mostrando a distribuig o aproximada dos dados de cada coluna Um ou ambos po dem ser omitidos se o comando ANALYZE consider los irrelevantes por exemplo em uma coluna com chave nica n o existem valores repetidos ou se o tipo de dado da coluna n o suportar os operadores apropriados Existem mais informac es sobre as estat sticas no Guia do Usu rio A extens o da an lise pode ser controlada ajustando se as estat sticas por coluna atrav s do comando ALTER TABLE ALTER COLUMN SET STATISTICS consulte o comando ALTER TABLE O valor es pecificado define o n mero m ximo de entradas da lista de valores com maior incid ncia e o n mero m x imo de barras no histograma O valor padr o 10 mas pode ser ajustado para mais ou para menos para balancear a precis o das estimativas do otimizador contra o tempo dispendido para a execug o do comando ANALYZE e a quantidade de espa o ocupado pela tabela pg statistic Em particular especificando se o valor zero desativa a coleta de estat sticas para a coluna podendo ser til para colunas que nunca s o us adas como
60. fazer qualquer coisa til com estas constru es Por outro lado set bar foo uma forma perfeitamente v lida de se copiar uma vari vel Se set for chamado sem um segundo argumento a vari vel simplesmente definida mas n o possui valor Para remover a defini o ou excluir a vari vel usa se o comando unset Os nomes das vari veis internas do psql podem consistir de letras n meros e sublinhados em qualquer ordem e em qualquer n mero deles Algumas vari veis regulares possuem tratamento especial pelo psql Elas indicam certas defini es de op es que podem ser mudadas em tempo de execu o alterando se o valor da vari vel ou representam algum estado do aplicativo Embora seja poss vel usar estas vari veis para qualquer outra finalidade isto n o recomendado uma vez que o comportamento do programa pode se tornar muito estranho e muito rapidamente Por conven o todas as vari veis com tratamento especial possuem todas as letras mai sculas e possivelmente n meros e sublinhados Para garantir a m xima compatibilidade no futuro evite estas vari veis Abaixo segue a lista de todas as vari veis com tratamento especial DBNAME O nome do banco de dados conectado correntemente E definida toda vez que se conecta a um banco de dados inclusive na inicializa o mas a defini o pode ser removida ECHO Se for definida como a 11 todas as linhas entradas ou do script s o escritas na sa da pa
61. nica transa o at que seja encontrado um comando expl cito COMMIT ou ROLLBACK ou a execu o ser abortada Os comandos s o executados mais r pido no modo encadeado porque cada in cio efetiva o de transa o requer uma atividade significativa de CPU e de disco A execu o de v rios comandos em uma nica transa o tamb m requerida por motivo de consist ncia quando v rias tabelas relacionadas s o modificadas BEGIN O n vel de isolamento padr o da transa o no PostgreSQL READ COMMITTED onde os coman dos dentro de uma transa o enxergam apenas as mudan as efetivadas antes da execu o do comando Por esse motivo deve se utilizar SET TRANSACTION ISOLATION LEVEL SERIALIZABLE logo ap s o comando BEGIN se for necess rio um n vel de isolamento mais rigoroso para a transa o No modo SERI ALIZABLE os comandos enxergam apenas as modifica es efetivadas antes do in cio de toda a transa o na verdade antes da execu o do primeiro comando DML em uma transa o serializ vel Se a transa o for efetivada o PostgreSQL garante que todas as atualiza es s o realizadas ou ent o que nenhuma delas realizada As transa es possuem a propriedade ACID atomicidade consist ncia isolamento e durabilidade padr o Notas Consulte o comando LOCK para obter mais informa es sobre o bloqueio de tabelas dentro de uma transa o Utilize COMMIT ou ROLLBACK para term
62. o vai processar a entrada como sendo a cadeia de caracteres de um nico comando A sequ ncia contrabarra nova linha n o recebe tratamento especial neste caso Para sair da sess o tecle EOF geralmente Control D Se for usado o N ent o dois EOFs consecutivos s o necess rios para sair Observe que o servidor aut nomo n o fornece funcionalidades sofisticadas para edi o de linha n o existe o hist rico dos comandos por exemplo Consulte tamb m initdb ipcclean postmaster 88 postmaster Name postmaster servidor de banco de dados multiusu rio do PostgreSQL Synopsis postmaster A 011 B num buffers c nome valor d n vel de depura o D diret rio de dados F h nome do hospedeiro 1 k diret rio N num max conex es 0 op es extras p porta S nome valor n s Descric o O postmaster o servidor de banco de dados multiusu rio do PostgreSQL Para um aplicativo cliente acessar um banco de dados deve se conectar atrav s de uma rede ou localmente a um postmaster O postmaster ent o inicia um processo servidor separado postgres para manter a conex o O postmaster tamb m gerencia a comunicag o entre os processos servidores Por padr o o postmaster inicia em primeiro plano foreground e envia as mensagens de log para a sa da padr o Na pr tica o postmaster deve ser iniciado como um processo em segundo plano background provavelmente durante a i
63. o PostgreSQL retorne um erro porque a consulta vai circular muitas vezes CREATE RULE RETemp AS ON SELECT TO emp DO INSTEAD SELECT FROM toyemp CREATE RULE RETtoyemp AS ON SELECT TO toyemp DO INSTEAD SELECT FROM emp A tentativa de consultar a tabela EMP faz com que o PostgreSQL emita um erro porque a consulta vai circular muitas vezes SELECT FROM emp Atualmente se uma regra possui uma consulta NOTIFY o NOTIFY ser executado incondicionalmente Ou seja a notifica o ser emitida mesmo que n o existam linhas onde a regra possa ser aplicada Por exemplo em T CREATE RULE me notifique AS ON UPDATE TO minha tabela DO NOTIFY minha tabela UPDATE minha tabela SET nome foo WHERE id 42 CREATE RULE um evento de notifica o NOTIFY ser emitido durante a atualiza o UPDATE existindo ou n o alguma linha com id 42 Esta uma restri o da implementa o que dever estar corrigida em vers es futuras Compatibilidade SQL92 O comando CREATE RULE uma extens o do PostgreSQL linguagem N o existe o comando CREATE RULE no SQL92 CREATE SEQUENCE Name CREATE SEQUENCE define um novo gerador de seqii ncia Synopsis CREATE TEMPORARY TEMP SEQUENCE nome seq
64. o comando LOAD Use o comando DROP FUNCTION para remover as fun es definidas pelo usu rio Para atualizar a defini o de uma fun o existente use o comando CREATE OR REPLACE FUNCTION Observe que n o poss vel mudar o nome ou os tipos dos argumentos da fun o desta forma se for tentado ser criada uma nova fun o distinta O comando CREATE OR REPLACE FUNCTION tamb m n o permite que se mude o tipo do valor retornado de uma fun o existente Para fazer isto a fun o deve ser removida e recriada Se a fun o for removida e recriada a nova fun o n o mais a mesma entidade que era antes ficar o inv lidas as regras vis es gatilhos etc existentes que faziam refer ncia antiga fun o Use o comando CREATE OR REPLACE FUNCTION para mudar a defini o de uma fun o sem invalidar os objetos que fazem refer ncia fun o Exemplos Para criar uma fun o SQL simples CREATE FUNCTION um RETURNS integer AS SELECT 1 AS RESULTADO LANGUAGE SQL q SELECT um AS resposta resposta CREATE FUNCTION Este exemplo cria uma fun o C chamando a rotina de uma biblioteca compartilhada criada pelo usu rio chamada funcs so a extens o pode variar entre plataformas O arquivo contendo a biblioteca com partilhada procurado no caminho de procura de biblioteca compartilhada do servidor Esta rotina em particular calcu
65. o duplicados e n o nulos Tecnicamente a chave prim ria PRIMARY KEY sim plesmente uma combina o de unicidade UNIQUE com n o nulo NOT NULL mas identificar um conjunto de colunas como chave prim ria tamb m fornece metadados sobre o projeto do esquema porque chaves prim rias indicam que outras tabelas podem depender deste conjunto de colunas como um identificador nico para linhas Somente uma chave prim ria pode ser especificada para uma tabela seja como uma restri o de coluna ou como uma restri o de tabela CREATE TABLE A restrig o de chave prim ria deve abranger um conjunto de colunas que seja diferente de outro conjunto de colunas abrangido por uma restrig o de unicidade definida para a mesma tabela CHECK express o A cl usula CHECK especifica restri es de integridade ou testes que as linhas novas ou atualizadas devem atender para que uma opera o de inser o ou de atualiza o complete Cada restri o deve ser uma express o que produza um resultado booleano Uma condi o declarada na defini o da coluna deve fazer refer ncia apenas ao valor desta coluna enquanto uma condi o declarada como uma restri o da tabela pode fazer refer ncia a v rias colunas Atualmente as expres es de CHECK n o podem conter subconsultas nem fazer refer ncia a vari veis que n o sejam colunas da linha atual REFERENCES tabe
66. o par metro 0 0 1 1 e multiplica o resultado pelo tamanho da rela o para obter o n mero esperado de inst ncias Analogamente quando os dois operandos do operador cont m vari veis inst ncias o otimizador deve es timar o tamanho da jun o resultante A fun o proc juncao retornar outro n mero de ponto flutuante que ser multiplicado pelas cardinalidades das duas tabelas envolvidas para calcular o tamanho esperado do resultado A diferen a entre a fun o meu procedimento 1 minhas caixas descricao caixa 0 0 1 1 e o operador minhas caixas descricao caixa 0 0 1 1 que o PostgreSQL tenta otimizar operadores e pode decidir usar um ndice para restringir o espa o de procura quando operadores est o envolvidos Entretanto n o existe tentativa de otimizar fun es que CREATE OPERATOR s o executadas pela for a bruta Mais ainda as fun es podem possuir qualquer n mero de argumentos enquanto os operadores est o restritos a um ou dois Notas Consulte o cap tulo sobre operadores no Guia do Usu rio do PostgreSQL para obter mais informa es Consulte o comando DROP OPERATOR para excluir do banco de dados um operador definido pelo usu rio Utiliza o O comando a seguir define o novo operador area igualdade para o tipo de dado CAIXA CREATE OPERATOR EFTARG caixa RIGHTARG caixa PRO
67. o uso de um ndice hash sempre que um atributo indexado estiver envolvido em uma compara o utilizando o operador Atualmente somente os m todos de acesso B tree e Gist suportam ndices com mais de uma coluna Por padr o at 16 chaves podem ser especificadas este limite pode ser alterado na gera o do PostgreSQL Na implementa o atual somente o B t ree suporta ndices nicos Uma classe de operador pode ser especificada para cada coluna de um ndice A classe de operador identifica os operadores a serem utilizados pelo ndice desta coluna Por exemplo um ndice B tree sobre inteiros de quatro bytes vai utilizar a classe de operadores int 4 ops esta classe de operadores inclui fun es de compara o para inteiros de quatro bytes Na pr tica a classe de operadores padr o para o tipo de dado do campo normalmente suficiente O ponto principal em haver classes de operadores que para alguns tipos de dado pode haver mais de uma ordena o que fa a sentido Por exemplo pode se desejar ordenar o tipo de dado do n mero complexo tanto pelo valor absoluto quanto pela parte real o que pode ser feito definindo se duas classes de operadores para o tipo de dado e ent o selecionando se a classe apropriada para a constru o do ndice Tamb m existem algumas classes de operadores com finalidades especiais CREATE INDEX As duas classes de operadores box ops e bigbox_ops suportam ndices R tree para o tipo de dado bo
68. pode ser utilizado em vis es A palavra chave BINARY for a todos os dados serem escritos lidos no formato bin rio em vez de texto E um pouco mais r pido do que a c pia normal mas o arquivo bin rio produzido n o port vel entre m quinas com arquiteturas diferentes Por padr o a c pia no formato texto usa o caractere de tabula o M4 como delimitador de campos O delimitador de campo pode ser mudado para qualquer outro caractere nico usando a cl usula USING COPY DELIMITERS Os caracteres nos campos de dados que forem id nticos ao caractere delimitador ser o precedidos por uma contrabarra E necess rio possuir permiss o de leitura em todas as tabelas cujos valores s o lidos pelo COPY e per miss o para inserir ou atualizar em uma tabela onde valores s o inseridos pelo COPY O servidor tamb m necessita de permiss es apropriadas no Unix para todos os arquivos lidos ou escritos pelo COPY O comando COPY TO n o invoca as regras nem atua no padr o da coluna Invoca os gatilhos e as restri es de verifica o O copy p ra de executar no primeiro erro o que n o deve acarretar problemas para o COPY FROM mas a tabela de destino j vai ter recebido linhas no caso do COPY TO Estas linhas n o s o vis veis nem acess veis mas ocupam espa o em disco podendo ocasionar o desperd cio de uma grande quantidade de espa o em disco se o erro ocorrer durante a c pia de uma grande quantidade de dados Deve se executar
69. projetados para serem port veis entre arquiteturas O pg dump salva as informa es necess rias para regerar todos os tipos fun es tabelas ndices agre ga es e operadores definidos pelo usu rio Adicionalmente todos os dados s o salvos no formato texto para que possam ser prontamente importados bem como tratados por ferramentas de edi o O pg dump til para exportar o conte do de um banco de dados a ser movido de um PostgreSQL para outro Quando usado com um dos formatos de exporta o e combinado com o pg restore o pg dump fornece um mecanismo de exporta o e importa o flex vel O pg dump pode ser usado para exportar todo o banco de dados e posteriormente o pg restore pode ser usado para examinar o arquivo e ou selecionar que partes do banco de dados devem ser importadas O formato mais flex vel produzido o personal izado custom Fc que permite a sele o e a reordena o de todos os itens exportados sendo com primido por padr o O formato tar Ft n o comprimido e n o permite reordenar os dados durante a importa o mas por outro lado bastante flex vel al m disso pode ser tratado por outras ferramentas como O tar Ao executar o pg dump deve se examinar a sa da procurando por advert ncias escritas na sa da de erro pg p padr o atento especialmente s limita es listadas abaixo O pg_dump cria c pias de seguran a consistentes mesmo se o banco de dados estiver sen
70. repetido para COPY cada campo da tupla existe uma palavra tipo comprimento typlen int16 possivelmente seguida por um campo de dados O campo tipo comprimento interpretado como Zero O campo nulo Nenhum dado segue gt 0 O campo possui um tipo de dado de comprimento fixo Exatamente N bytes de dados seguem a palavra tipo comprimento typlen O campo possui um tipo de dado de comprimento vari vel var lena Os pr ximos quatro bytes s o o cabe alho que cont m o valor do comprimento total incluindo a si pr prio lt 1 Reservado para uso futuro Para campos n o nulos o leitor pode verificar se o tipo comprimento typlen corresponde ao tipo comprimento esperado para a coluna de destino fornecendo uma maneira simples mas muito til de verificar se o dado est como o esperado N o existe nenhum preenchimento de alinhamento ou qualquer dado extra entre os campos Tamb m observe que o formato n o distingue se um tipo de dado passado por refer ncia ou passado por valor Estas duas disposi es s o deliberadas elas ajudam a melhorar a portabilidade dos arquivos embora problemas relacionados com a ordem dos bytes ou o formato do ponto flutuante podem impedir a troca de arquivos bin rios entre computadores Se os OIDs s o inclu dos no arquivo o campo OID segue imediatamente a palavra contador de campos um campo normal exceto que n o est inclu do no contador de campos Em particular possui um tip
71. retorna um conjunto de itens em vez de um nico item As fun es em que se declara opaque para o valor do tipo retornado n o retornam valor e n o podem ser chamadas diretamente as fun es dos gatilhos fazem uso desta funcionalidade CREATE FUNCTION defini o Uma cadeia de caracteres contendo a defini o da fun o o significado depende da linguagem Pode ser o nome de uma fun o interna o caminho para um arquivo objeto uma consulta SQL ou um texto escrito em uma linguagem procedural arq objeto simbolo de liga o Esta forma da cl usula As usada para fun es escritas na linguagem C ligadas dinamicamente quando o nome da fun o no c digo fonte da linguagem C n o o mesmo nome da fun o SQL A cadeia de caracteres arq objeto o nome do arquivo contendo o objeto carregado dinamica mente e simbolo de liga o o s mbolo de liga o do objeto ou seja o nome da fun o no c digo fonte escrito na linguagem C nome ling Pode ser SQL C internal ou nome ling proc onde nome ling proc o nome de uma linguagem procedural criada Consulte o comando CREATE LANGUAGE para obter mais detalhes Para manter a compatibilidade com as vers es anteriores o nome pode estar entre ap strofos atributo Uma informa o opcional sobre a fun o utilizada para otimiza o Veja abaixo para obter mais detalhes O usu rio que cria a fun o torna se o dono da fun o Os seguintes atributo
72. rio corrente do banco de dados por exemplo para definir o dono correto do objeto uma nova conex o ao banco de dados deve ser aberta o que poder requerer interven o manual por exemplo senhas Se for usada a op o X use set session authorization ent o o pg restore vai usar o comando SET SESSION AUTHORIZATION Embora produza o mesmo efeito requer que o usu rio que for fazer a importa o do banco de dados a partir do arquivo de exporta o gerado seja um superusu rio Esta op o substitui a op o R O pg restore tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es O padr o para o n mero da porta 5432 ou o valor da vari vel de ambiente PGPORT se estiver definida 41 pg restore U nome do usu rio Nome do usu rio para se conectar W For a a solicita o da senha Deve acontecer automaticamente se o servidor requerer autentica o por senha Diagn sticos Connection to database templatel failed connectDBStart connect failed No such file or directory Is the postmaster running locally and accepti
73. rios o PgAccess pode e Gerar relat rios simples de uma tabela est gio beta Mudar fonte tamanho e estilo dos campos e dos r tulos e Carregar e salvar relat rios no banco de dados Visualizar tabelas impress o Postscript de exemplo Para os formul rios o PgAccess pode 25 Abrir formul rios definidos pelo usu rio e Utilizar um m dulo de desenvolvimento de formul rio e Acessar conjunto de registros usando assistente de consultas Para os scripts o PgAccess pode e Definir e Modificar e Chamar scripts definidos pelo usu rio Notas pgaccess O PgAccess escrito em Tcl Tk O PostgreSQL deve ter sido compilado com suporte Tcl Tool Com mand Language para o PgAccess poder ser usado 26 pg_config Name pg config retorna informa es sobre a vers o instalada do PostgreSQL Synopsis pg config bindir includedir includedir server libdir pkglibdir configure version Descri o O utilit rio pg config exibe os par metros de configura o da vers o do PostgreSQL atualmente insta lada Sua finalidade por exemplo ser usado por pacotes de software que desejem interfacear com o PostgreSQL para encontrar os arquivos de cabe alho e bibliotecas necess rios Op es Para usar o pg config deve se fornecer uma ou mais das seguintes op es bindir Exibe a localiza o dos execut veis do usu rio Usa se por exemplo para encontrar o
74. se escrever tamb m nome da tabela como uma abrevia o para as colunas provenientes de apenas uma tabela A op o DISTINCT elimina as linhas repetidas do resultado enquanto que a op o ALL o padr o retorna todas as linhas candidatas incluindo as repetidas DISTINCT ON elimina as linhas que correspondem a todas as express es especificadas mantendo apenas a primeira linha de cada conjunto de repetidas As express es do DISTINCT ON s o interpretadas usando as mesmas regras dos itens do ORDER BY veja abaixo Observe que a primeira linha de cada conjunto n o pode ser prevista a menos que ORDER BY seja usado para garantir que a linha desejada apare a primeiro Por exemplo SELECT DISTINCT ON local local data condicao FROM tb1l condicao climatica ORDER BY local data DESC exibe a condi o clim tica mais recente para cada local mas se ORDER BY n o tivesse sido usado para for ar uma ordem descendente dos valores da data para cada local teria sido obtido um relat rio com datas aleat rias para cada local A cl usula GROUP BY permite dividir a tabela em grupos de linhas que correspondem a um ou mais valores Veja A cl usula GROUP BY A cl usula HAVING permite selecionar somente os grupos de linhas que atendem a uma condi o espec fica Veja A cl usula HAVING A cl usula ORDER BY faz com que as linhas retornadas sejam classificadas na ordem especificada Se ORDER BY n o for
75. ser criada A tabela n o pode existir Entretanto pode ser criada uma tabela tempor ria que possua o mesmo nome de uma tabela permanente existente nome da coluna O nome da coluna da nova tabela V rios nomes de colunas podem ser especificados utilizando uma lista de nomes separados por v rgula Se os nomes das colunas n o forem fornecidos ser o obtidos a partir dos nomes das colunas produzidas pela consulta CREATE TABLE AS consulta Uma declarag o de consulta ou seja um comando SELECT Consulte o comando SELECT para obter a descrig o da sintaxe permitida Diagn sticos Consulte os comandos CREATE TABLE e SELECT para obter um sum rio das poss veis mensagens de sa da Notas Este comando funcionalmente equivalente ao SELECT INTO mas prefer vel porque menos propenso a ser confundido com outros usos da sintaxe do comando SELECT INTO Compatibilidade Este comando baseado em uma funcionalidade do Oracle N o existe nenhum comando com fun cionalidade equivalente no SQL92 nem no SQL99 Entretanto uma combina o de CREATE TABLE com INSERT SELECT pode ser utilizada para produzir o mesmo resultado com um pouco mais de es for o Hist rico O comando CREATE TABLE AS est dispon vel desde o PostgreSQL 6 3 Consulte tamb m CREATE TABLE CREATE VIEW SELECT SELECT INTO CREATE TRIGGER Name CREATE TRIGGER defi
76. serializ vel Consulte o Guia do Usu rio para obter mais infor ma es No SQL existem outras duas caracter sticas da transa o que podem ser definidas com este comando se a transa o de leitura apenas e o tamanho da rea de diagn sticos Nenhum destes conceitos suportado pelo PostgreSQL SHOW Name SHOW mostra o valor de um par metro de tempo de execu o Synopsis SHOW nome SHOW ALL Entradas nome O nome de um par metro de tempo de execu o Consulte o comando SET para ver a rela o ALL Mostra todos os par metros da sess o corrente Descric o O comando sHow mostra o valor corrente de um par metro de tempo de execu o Estas vari veis podem ser definidas pelo comando SET ou s o determinadas na inicializa o do servidor Diagn sticos ERROR not a valid option name nome Mensagem retornada quando a nome n o corresponde a um par metro existente ERROR permission denied E necess rio ser um superusu rio para poder ver certos par metros OTICE Time zone is unknown Se as vari veis de ambiente TZ ou PGTZ n o tiverem valor atribu do SHOW Exemplos Mostrar o valor do DateSt yle estilo da data corrente SHOW DateStyle NOTICE DateStyle is ISO with US NonEuropean conventions Mostrar o estado do otimizador gen tico corrente gego SHOW GEQO NOTICE gego is on Compatibilidade O comando sHow uma extens o d
77. tipo de jun o Um entre INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN OU CROSS JOIN Para os tipos de jun o INNER e OUTER exatamente um entre NATURAL ON condi o de jun o ou USING lista coluna jun o deve estar presente Para CROSS JOIN nenhum destes itens pode aparecer condi o de jun o Uma condi o de qualifica o similar condi o WHERE exceto que somente se aplica aos dois itens sendo unidos por esta cl usula JOIN lista coluna jun o A condi o USING lista de colunas a b uma forma abreviada da condi o ON tabela esquerda a tabela direita a AND tabela esquerda b tabela direita b SELECT Sa das Linhas O conjunto completo das linhas resultantes da especifica o da consulta contador A quantidade de linhas retornadas pela consulta Descric o O comando SELECT retorna linhas de uma ou mais tabelas As linhas que satisfazem a condi o WHERE s o candidatas para sele o se WHERE for omitido todas as linhas s o candidatas Veja A cl usula WHERE Na verdade as linhas retornadas n o s o as linhas produzidas pelas cl usulas FROM WHERE GROUP BY HAVING diretamente mais precisamente as linhas da sa da s o formadas computando se as express es de sa da do SELECT para cada linha selecionada O pode ser escrito na lista de sa da como uma abrevia o para todas as colunas das linhas selecionadas Pode
78. uma chave estrangeira como em CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 CONSTRAINT se filme exist FOREIGN KEY did REFERENCES filmes ON UPDATE CASCADE ON DELETE CASCADE CREATE TRIGGER Compatibilidade SQL92 N o existe o comando CREATE TRIGGER no SQL92 SQL99 O comando CREATE TRIGGER do PostgreSQL implementa um subconjunto do padr o SQL99 As seguintes funcionalidades est o faltando OSQL99 permite os gatilhos dispararem quando da atualiza o de colunas espec ficas por exem plo AFTER UPDATE OF coll col2 OSQL99 permite definir ali s para as linhas ou tabelas velha e nova para uso na defini o das a es do gatilho por exemplo CREATE TRIGGER ON nome tabela REFERENCING OLD ROW AS algum nome NEW ROW AS outro nome Como o PostgreSQL permite que os procedimentos dos gatilhos sejam escritos em qualquer linguagem definida pelo usu rio o acesso aos dados realizado na forma espec fica da linguagem e O PostgreSQL somente possui gatilhos a n vel de linha n o possuindo gatilhos a n vel de declara o O PostgreSQL somente permite a execu o de procedimentos armazenados para a a o do gatilho O SQL99 permite a execu o de v rios outros comandos SQL como o CREATE TABLE para a a o de um gatilho Esta limita o n o
79. usu rio acrescido de 1 com m nimo de 100 senha Define a senha do usu rio Se n o se planeja utilizar autentica o por senha pode se omitir esta op o mas o usu rio n o ser capaz de se conectar a um servidor autenticado por senha A senha pode ser definida ou alterada posteriormente atrav s do comando ALTER USER ENCRYPTED UNENCRYPTED Estas palavras chave controlam se a senha armazenada criptografada ou n o na tabela pg shadow Se nenhuma das duas for especificada o comportamento padr o determinado pelo par metro PASSWORD ENCRYPTION do servidor Se a cadeia de caracteres apresentada j estiver criptografada no formato MDS ent o esta cadeia de caracteres armazenada como est independentemente de ENCRYPTED ou UNENCRYPTED ser especificado Esta funcionalidade permite a restaura o das senhas criptografadas efetuadas por uma opera o de dump restore Consulte o cap tulo sobre autentica o de cliente no Guia do Administrador para obter mais detalhes sobre como configurar os mecanismos de autentica o Observe que os clientes antigos podem n o CREATE USER possuir suporte ao mecanismo de autentica o para o MDS que necess rio para trabalhar com as senhas armazenadas criptografadas CREATEDB NOCREATEDB Estas cl usulas definem a permiss o para o usu rio criar bancos de dados Se CREATEDB for es pecificado o usu rio sendo definido ter permiss o para criar seus pr pr
80. usu rio do novo dono da tabela Sa das ALTER Mensagem retornada se o nome da coluna ou da tabela for alterado com sucesso ERROR Mensagem retornada se a tabela ou a coluna n o existir Descri o O comando ALTER TABLE altera a defini o de uma tabela existente A forma ADD COLUMN adiciona uma nova coluna na tabela utilizando a mesma sintaxe de CREATE TABLE A forma ALTER COLUMN SET DROP DEFAULT permite definir ou remover o valor padr o para a coluna Note que o valor padr o somente se aplica aos pr ximos comandos INSERT as linhas existentes na tabela n o s o modificadas A forma ALTER COLUMN SET STATISTICS permite controlar a coleta de estat sticas para as opera es ANALYZE posteriores A cl usula RENAME faz com que o nome da tabela coluna ndice ou segii n cia seja mudado sem que os dados sejam modificados Os dados permanecem do mesmo tipo e tamanho ap s o comando ser executado A cl usula ADD defini o de restri o de tabelaadiciona uma nova restri o de tabela utilizando a mesma sintaxe de CREATE TABLE A cl usula DROP CON STRAINT restri o elimina todas as restri es da tabela e de suas descendentes que correspondam restri o A cl usula OWNER muda o dono da tabela para o usu rio novo dono Somente o dono da tabela pode modificar seu esquema Notas A palavra chave COLUMN informativa podendo ser omitida Na atual implementa o de ADD C
81. vers es anteriores o nome pode ser escrito entre ap strofos HANDLER tratador de chamadas O tratador de chamadas o nome de uma fun o previamente registrada que vai ser chamada para executar as fun es escritas nesta linguagem procedural O tratador de chamadas para a linguagem procedural deve ser escrito em uma linguagem compilada como C com a conven o CREATE LANGUAGE de chamadas vers o 1 registrada no PostgreSQL como uma fun o que n o recebe nenhum argumento e com retorno do tipo opaque que um substituto para tipos n o especificados ou n o definidos Diagn sticos CREATE Mensagem retornada se a linguagem for criada com sucesso ERROR PL handler function nome da fun o doesn t exist Este erro ocorre quando a fun o nome da fun o n o for encontrada Notas Normalmente este comando n o deve ser executado diretamente pelos usu rios Para as linguagens proce durais fornecidas juntamente com a distribui o do PostgreSQL o aplicativo createlang deve ser utilizado porque este aplicativo tamb m instala o tratador de chamadas correto O aplicativo createlang chama o CR EATE LANGUAGE internamente Use o comando CREATE FUNCTION para criar uma nova fun o Use o comando DROP LANGUAGE ou melhor ainda o aplicativo droplang para excluir linguagens procedurais O cat logo do sistema pg language registra informa es sobre as linguagens pr
82. CEDURE area igual procedimento COMMUTATOR EGATOR l RESTRICT area restricao procedimento JOIN area Jjuncao procedimento HASHES SORT1 lt lt lt SORT2 gt gt gt Compatibilidade SQL92 O comando CREATE OPERATOR uma extens o do PostgreSQL linguagem N o existe o comando CREATE OPERATOR no SQL92 CREATE RULE Name CREATE RULE define uma nova regra Synopsis CREATE RULE nome AS ON evento TO objeto WHERE condic o DO INSTEAD a o onde a o pode ser NOTHING consulta consulta consulta consulta consulta Entradas nome O nome da regra a ser criada evento Evento um entre SELECT UPDATE DELETE INSERT objeto Objeto pode ser tabela ou tabela coluna Atualmente somente a forma tabela est imple mentada condi o Qualquer express o condicional booleana SQL A express o de condi o n o pode fazer refer ncia a nenhuma tabela exceto new e old consulta A consulta ou consultas causadora da a o pode ser um dos comandos SQL SELECT INSERT UPDATE DELETE OU NOTIFY Dentro da condi o e da a o os nomes especiais de tabela new e old podem ser usados para se referir aos valores da tabela referenciada o objeto O new v lido nas regras ON INSERT e ON UPDATE
83. CREATE RULE para se referir nova linha sendo inserida ou atualizada O old v lido nas regras ON UPDATE e ON DELETE para se referir linha existente sendo atualizada ou exclu da Sa das CREATE Mensagem retornada se a regra for criada com sucesso Descri o O sistema de regras do PostgreSQL permite a defini o de uma a o alternativa a ser realizada para as inclus es atualiza es ou exclus es nas tabelas do banco de dados As regras tamb m s o utilizadas para implementar as vis es das tabelas A sem ntica de uma regra que no instante em que uma inst ncia individual linha acessada inclu da atualizada ou exclu da existe uma inst ncia antiga para consultas atualiza es e exclus es e uma in st ncia nova para inclus es e atualiza es Toda as regras para o tipo de evento indicado no objeto de destino indicado tabela s o examinadas em uma ordem n o especificada Se a condi o especificada na cl usula WHERE caso exista for verdadeira a parte a o da regra executada A a o executada em vez da consulta original se INSTEAD for especificado sen o executada ap s a consulta original no caso de ON INSERT ou antes da consulta original nos casos de ON UPDATE e ON DELETE Dentro da condi oe da a o os valores dos campos da inst ncia antiga e ou da inst ncia nova s o substitu dos por old nome atributoenew nome atributo A parte a o da regra pode ser comp
84. E O sum rio da sintaxe REVOKE GRANT OPTION FOR SELECT INSERT UPDATE DELETE REFERENCE ON objeto coluna FROM PUBLIC nome do usu rio RESTRICT CASCADE Se userl conceder um privil gio WITH GRANT OPTION para o user2 e user2 conced lo para o user3 ent o userl pode revogar este privil gio em cascata utilizando a palavra chave CASCADE Se userl conceder um privil gio WITH GRANT OPTION para o user2 e user2 conced lo ao user3 ent o se userl tentar revogar este privil gio especificando a palavra chave RESTRICT o comando ir falhar Consulte tamb m GRANT S ROLLBACK Name ROLLBACK aborta a transa o corrente Synopsis ROLLBACK WORK TRANSACTION Entradas Nenhuma Sa das ABORT Mensagem retornada se o comando for executado com sucesso NOTICE ROLLBACK no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando ROLLBACK desfaz a transa o corrente fazendo com que todas as modifica es realizadas pela transa o sejam rejeitadas Notas Use o comando COMMIT para terminar uma transa o com sucesso O comando ABORT um sin nimo para o comando ROLLBACK Utiliza o Para abortar todas as modifica es ROLLBACK WORK ROLLBACK Compatibilidade SQL92 O SQL92 somente especifica as duas formas ROLLBACK
85. ECT condi o Uma express o booleana produzindo um resultado falso ou verdadeiro Veja a descri o das cl usulas WHERE e HAVING abaixo select Um comando SELECT com todas as suas funcionalidades exceto as cl usulas ORDER BY FOR UPDATE e LIMIT mesmo estas podem ser utilizadas quando o SELECT est entre par nteses Os itens da cl usula FROM podem conter nome da tabela O nome de uma tabela ou de uma vis o existente Se ONLY for especificado somente esta tabela consultada Se ONLY n o for especificado a tabela e todas as suas tabelas descendentes porventura existentes ser o consultadas O pode ser apensado ao nome da tabela para indicar que as tabelas descendentes devem ser consultadas mas na vers o corrente este o comportamento padr o Nas vers es anteriores a 7 1 ONLY era o comportamento padr o ali s Um nome substituto para o nome da tabela precedente Um ali s utilizado para abreviar ou para eliminar ambigiiidade em autojun es onde a mesma tabela referenciada v rias vezes Se um ali s for escrito uma lista de ali s de coluna tamb m pode ser escrita para fornecer nomes substitutos para uma ou mais colunas da tabela select Uma subconsulta pode aparecer na cl usula FROM agindo como se sua sa da fosse criada como uma tabela tempor ria pela dura o do comando SELECT Observe que a subconsulta deve estar entre par nteses e que um ali s deve ser fornecido para esta subconsulta
86. ES 3 0 lu uh Compatibilidade SQL92 O comando INSERT totalmente compat vel com o SQL92 As poss veis limita es nas funcionalidades da cl usula de consulta est o documentadas no comando SELECT LISTEN Name LISTEN escuta uma notifica o Synopsis LISTEN nome Entradas nome O nome da condi o de notifica o Sa da LISTI ql Mensagem retornada se a notificag o for registrada com sucesso NOTICE Async_Listen We are already listening on nome Este processo servidor j est registrado para esta condi o de notifica o Descric o O comando LISTI notifica o nome EN registra o processo servidor corrente do PostgreSQL para escutar a condi o de Sempre que o comando NOTIFY nome executado tanto por este processo servidor quanto por qualquer outro conectado ao mesmo banco de dados todos os processos servidores escutando esta condig o de notifica o neste instante s o notificados e cada um por sua vez notifica o aplicativo cliente ao qual est conectado Consulte a discuss o do comando NOTIFY para obter mais informa es Um processo servidor pode cancelar seu registro para uma dada condi o de notifica o usando o comando UNLISTEN Os registros de escuta de um processo servidor s o automaticamente removidos quando o processo servidor encerra sua execu o LISTEN O m todo que o aplicativo cliente deve usar para detectar event
87. ESERVE ROWS Restri o NULL A restri o NULL na verdade uma n o restri o uma extens o do PostgreSQL ao SQL92 inclu da para manter a compatibilidade com alguns outros SGBDRs e por simetria com a restri o NOT NULL Sendo que este o padr o para qualquer coluna sua presen a simplesmente informativa Asser es Uma asser o assertion um tipo especial de restri o de integridade e compartilha o mesmo espa o de nomes como outras restri es Entretanto uma asser o n o necessriamente dependente de uma tabela em particular como as retri es s o por isso o SQL92 fornece a declara o CREATE ASSERTION como uma forma alternativa para definir restri es CREATE ASSERTION nome CHECK condi o O PostgreSQL n o implementa asser es atualmente Heran a Heran as m ltiplas atrav s da cl usula INHERITS uma extens o da linguagem do PostgreSQL O SQL99 mas n o o SQL92 define heran a nica utilizando uma sintaxe diferente e sem nticas diferente O estilo de heran a do SQL99 ainda n o suportado pelo PostgreSQL Identificadores do Objeto Object IDs O conceito de OIDs identificadores de objeto do PostgreSQL n o padr o CREATE TABLE Consulte tamb m ALTER TABLE DROP TABLE 10 CREATE TABLE AS Name CREATE TABLE AS cria uma nova tabela a partir do resultado de uma consulta
88. ETCH posteriores BINARY Faz com que o cursor busque os dados no formato bin rio em vez do formato texto INSENSITIVE Palavra chave do SQL92 indicando que os dados buscados pelo cursor n o devem ser afetados pelas atualiza es feitas por outros processos ou cursores Como as opera es do cursor ocorrem dentro de uma transa o no PostgreSQL este sempre o caso Esta palavra chave n o provoca qualquer efeito SCROLL Palavra chave do SQL92 indicando que v rias linhas de dados devem ser trazidas em cada opera o de busca FETCH Como sempre permitido pelo PostgreSQL esta palavra chave n o provoca qualquer efeito consulta Uma consulta SQL que fornece as linhas a serem controladas pelo cursor Consulte o comando SELECT para obter mais informa es sobre os argumentos v lidos READ ONLY Palavra chave do SQL92 indicando que o cursor ser usado no modo apenas para leitura Como este o nico modo de acesso do cursor dispon vel no PostgreSQL esta palavra chave n o provoca qualquer efeito UPDATE Palavra chave do SQL92 indicando que o cursor ser usado para atualizar tabelas Como as atualiza es pelo cursor n o s o suportadas no momento pelo PostgreSQL esta palavra chave provoca uma mensagem informando o erro DECLARE coluna Coluna s a serem atualizadas Como as atualiza es pelo cursor n o s o suportadas no momento pelo PostgreSQL a cl usula UPDATE provoca uma mensagem informando o erro
89. EX meu indice Reconstruir todos os ndices do sistema somente funciona utilizando um servidor aut nomo E REINDEX DATABASE meu_banco_de_dados FORC Compatibilidade SQL92 N o existe o comando REINDEX no SQL92 RESET Name RESET atribui a um par metro de tempo de execu o o seu valor padr o Synopsis RESE vari vel Entradas vari vel O nome de um par metro de tempo de execu o Consulte o comando SET para ver a rela o ALL Atribui a todos os par metros de tempo de execu o o seu valor padr o Descric o O comando RESET restaura os par metros de tempo de execu o atribuindo seus valores padr o Consulte o comando SET para obter detalhes O comando RESET uma forma alternativa para SET vari vel TO DEFAULT Diagn sticos Consulte o comando SET Exemplos Atribuir a DateStyle o seu valor padr o RESET DateStyle Atribuir a Gego o seu valor padr o GE QO Compatibilidade O comando RE S ET uma extens o do PostgreSQL linguagem RESET REVOKE Name REVOKE revoga privil gios de acesso Synopsis REVOKE SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER O TABLE objeto FROM nome do usu rio GROUP nome do grupo PUBLIC
90. Especificam como os prompt s emitidos pelo psql devem se parecer Veja Prompt abaixo QUIET SINGLELINE SI US Esta vari vel equivalente op o de linha de comando q Provavelmente n o muito til no modo interativo Esta vari vel definida pela op o de linha de comando s Pode ser redefinida ou ter a defini o removida em tempo de execu o GLESTEP Esta vari vel equivalente op o de linha de comando s ER O usu rio do banco de dados que se est conectado Definida toda vez que se conecta ao banco de dados inclusive na inicializa o mas a defini o pode ser removida 61 psql Interpolac o SQL Uma funcionalidade bastante pr tica das vari veis do psql que podem ser substitu das interpoladas dentro de comandos regulares do SQL A sintaxe para isto novamente prefixar a vari vel com dois pontos testdb gt set foo minha tabela testdb gt SELECT FROM foo faria ent o a consulta tabela minha_tabela O valor da vari vel copiado literalmente podendo por tanto conter ap strofos n o balanceados ou comandos de contrabarra Deve se ter certeza que faz sentido onde colocada A interpola o de vari veis n o realizada dentro de entidades SQL entre ap strofos Uma aplicag o comum desta funcionalidade para fazer refer ncia nos comandos seguintes ao ltimo OID inserido para construir um cen rio d
91. GUAGE plsample Compatibilidade SQL92 N o existe o comando DROP PROCEDURAL LANGUAGE no SQL92 DROP OPERATOR Name DROP OPERATOR remove um operador definido pelo usu rio Synopsis T DROP OPERATOR id tipo esquerdo NONE tipo direito NON EJ Entradas id O identificador de um operador existente tipo esquerdo O tipo do argumento do lado esquerdo do operador escreva NONE se o operador n o possuir argu mento do lado esquerdo tipo direito O tipo do argumento do lado direito do operador escreva NONE se o operador n o possuir argumento do lado direito Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR RemoveOperator binary operator operador taking tipo esquerdo and tipo direito does not exist Esta mensagem ocorre quando o operador bin rio especificado n o existe ERROR RemoveOperator left unary operator opererador taking tipo esquerdo does not exist Esta mensagem ocorre quando o operador un rio esquerdo especificado n o existe ERROR RemoveOperator right unary operator operador taking tipo direito does not exist Esta mensagem ocorre quando o operador un rio direito especificado n o existe DROP OPERATOR Descric o O comando DROP OPERATOR remove um operador existente do banco de dados Para executar este co mando necess rio ser o dono do operador O tipo do lado esquerdo ou di
92. HTML Yconnect ou 1c nome bd nome usu rio Estabelece a conex o com um novo banco de dados e ou sob o mesmo nome de usu rio A conex o anterior fechada Se o nome bd for h fen ent o o nome do banco de dados corrente assum ido Se nome usu rio for omitido o nome do usu rio corrente assumido Como regra especial Yconnect sem nenhum argumento conecta ao banco de dados padr o como o usu rio padr o da mesma forma que aconteceria se o psql fosse executado sem argumentos Se a tentativa de conex o falhar nome de usu rio errado acesso negado etc a conex o anterior ser mantida se e somente se o psql estiver no modo interativo Ao executar um script n o interativo o processamento ser imediatamente interrompido com um erro Esta distin o foi escolhida por ser mais conveniente para o usu rio que digita menos e para garantir um mecanismo seguro que impe a os scripts atuarem acidentalmente no banco de dados errado copy table with oids fromlto nome do arquivolstdin stdout using delimiters caracteres with null as cadeia de caracteres Executa uma c pia pelo cliente Esta uma opera o que executa o comando SQL COPY mas em vez do servidor ler ou escrever no arquivo especificado e conseqiientemente ser necess rio o acesso ao servidor e privil gios especiais de usu rio assim como estar limitado pelo sistema de arquivos acess vel ao servidor o psql l ou escreve o arquivo
93. L da cl usula ORDER BY para fazer o papel do ndice o que muito mais r pido para dados n o ordenados Em seguida a tabela original deve ser removida o comando ALTER TABLE RENAME deve ser utilizado para mudar o nome da nova tabela para o nome da tabela original e os ndices da tabela devem ser recriados O nico problema que o OID n o preservado Deste momento em diante o comando CLUSTER dever ser r pido porque a maior parte dos dados da tabela estar ordenada e o ndice existente usado Utiliza o Agrupar a rela o empregados baseado no atributo sal rio CLUSTER emp ind ON emp Compatibilidade SQL92 N o existe o comando CLUSTER no SQL92 COMMENT Name COMMENT cria ou altera o coment rio de um objeto Synopsis COMMENT ON DATABASE INDEX RULE SEQUENCE TABLE TYPE VIEW nome do objeto COLUMN nome da tabela nome da coluna AGGREGATE nome da agrega o tipo da agrega o FUNCTION nome da fun o argl arg2 OPERATOR op leftoperand type rightoperand type TRIGGER nome do gatilho ON nome da tabela IS texto Entradas nome do objeto nome da tabela nome da coluna nome da agrega o nome da fun o op e nome do gatilho O nome do objeto ao qual o coment rio se refere texto O coment rio a ser adicionado Sa das COMMENT Mensagem r
94. LUSIVE Entradas nome O nome de uma tabela existente a ser bloqueada ACCESS SHARE MODE Note Este modo de bloqueio obtido automaticamente nas tabelas sendo consultadas Este o modo de bloqueio menos restritivo Somente conflita com o modo ACCESS EXCLUSIVE utilizado para proteger a tabela de ser modificada por um comando ALTER TABLE DROP TABLE ou VACUUM FULL concorrente ROW SHARE MODE Note Automaticamente obtido pelo comando SELECT FOR UPDATE Conflita com os modos de bloqueio EXCLUSIVE e ACCESS EXCLUSIVE ROW EXCLUSIVE MODE Note Automaticamente obtido pelos comandos UPDATE DELETE INSERT Conflita com os modos de bloqueio SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE LOCK SHARE UPDATE EXCLUSIVE MODE Note Automaticamente obtido pelo comando vacuum sem a op o FULL Conflita com os modos de bloqueio SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EX CLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio protege a tabela contra altera es concorrentes do esquema e VACUUM SHARE MODE Note Automaticamente obtido pelo comando CREATE INDEX Bloqueia o compartilhamento de toda a tabela Conflita com os modos de bloqueio ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio protege a tabela contra atualiza o concorrente dos dados SHARE R
95. Manual de Refer ncia do PostgreSQL 7 2 The PostgreSQL Global Development Group Manual de Refer ncia do PostgreSQL 7 2 by The PostgreSQL Global Development Group Copyright O 1996 2001 by The PostgreSQL Global Development Group Legal Notice PostgreSQL is Copyright O 1996 2001 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below Postgres95 is Copyright O 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 INCI DENTAL 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 IM PLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE SOFTWARE PROVIDED HERE UNDER IS ON AN AS IS BASIS AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE SUPPORT UPDATES ENHANCEMENTS OR MODIFICATIONS Table o
96. OLUMN as cl usulas valor padr o e NOT NULL n o s o suportadas para a nova coluna Pode ser usada a forma SET DEFAULT do comando ALTER TABLE para definir o valor padr o mais tarde Os valores atuais das linhas existentes poder o ser atualizados posteriormente para o novo valor padr o usando o comando UPDATE Em DROP CONSTRAINT a palavra chave RESTRICT requerida embora as depend ncias ainda n o sejam verificadas A op o CASCADE n o suportada Atualmente DROP CONSTRAINT remove so mente as restri es CHECK Para remover as restri es PRIMARY ou UNIQUE deve ser removido o ndice correspondente utilizando o comando DROP INDEX Para remover uma FOREIGN KEY necess rio recriar e recarregar a tabela usando outros par metros no comando CREATE TABLE ALTER TABLE Por exemplo para remover todas as restri es da tabela distribuidores CREATE TABL DROP TABLE E temp AS SELECT FROM distribuidores distribuidores CREATE TABL E distribuidores AS SELECT FROM temp DROP TABLE temp Somente o dono da tabela pode alter la Mudar qualquer parte do esquema do cat logo do sistema n o permitido O manual Guia do Usu rio do PostgreSQL possui mais informa es sobre heran a Consulte o comando CREATE TABLE para obter uma descri o mais detalhada dos argumentos v lidos Utiliza o Para adicio
97. OW EXCLUSIVE MODE Note Semelhante ao EXCLUSIVE MODE mas permite o bloqueio ROW SHARE por outros Conflita com os modos de bloqueio ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE EXCLUSIVE MODE Note Este modo ainda mais restritivo do que SHARE ROW EXCLUSIVE Bloqueia todas as consultas ROW SHARE SELECT FOR UPDATE concorrentes Conflita com os modos de bloqueio ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLU SIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio permite somente o ACCESS SHARE concorrente ou seja somente leituras na tabela podem ocorrer em paralelo a uma transa o contendo este tipo de bloqueio ACCESS EXCLUSIVE MODE Note Automaticamente obtido pelos comandos ALTER TABLE DROP TABLE VACUUM FULL Este o modo de bloqueio mais restritivo o qual protege uma tabela bloqueada de qualquer opera o concorrente Note Este modo de bloqueio tamb m obtido por um comando Lock TABLE n o qualificado ou seja o comando sem a op o do modo de bloqueio explicitado LOCK Conflita com todos os outros modos de bloqueio Sa das LOCK TABLI E Mensagem retornada se o bloqueio for obtido com sucesso ERROR nome Table does not exist Mensagem retornada se nome n o existir Descric o x O comando LOCK TABLE controla o acesso concorrente tabela durante o tempo de execu o da transa o O Post
98. QUE para exigir a unicidade de um subcon junto dos dados da tabela A express o utilizada na cl usula WHERE pode referenciar apenas as colunas da tabela subjacente mas pode referenciar qualquer coluna e n o apenas as que est o sendo indexadas Na forma atual subcon sultas e express es de agrega o n o s o permitidas na cl usula WHERE Todas as fun es e operadores utilizados na defini o de um ndice devem ser poss veis de serem ar mazenados na mem ria intermedi ria cachable ou seja seus resultados devem depender apenas de seus argumentos de entrada e nunca de uma influ ncia externa como o conte do de outra tabela ou a hora atual Esta restri o garante que o comportamento do ndice bem definido Para utilizar uma fun o definida pelo usu rio em um ndice deve ser utilizado o atributo Iscachable na cl usula WITH Use o DROP INDEX para excluir um ndice Notas O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice B tree sempre que um atributo indexado estiver envolvido em uma compara o utilizando um dos seguintes operadores lt lt gt gt O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice R tree sempre que um atributo indexado estiver envolvido em uma compara o utilizando um dos seguintes operadores lt lt amp lt amp gt gt gt O amp amp O otimizador de consultas do PostgreSQL vai considerar
99. SELECT FROM comedias cod titulo did data prod tipo duracao UA502 Bananas 105 1971 07 13 Com dia 01 22 C 701 There s a Girl in my Soup 107 1970 06 11 Com dia 01 36 2 rows Compatibilidade SQL92 O SQL92 especifica algumas funcionalidades adicionais para o comando CREATE VIEW CREATE VIEW vis o coluna AS SELECT express o AS nome da coluna FROM tabela WHERE condi o WITH CASCADE LOCAL CHECK OPTION As cl usulas opcionais para o comando SQL92 completo s o CHECK OPTION CREATE VIEW Esta op o est relacionada com as vis es atualiz veis Todos os comandos INS ERT e UPDATI E em uma vis o ser o verificados para garantir que os dados satisfazem as condi es que definem a vis o Se n o satisfizer a atualiza o ser rejeitada LOCAL Verifica a integridade nesta vis o CASCADE Verifica a integridade nesta vis o e em todas as vis es dependentes CASCADE assumido se nem CASCADE nem LOCAL forem especificados DECLARE Name DECLARE define um cursor Synopsis DECLARE nome do cursor BINARY INSENSITIVE SCROLL CURSOR FOR consulta FOR READ ONLY UPDATE OF coluna 11 Entradas nome do cursor O nome do cursor a ser utilizado nas opera es de busca F
100. SQL CLOSE foo_bar EXEC SQL COMMIT Atualiza o EXEC SQL UPDATE foo SET ascii foobar WHERE number 9999 EXEC SQL COMMIT Notas A definig o completa da estrutura DEVE estar listada dentro da seg o de declarag o Consulte o arquivo TODO a fazer no fonte para conhecer outras funcionalidades que est o faltando ecpg 23 pgaccess Name pgaccess um aplicativo cliente do PostgreSQL com interface gr fica Synopsis pgaccess nome ba Op es nome bd O nome do banco de dados existente a ser acessado Descri o O PgAccess fornece uma interface gr fica para o PostgreSQL atrav s da qual pode se gerenciar e editar tabelas definir consultas segii ncias e fun es O PgAccess pode Abrir qualquer banco de dados usando o computador a porta o nome do usu rio e a senha especifica dos e Executar o comando VACUUM e Salvar as prefer ncias no arquivo pgaccessrc Para as tabelas o PgAccess pode e Abrir v rias tabelas para visualiza o com o n mero de linhas exibidas configur vel e Redimensionar as colunas arrastando as linhas verticais da grade Quebrar o texto nas c lulas e Ajustar dinamicamente a altura da c lula ao editar e Salvar o leiaute da tabela para todas as tabelas Importar exportar para arquivos externos SDF CSV Usar a capacidade de filtragem definir filtros como valor gt 3 14 Especific
101. Se a forma df for usada informa es adicionais sobre cada fun o incluindo a linguagem e a descri o s o mostradas XdistvS padr o val Xdo dp NdT Xdu Este n o o verdadeiro nome do comando As letras i s t v S correspondem ao ndice seqii ncia tabela vis o e tabela do sistema respectivamente Pode se especificar qualquer um deles ou todos eles em qualquer ordem para obter uma listagem dos mesmos juntamente com a informag o sobre quem o dono Se o padr o for especificado tomado como uma express o regular que restringe a listagem aos objetos com nomes correspondentes Se for apensado o caractere ao nome do comando cada objeto listado juntamente com a sua descri o se houver Este um sin nimo para lo_list que mostra a lista dos objetos grandes nome Lista os operadores dispon veis juntamente com o tipo de seus operandos e do valor retornado Se nome for especificado somente operadores com este nome ser o mostrados padr o Este um sin nimo para 1z que foi inclu do devido ao seu maior valor mnem nico display per missions mostra permiss es padr o Lista todos os tipos de dado ou somente queles que correspondem ao padr o A forma do co mando dT mostra informa es extras padr o Lista todos os usu rios configurados ou somente queles que correspondem ao padr o Vedit ou le nome do arquivo Seo nome do a
102. TARG deve ser definido O procedimento nome da fun o deve ser previamente definido utilizando o comando CREATE FUNCTION e deve estar definido para aceitar o n mero correto de argumentos um ou dois dos tipos indicados O operador comutador deve ser identificado se existir para que o PostgreSQL possa reverter a ordem dos operandos se desejar Por exemplo o operador area menor do que lt lt lt provavelmente teria o operador comutador area maior do que gt gt gt Com isso o otimizador de consultas poderia livremente converter caixa 0 0 1 15 gt gt gt minhas caixas descricao em minhas caixas descricao lt lt lt caixa 0 0 1 1 Isto permite o c digo de execu o sempre utilizar a ltima representa o e simplifica um pouco o otimizador de consultas Analogamente se existir um operador negador ent o este deve ser identificado Suponha que exista um operador area igual assim como um area diferente A liga o negador permite ao otimizador de consultas simplificar NOT minhas caixas descricao caixa 0 0 1 1 para minhas caixas descricao caixa 0 0 1 1 Se for fornecido o nome de um operador comutador o PostgreSQL procura o no cat logo Se encontr lo e este ainda n o tiver um comutador pr prio ent o a entrada do comutador atualizada para ter o novo operador criado como sendo o seu comutador Aplica se igualmente ao negador Isto ser
103. USING lista coluna jun o ou NATURAL A cl usula ON o caso mais geral pode ser escrita qualquer express o de qualifica o envolvendo as duas tabelas da jun o A forma USING lista de colunas a b uma abrevia o para a condi o ON tabela esquerda a tabela direita a AND tabela esquerda b tabela direita b Al m disso USING implica em que somente uma coluna de cada par de colunas equivalentes ser inclu da na sa da do JOIN e n o as duas NATURAL uma abrevia o para USING quando a lista menciona todas as colunas das tabelas com mesmo nome A cl usula WHERE A condi o opcional WHERE possui a forma geral WHERE express o booleana A express o booleana pode ser qualquer express o que retorna um valor booleano Em muitos casos esta express o possui a forma express o op condi o express o ou op logico express o onde op condi o pode ser um entre lt lt gt gt ou lt gt um operador condicional como ALL ANY IN LIKE ou um operador definido localmente e oo logico pode ser um entre AND OR e NOT O SELECT ignora todas as linhas para as quais a condi o WHERE n o retorna TRUE A cl usula GROUP BY O GROUP BY especifica uma tabela agrupada derivada da aplica o desta cl usula GROUP BY express o O GROUP BY condensa em uma nica linha todas as linhas selecionadas que compartilham os mesmos valores para as colunas agrupadas As fun es
104. a o con veniente porque n o fazem nada que n o poderia ser feito usando simplesmente o FROM e o WHERE O LEFT OUTER JOIN retorna todas as linhas do produto Cartesiano qualificado i e todas as linhas combinadas que passam pela condi o ON mais uma c pia de cada linha da tabela esquerda para a qual n o h uma linha da tabela direita que tenha passado pela condi o ON Esta linha da tabela esquerda estendida por toda a largura da tabela combinada inserindo se nulos para as colunas da tabela direita Observe que somente as condi es ON ou USING do pr prio JOIN s o consideradas na hora de decidir quais linhas possuem correspond ncia Condi es ON ou WHERE externas s o aplicadas depois SELECT De forma inversa o RIGHT OUTER JOIN retorna todas as linhas da jun o mais uma linha para cada linha da tabela direita sem correspond ncia estendida com nulos na tabela esquerda Isto apenas uma conveni ncia da nota o porque poderia ser convertido em um LEFT OUTER JOIN trocando se a tabela direita pela tabela esquerda O FULL OUTER JOIN retorna todas as linhas da jun o mais uma linha para cada linha da tabela esquerda sem correspond ncia estendida com nulos na tabela direita mais uma linha da tabela direita sem correspond ncia estendida com nulos na tabela esquerda Para todos os tipos de JOIN exceto CROSS JOIN deve se escrever exatamente um entre ON condi o de jun o
105. a como uma op o de linha de comando do postgres Finalidade geral As op es A B c d D F name possuem o mesmo significado que t m para o postmaster Define o estilo padr o da data como European indicando que a regra dia precedendo o m s em vez de m s precedendo o dia deve ser usada para interpretar a entrada de datas amb guas e que o dia precede o m s em certos formatos de exibi o de data Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es 0 nome do arquivo Envia toda a sa da de depura o e de erros parao nome do arquivo Se o processo servidor es tiver executando sob o postmaster ent o esta op o ser ignorada e a stderr herdada do postmaster ser usada Ignora os ndices do sistema ao varrer atualizar as tuplas do sistema O comando REINDEX para as tabelas ndices do sistema requer que esta op o seja utilizada S Exibe a informa o de tempo e outras estat sticas ao final de cada comando til para efetuar medi es ou para definir o n mero de buffers S mem ria para ordena o Especifica a quantidade de mem ria a ser usada pelas ordena es e hashes internos antes de recorrer a arquivos tempor rios em disco O valor especificado em kilobytes sendo o valor padr o 512 kilobytes Observe que para uma consulta complexa diversas ordena es e ou hashes podem ser executados em paralelo podendo cada um utilizar o tanto de mem
106. a op o para for ar a solicita o Se a solicita o da senha n o for feita e se o servidor requerer autentica o por senha a tentativa de conex o vai falhar x expanded Ativa o modo formato de linha estendido Equivalente ao comando 1x X no psqlre N o l o arquivo de inicializa o psqlrc help Mostra a ajuda para os argumentos de linha de comando do psql 58 psql Funcionalidades avancadas Vari veis O psql fornece uma funcionalidade de substitui o de vari veis similar s dos comandos comuns da she11 do Unix Esta funcionalidade nova e n o muito sofisticada ainda mas existem planos para expandi la no futuro As vari veis s o simplesmente um par nome valor onde o valor pode ser uma cadeia de caracteres de qualquer comprimento Para definir uma vari vel usa se o meta comando do psql set testdb gt set foo bar define a vari vel foo com o valor bar Para usar o conte do da vari vel deve se preceder o nome por dois pontos e us la como argumento de qualquer comando de contrabarra testdb gt Necho foo bar Note Os argumentos do set est o sujeitos s mesmas regras de substitui o de qualquer outro co mando Portanto pode se construir refer ncias interessantes como 1set foo something e obter soft links ou variable variables do Perl e do PHP respectivamente Desafortunadamente ou afor tunadamente n o existe nenhuma maneira de se
107. a que consultam o banco de dados como o 1d mas n o as mensagens de erro Tip Para intercalar texto entre os resultados das consultas usa se qecho Xp Envia o buf fer de comando corrente para a sa da padr o Wpset par metro valor Este comando define op es que afetam a sa da das tabelas de resultado das consultas O par metro indica qual op o ser definida A sem ntica do valor depende do par metro As op es ajust veis de exibi o s o format Define o formato de sa da como unaligned n o alinhado aligned alinhado htm1 ou latex Abrevia es nicas s o permitidas O que equivale a dizer que uma letra basta O modo Unaligned escreve todos os campos da tupla em uma linha separados pelo separador de campos ativo no momento Pretende se com isso poder criar uma sa da que sirva de entrada para outro programa separada por tabula o por v rgula etc O modo Aligned a sa da de texto padr o intelig vel e agradavelmente formatada Os modos HTML e LaTeX produzem tabelas feitas para serem inclu das em documentos usando a linguagem de marca o correspon dente N o s o documentos completos Isto n o t o problem tico no HTML mas no LaTeX deve haver um inv lucro completo do documento border O segundo argumento deve ser um n mero Em geral quanto maior o n mero mais bordas e linhas a tabela ter mas isto depende do formato em particular No modo HTML ser
108. a representa o externa analogamente especificado usando a palavra chave comprimento_externo Este valor n o utilizado atualmente sendo tipicamente omitido assumindo o valor padr o que VARIABLE Para indicar que o tipo um array especifica se o tipo dos elementos do array usando a palavra chave ELEMENT Por exemplo para definir um array de inteiros de 4 bytes int4 especifica se ELEMENT int4 Mais detalhes sobre os tipos array s o mostrados abaixo Para indicar o delimitador a ser usado entre os valores na representa o externa dos arrays deste tipo o delimitador pode ser especificado como um caractere espec fico O delimitador padr o a v rgula Observe que o delimitador est associado com o tipo de elemento do array e n o com o pr prio array Um valor padr o pode ser especificado quando o usu rio desejar que as colunas com este tipo de dado tenham um valor padr o diferente de NULL Especifica se o padr o com a palavra chave DEFAULT Este tipo de padr o pode ser substitu do por um cl usula DEFAULT expl cita declarada na coluna Os argumentos opcionais fun o de envioe fun o de recep o n o s o usados atualmente sendo usualmente omitidos fazendo com que assumam o valor padr o que s o fun o de sa dae fun o de entrada respectivamente Estas fun es poder o ser ressuscitadas algum dia para es pecificar representa es bin rias inde
109. abela v lida por m vazia Tip O comando TRUNCATE uma extens o do PostgreSQL que fornece um mecanismo r pido para excluir todas as linhas de uma tabela DELETE Por padr o o DELETE exclui as linhas da tabela especificada e de todas as suas filhas Para atualizar somente a tabela especificada deve ser utilizada a cl usula ONLY E necess rio possuir acesso de escrita a uma tabela para poder modific la assim como acesso de leitura em todas as tabelas cujos valores s o lidos na condi o da cl usula WHERE Utiliza o Remover todos os filmes exceto os musicais DELETE FROM filmes WHERE tipo lt gt Musical SELECT FROM filmes cod titulo did data prod tipo duracao E a gt gt gt 4 gt UA501 West Side Story 105 1961 01 03 Musical 02 32 TC901 The King and I 109 1956 08 11 Musical 02 13 wWD101 Bed Knobs and Broomsticks 111 Musical 01 57 3 rows Esvaziar a tabela filmes DELETE FROM filmes SELECT FROM filmes cod titulo did data prod tipo duracao E 00 gt gt gt 4 gt 0 rows Compatibilidade SQL92 O SQL92 permite um comando DELETE posicionado DELETE FROM tabela WHERE URRENT OF cursor e onde cursor identifica um cursor aberto Cursores interativos no PostgreSQL s o
110. ada No modo iniciar start um novo postmaster lan ado O servidor inicia em segundo plano e a entrada padr o l de dev nul1 A sa da padr o e o erro padr o s o ambos adicionados a um arquivo de log se a op o 1 for usada ou s o redirecionados para a sa da padr o do pg ctl n o o erro padr o Se o arquivo de 1og n o for definido a sa da padr o do pg ctl deve ser redirecionada para um arquivo ou ser enviada para outro processo atrav s de um pipe como por exemplo para um programa para rota o de logs sen o o postmaster vai escrever sua sa da no terminal de controle do segundo plano e n o vai se desconectar do grupo de processo da shell No modo parar stop o postmaster que est executando no diret rio de dados especificado parado Tr s m todos diferentes de parada podem ser selecionados pela op o m O modo Smart inteligente aguarda todos os clientes se desconectarem Este o modo padr o O modo Fast r pido n o aguarda os clientes se desconectarem Todas as transa es ativas s o desfeitas rollback os clientes s o de sconectados for a e em seguida o servidor parado O modo Immediate imediato aborta todos os processor servidores sem executar uma parada limpa obrigando um processamento de recupera o ao reiniciar O modo reiniciar restart executa uma parada seguida por um in cio Permite mudar as op es de linha de comando do postmaster O modo recarr
111. ados se conectar porque o script criado pelo pg_dumpall cont m os comandos apropriados para criar e conectar aos bancos de dados salvos Consulte tamb m pg_dump psql Veja tamb m detalhes sobre as poss veis condi es de erro 37 pg_restore Name pg_restore restaura um banco de dados do PostgreSQL a partir de um arquivo gerado pelo pg_dump Synopsis pg restore a c C dnome bd farquivo de sa da Fformato i ndice JidJ Largquivo da listagem NI o I r 0 P nome da fun o R s S JI ttabela Tgatilho v x Xpalavra chave hhospedeiro pporta ll U nome do usu rio W arquivo de exporta o Descri o O pg restore um utilit rio para restaurar um banco de dados do PostgreSQL a partir de um arquivo gerado pelo pg dump em um dos formatos n o texto puro S o executados os comandos necess rios para criar novamente todos os tipos fun es tabelas ndices agrega es e operadores definidos pelo usu rio assim como os dados das tabelas Os arquivos de exporta o cont m informa es para o pg restore reconstruir o banco de dados mas tamb m permitem ao pg restore selecionar o que deve ser restaurado ou mesmo reordenar a restau rara o dos itens Os arquivos de exporta o s o projetados para serem port veis entre arquiteturas O pg restore pode operar de dois modos Se um nome de banco de dados for especificado o arquivo de exporta o restaurado diretamente no b
112. almente n o poss vel como no caso das atualiza es nas vis es Conseqiientemente os usu rios devem executar um comando UPDATE expl cito para atualizar os dados Os cursores somente podem ser usados dentro de transa es porque os dados por eles armazenados estendem se por muitas consultas dos usu rios Use o comando MOVE para mudar a posi o do cursor O comando DECLARE define um cursor Consulte os comando BEGIN COMMIT e ROLLBACK para obter mais detalhes sobre transa es Utiliza o O exemplo a seguir acessa uma tabela usando um cursor Definir e usar o cursor BEGIN WORK DECLARE liahona CURSOR FOR SELECT FROM filmes Buscar as 5 primeiras linhas do cursor liahona FETCH FORWARD 5 IN liahona cod titulo did data prod tipo duracao f DDD gt D0 gt 00 gt 00 000000000 00000 04 0 0 gt 0 gt 4 gt 0 gt 0 gt 0 gt 0 0020 4 gt 0 0 0 0 0 0 0 4 gt BL101 The Third Man 101 1949 12 23 Drama 01 44 BL102 The African Queen 101 1951 08 11 Romance 01 43 JL201 Une Femme est une Femme 102 1961 03 12 Romance 01 25 P_301 Vertigo 103 1958 11 14 Ac o 02 08 P_302 Becket 103 1964 02 03 Drama 02 28 Buscar a linha anterior FETCH BACKWARD 1 IN liahona cod titulo did data_prod tipo duracao o P_301 Vertigo 103 1958 11 14 Ac
113. aloca dos pelo postmaster ser o eliminados causando uma falha geral nos processos servidores iniciados pelo postmaster Notas Este script um hack mas durante estes muitos anos desde que foi escrito ningu m conseguiu desen volver uma solu o igualmente efetiva e port vel Como agora o postmaster pode se autolimpar n o prov vel que o ipcclean seja melhorado no futuro Este script faz pressuposi es sobre o formato da sa da do utilit rio ipes que podem n o ser verdadeira entre sistemas operacionais diferentes Portanto pode ser que n o funcione no seu sistema operacional 78 pg ctl Name pg ctl inicia p ra ou reinicia o servidor PostgreSQL Synopsis pg_ctl start w s D diret rio de dados nome do arquivo o op es p caminho pg ctistop W ss D diret rio de dados m s mart f ast i mmediate pg_ct1 restart w s D diret rio de dados m s mart f ast li mmediate o op es pg ctl reload s D diret rio de dados pg_ct1 status D diret rio de dados Descri o O pg ctl um utilit rio para iniciar parar ou reiniciar o postmaster o servidor PostgreSQL ou exibir o status de um postmaster ativo Embora o postmaster possa ser iniciado manualmente o pg ctl encapsula tarefas como redirecionar a sa da do 109 desconectar do terminal e do grupo de processo de maneira adequada al m de fornecer op es convenientes para uma parada control
114. anco de dados Sen o um script contendo os comandos SQL necess rios para reconstruir o banco de dados criado e escrito em um arquivo ou na sa da padr o semelhante aos scripts criados pelo pg dump no formato texto puro Algumas das op es que controlam a cria o do script s o portanto an logas s op es do pg_dump Obviamente o pg restore n o pode restaurar informa es que n o estejam presentes no arquivo de exporta o por exemplo se o arquivo de exporta o foi gerado usando a op o exportar dados como INSERT O pg restore n o poder importar os dados usando o comando COPY Op es O pg restore aceita os seguintes argumentos de linha de comando As formas longas das op es est o dispon veis em algumas plataformas apenas nome do arquivo exportado Especifica a localiza o do arquivo de exporta o a ser restaurado Se n o for especificado a entrada padr o usada a data only Importa somente os dados n o o esquema defini es dos dados 38 pg restore C clean Exclui drop os objetos do banco de dados antes de cri los C create Cria o banco de dados antes de restaur lo Quando esta op o est presente o banco de dados designado por d usado apenas para executar o comando CREATE DATABASE inicial Todos os dados s o restaurados no banco de dados cujo nome aparece no arquivo de exporta o d nome_bd dbname nome_bd Conecta ao nome_bde re
115. ancos de dados a adduser E permitido ao novo usu rio criar outros usu rios Nota na verdade isto faz do novo usu rio um superusu rio Esta op o n o tem um nome adequado A no adduser N o permitido ao novo usu rio criar outros usu rios ou seja o novo usu rio um usu rio normal e n o um superusu rio P pwprompt Se for fornecido o createuser solicita a senha do novo usu rio n o sendo necess rio caso n o se pretenda usar autentica o por senha 1 sysid uid Permite escolher uma identifica o do usu rio diferente do padr o Embora n o seja necess rio algumas pessoas gostam 10 createuser E encrypted Criptografa a senha do usu rio armazenada no banco de dados Se n o for especificado o padr o utilizado N unencrypted N o criptografa a senha do usu rio armazenada no banco de dados Se n o for especificado o padr o utilizado nome do usu rio Especifica o nome do usu rio do PostgreSQL a ser criado Este nome deve ser nico entre todos os usu rios do PostgreSQL Ser solicitado o nome e outras informa es se n o forem especificadas na linha de comando As op es h p e e s o passadas literalmente para o psql As op es u e w do psql tamb m est o dispon veis mas podem causar confus o neste contexto Sa das CREATE USER O usu rio foi criado com sucesso createuser creation of user nome do usu rio
116. ando que o postmaster n o foi encontrado Mostra somente os erros sem nenhuma mensagem informativa W Aguarda o in cio ou a parada terminar Espera no m ximo 60 segundos Este o padr o para a parada N o aguarda o in cio ou a parada terminar Este o padr o para o in cio e o re nicio Arquivos Se o arquivo postmaster opts default existir no diret rio de dados o conte do deste arquivo ser passado como op es para o postmaster a menos que seja substitu do pela op o o 80 pg_ctl Exemplos Iniciar o postmaster Para iniciar o postmaster pg_ctl start Exemplo de iniciar o postmaster bloqueando at que o postmaster esteja ativo pg_ctl w start Para iniciar o postmaster utilizando a porta 5433 e executando sem o fsync pode se usar pg_ctl o F p 5433 start Parar o postmaster pg_ctl stop p ra o postmaster A chave m permite controlar como o servidor vai parar Reiniciar o postmaster Praticamente equivale a parar o postmaster e inici lo novamente exceto que o pg_ctl salva e reutiliza as op es de linha de comando que foram passadas para a inst ncia executando anteriormente Para reiniciar o postmaster da forma mais simples poss vel pg ctl restart Para reiniciar o postmaster aguardando o t rmino da parada e da inicializa o pg ctl w restart Para reiniciar usando a porta 5433 e desativando o fsync ap s o rein cio pg ctl o F p 5433 restar
117. apenas para leitura DROP AGGREGATE Name DROP AGGREGATE remove uma fun o de agrega o definida pelo usu rio Synopsis DROP AGGREGATE Entradas nome nome tipo O nome de uma fun o de agrega o existente tipo O tipo de dado de entrada de uma fun o de agrega o existente ou se a fun o aceita qualquer tipo de dado de entrada Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es sobre tipos de dado Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR RemoveAggregat aggregate nome for type tipo does not exist Esta mensagem ocorre quando a fun o de agrega o especificada n o existe no banco de dados Descri o O comando DROP AGGR EGAT E remove todas as refer ncias a uma defini o de agrega o existente Para executar este comando o usu rio corrente deve ser o dono da agrega o DROP AGGREGATE Notas Use CREATE AGGREGATE para criar fun es de agrega o Utiliza o Remover a agrega o minha media para o tipo de dado int 4 DROP AGGREGATE minha media int4 Compatibilidade SQL92 N o existe o comando DROP AGGREGATE no SQL92 este comando uma extens o do PostgreSQL linguagem DROP DATABASE Name DROP DATABASE remove um banco de dados Synopsis DROP DATABASE nome Entradas nome O nome do banco
118. ar a ordena o entrar manualmente os campos de ordena o Editar no local dar um duplo clique no texto a ser modificado Excluir registros apontar para o registro pressionar a tecla Delete Incluir novos registros salvar a nova linha com um clique no bot o direito do mouse e Criar tabelas com um assistente e Renomear e excluir DROP tabelas 24 pgaccess Obter informa o sobre as tabelas incluindo o dono informa es sobre os campos e ndices Para as consultas o PgAccess pode e Definir editar e armazenar consultas definidas pelo usu rio Salvar o leiaute da vis o Armazenar consultas como vis es Executar com par metros opcionais entrados pelo usu rio como por exemplo select from faturas where ano parameter Ano das faturas e Ver o resultado de qualquer consulta de sele o Executar consultas de a o inclus o exclus o atualiza o e Construir consultas utilizando um construtor de consultas visual com suporte a arrastar amp soltar e ali s das tabelas Para as segii ncias o PgAccess pode e Definir novas inst ncias Inspecionar as inst ncias existentes Excluir Para as vis es o PgAccess pode e Defini las salvando as consultas como vis es V las podendo filtrar e ordenar e Desenvolver novas vis es Excluir drop vis es existentes Para as fun es o PgAccess pode Definir Inspecionar Excluir Para os relat
119. as para ON INSERT ON UPDATE e ON DELETE ou qualquer subconjunto destes comandos que for suficiente para atender as necessidades para substituir as a es de atualiza o na vis o por atualiza es apropriadas em outras tabelas Existe um problema quando se tenta utilizar regras condicionais para a atualiza o das vis es obri gat rio haver uma regra incondicional INSTEAD para cada a o que se deseja permitir na vis o Se a regra for condicional ou n o for INSTEAD ent o o sistema continuar rejeitando as tentativas de re alizar uma a o de atualiza o porque poder tentar realizar a a o sobre a tabela fict cia em alguns casos Se for desejado tratar todos os casos v lidos atrav s de regras condicionais pode se simplesmente adicionar uma regra incondicional DO INSTEAD NOTHING para garantir que o sistema sabe que nunca ser chamado para atualizar a tabela fict cia Em seguida devem ser criadas as regras condicionais como n o INSTEAD nos casos em que forem disparadas v o se adicionar s a es padr o INSTEAD NOTH ING Notas E necess rio possuir uma concess o para defini o de regras na tabela para poder definir uma regra para a tabela Use o comando GRANT REVOKE para conceder e revogar as permiss es E muito importante tomar cuidado para evitar as regras circulares Por exemplo embora qualquer uma destas duas defini es de regra seja aceita pelo PostgreSQL a consulta vai fazer com que
120. atilho Synopsis DROP TRIGGER nome ON tabela Entradas nome O nome de um gatilho existente tabela O nome da tabela Sa das DROP Mensagem retornada se o gatilho for removido com sucesso ERROR DropTrigger there is no trigger nome on relation tabela Esta mensagem ocorre se o gatilho especificado n o existe Descric o O comando DROP TRIGGER remove uma defini o de gatilho existente Para executar este comando o usu rio corrente deve ser o dono da tabela para a qual o gatilho est definido Exemplos Remover o gatilho se dist existe da tabela filmes DROP TRIGGER se dist existe ON filmes DROP TRIGGER Compatibilidade SQL92 N o existe o comando DROP TRIGGER no SQL92 SQL99 O comando DROP TRIGGER do PostgreSQL n o compat vel com o SQL99 No SQL99 os nomes dos gatilhos n o s o locais s tabelas portanto o comando simplesmente DROP TRIGGER nome Consulte tamb m CREATE TRIGGER DROP TYPE Name DROP TYPE remove um tipo de dado definido pelo usu rio Synopsis DROP TYPE nome do tipo Entradas nome do tipo O nome de um tipo existente Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR RemoveType type nome do tipo does not exist Esta mensagem ocorre quando o tipo especificado n o encontrado Descri o O comando DROP TYPE remove um tipo do usu rio dos cat logos do sistema
121. cam ao otimizador de consultas se mesclagem ordena o uma estrat gia de jun o utiliz vel e quais operadores devem ser usados para ordenar as duas classes de operando Os operadores de ordena o somente devem ser fornecidos para um operador de igualdade devendo fazer refer ncia aos operadores menor do que para os tipos de dado da esquerda e da direita respectivamente Se forem descobertas outras estrat gias de jun o consideradas pr ticas o PostgreSQL mudar o otimizador e o sistema de execu o para us las demandando especifica o adicional quando um operador for definido Felizmente a comunidade de pesquisa n o inventa novas estrat gias de jun o frequentemente e a generalidade adicionada por estrat gias de jun o definidas pelo usu rio n o foram consideradas como valendo a complexidade envolvida As op es RESTRICT JOIN ajudam o otimizador de consultas a estimar o tamanho dos resultados Se uma cl usula da forma minhas caixas descricao lt lt lt caixa 0 0 1 1 estiver presente na qualifica o ent o o PostgreSQL poder ter que estimar a fra o das inst ncias de minhas caixas que satisfazem a cl usula A fun o proc rest deve ser uma fun o registrada o que significa ter sido definida usando o comando CREATE FUNCTION que aceita argumentos do tipo de dado correto e que retorna um n mero de ponto flutuante O otimizador de consultas simplesmente chama esta fun o passando
122. ce criado em tabela tempor ria tamb m tempor rio A palavra LOCAL opcional Veja sob Compatibilidade nome da tabela O nome da tabela a ser criada nome da coluna O nome da coluna a ser criada na nova tabela tipo de dado INHI O tipo de dado da coluna Pode incluir especificadores de array Consulte o Guia do Usu rio para obter mais informa es sobre tipos de dado e sobre arrays DEFAULT express o_padr o A cl usula DEFAULT atribui um valor padr o para o dado da coluna em cuja defini o est presente O valor pode ser qualquer express o subconsultas e refer ncias cruzadas para outras colunas da mesma tabela n o s o permitidas O tipo de dado da express o padr o deve corresponder ao tipo de dado da coluna A express o utilizada em todas as opera es de inclus o que n o especificam valor para a coluna N o havendo valor padr o para a coluna ent o NULL torna se o valor padr o ERITS tabela ascendent E JOY A cl usula opcional INHERITS herda especifica uma lista de tabelas das quais a nova tabela herda automaticamente todas as colunas Se o mesmo nome de coluna existir em mais de uma tabela ascendente um erro gerado a menos que o tipo de dado das colunas seja o mesmo em todas as tabelas ascendentes Se n o houver conflito ent o as colunas duplicadas s o mescladas para formar uma nica coluna da nova tabela Se a lista de nomes de colunas da nova tabela cont m uma
123. cesso mais r pido O valor m nimo 1 somente um valor pode ser gerado de cada vez ou seja sem armazenamento em mem ria e este tamb m o valor padr o CREATE SEQUENCE CYCLE A palavra chave opcional CYCLE pode ser utilizada para permitir a sequ ncia reiniciar quando o valor max ou o valor min for atingido pela segiij ncia ascendente ou descendente respecti vamente Se o limite for atingido o pr ximo n mero gerado ser valor minou valor max respectivamente Sem a cl usula CYCLE ap s o limite ser atingido as chamadas fun o next val retornam um erro Sa das CREATE Mensagem retornada se o comando for executado com sucesso ti ys ROR Relation nome seg already exists A seqii ncia especificada j existe ti ys ROR DefineSequence MINVALUE in cio can t be gt MAXVALUE max O valor especificado para o in cio da sequ ncia est fora do intervalo td ys ROR DefineSequence START value in cio can t be lt MINVALUE min O valor especificado para o in cio da sequ ncia est fora do intervalo td DD ROR DefineSequence MINVALUE min can t be gt MAXVALUE max Os valores m nimo e m ximo est o inconsistentes Descric o O comando CREATE SEQUENCE cria um novo gerador de n meros seqiienciais no banco de dados em uso Este comando envolve a cria o e a inicializa o de uma tabela nova com uma nica
124. ciadas s o modificados certas a es s o real izadas nos dados das colunas desta tabela A cl usula ON DELETE especifica a a o a ser executada quando uma linha referenciada da tabela referenciada exclu da Da mesma maneira a cl usula ON UPDATE especifica a a o a ser executada quando uma coluna referenciada da tabela referenciada muda de valor Se a linha atualizada mas a coluna referenciada n o muda de valor nenhuma a o executada S o poss veis as seguintes a es para cada cl usula NO ACTION Gera um erro indicando que a exclus o ou a atualiza o criaria uma viola o de chave es trangeira Esta a a o padr o o ESTRICT O mesmo que NO ACTION CASCADE Exclui qualquer linha que fa a refer ncia linha exclu da ou atualiza o valor da coluna que faz refer ncia usando o novo valor da coluna referenciada respectivamente CREATE TABLE SET NULL Atribui nulo aos valores das colunas que fazem refer ncia SE DEFAULT Atribui o valor padr o s colunas que fazem refer ncia Se a coluna da chave prim ria atualizada frequentemente pode ser til adicionar um ndice s colunas da cl usula REFERENCES para que as a es NO ACTION CASCADE associadas s colunas da cl usula REFERENCES sejam executadas mais rapidamente DEFERRABLE OU NOT DEFERRABLE Estas cl usulas contro
125. ciar sem ambigiiidade uma coluna de agrupamento a menos que a refer ncia apare a dentro de uma fun o de agrega o A cl usula ORDER BY ORDER BY express o ASC DESC USING operador 1 Um item do ORDER BY pode ser o nome ou o n mero ordinal de uma coluna da sa da express o SELECT ou pode ser uma express o arbitr ria formada por valores da coluna de entrada No caso de haver ambigiiidade o nome no ORDER BY ser interpretado como o nome de uma coluna da sa da O n mero ordinal refere se posi o ordinal da esquerda para a direita da coluna do resultado Esta caracter stica torna poss vel definir uma ordena o baseada em uma coluna que n o possui um nome pr prio Nunca isto absolutamente necess rio porque sempre poss vel atribuir um nome a uma coluna do resultado usando a cl usula AS como no exemplo abaixo SELECT titulo data prod 1 AS newlen FROM filmes ORDER BY newlen Tamb m poss vel efetuar um ORDER BY por express es arbitr rias uma extens o ao SQL92 in cluindo campos que n o aparecem na lista de resultados do SELECT Portanto o seguinte comando v lido SELECT SELECT nome FROM distribuidores ORDER BY cod Uma limita o desta funcionalidade que uma cl usula ORDER BY aplicada ao resultado de uma con sulta com UNION INTERSECT ou EXCEPT pode apenas especificar um nome ou um n mero de coluna mas n o uma express o Ob
126. cion rio COMME ON RULE upd func IS Registra as atualiza es dos registros dos funcion rios COMME ON SEQUENCE seq func IS Gera a chave prim ria dos funcion rios COMME ON TABLE tbl func IS Cadastro dos funcion rios COMME ON TYPE tipo cn IS Suporte a n meros complexos COMME ON VIEW vis dep custo IS Vis o dos custos dos departamentos COMME ON COLUMN tb1l func id func IS Identificador do funcion rio COMME ON AGGREGATE agreg var double precision IS Calcula a vari ncia da amostra COMME ON FUNCTION func romano int IS Retorna o n mero em algarismos romanos COMME ON OPERATOR text text IS Realiza a interse o de dois textos COMME ON TRIGGER gat func ON tbl func IS Utilizado para integridade referencial Compatibilidade SQL92 N o existe o comando COMMENT no SQL92 COMMIT Name COMMIT efetiva a transa o corrente Synopsis COMMIT WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das COMMIT Mensagem retornada se a transa o for efetivada com sucesso NOTICE COMMIT no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando COMMIT efetiva a transa o sendo executada Todas as modifica es efetuadas pela transa o se tornam vis veis para os outros e existe a garantia de permanecerem se uma falha ocorrer Notas As palavras chave WORK e TRANSACTION s o in
127. codifica o multibyte Sem argumento este comando mostra a codifica o corrente Nf caracteres Define o separador de campos para a sa da de comando n o alinhada O padr o a barra vertical Consulte tamb m o pset para ver uma forma gen rica de definir as op es de sa da g nome do arquivol comando Envia o buffer de entrada de comando corrente para o servidor e opcionalmente salva a sa da em nome do arquivo ou envia a sa da para uma outra she11 do Unix para executar o comando Um g puro e simples virtualmente igual ao ponto e v rgula Um Ng com argumento uma alter nativa expressa para o comando Yo help ou 1h comando Fornece ajuda para a sintaxe do comando SQL especificado Se o comando n o for especificado ent o o psql ir listar todos os comandos para os quais a ajuda de sintaxe est dispon vel Se o comando for um asterisco ent o mostrada a ajuda de sintaxe para todos os comandos SQL Note Para simplificar a digita o os comandos constitu dos por v rias palavras n o necessitam estar entre ap strofos Portanto pode se digitar help alter table NH Ativa o formato HTML de sa da da consulta Se o formato HTML j estiver ativado retorna ao formato de texto alinhado padr o Este comando existe por compatibilidade e conveni ncia mas veja no pset outras defini es de op es de sa da Yi nome do arquivo Ler a entrada no arquivo nome do arqui
128. colunas de uma nica tabela Estes ndices funcionais podem ser utilizados para obter acesso r pido aos dados baseado em operadores que normalmente iriam requerer alguma transforma o para aplic los aos dados base O PostgreSQL implementa os m todos de acesso B tree R tree hash e GiST para os ndices O m todo de acesso B tree uma implementa o das B trees de alta concorr ncia de Lehman Yao O m todo de acesso R tree implementa R trees padr o utilizando o algoritmo de parti o quadr tica de Guttman O CREATE INDEX m todo de acesso hash uma implementa o das dispers es lineares de Litwin Os algoritmos utilizados s o mencionados apenas para informar que todos estes m todos de acesso s o inteiramente din micos n o necessitando de otimizac o peri dica como no caso de por exemplo m todos de acesso hash est ticos Quando a cl usula WHERE est presente um ndice parcial criado Um ndice parcial um ndice que cont m entradas apenas para uma parte da tabela geralmente uma parte mais interessante do que o resto da tabela Por exemplo havendo uma tabela contendo tanto pedidos faturados quanto n o faturados onde os pedidos n o faturados ocupam uma pequena fra o da tabela mas a parte mais consultada o desem penho pode ser melhorado criando se um ndice apenas para esta por o da tabela Uma outra aplica o poss vel a utiliza o da cl usula WHERE juntamente com UNI
129. cos de dados usando a mesma vari vel 74 initdb username nome_do_usu rio U nome do usu rio Especifica o nome do superusu rio do banco de dados Por padr o o nome do usu rio efetivo execu tando o initab N o importa realmente qual o nome do superusu rio mas deve se preferir manter o nome costumeiro postgres mesmo que o nome do usu rio do sistema operacional seja diferente pwprompt W Faz o initab solicitar a senha a ser dada ao superusu rio do banco de dados Se n o se pretende usar autentica o por senha isto n o tem import ncia Sen o n o ser poss vel usar autentica o por senha enquanto n o houver uma senha definida encoding codifica o E codifica o Seleciona a codifica o do banco de dados de gabarito Ser tamb m a codifica o padr o para todos os bancos de dados que vierem a ser criados a menos que seja substitu da por uma outra Para que a funcionalidade de codifica o possa ser usada esta deve ter sido habilitada em tempo de compila o quando tamb m pode ser selecionado o valor padr o para esta op o Outros par metros menos utilizados tamb m est o dispon veis L diret rio Especifica onde o initdb deve encontrar os seus arquivos de entrada para inicializar o sistema de banco de dados Normalmente n o necess rio Se for necess rio especificar a localiza o ser informado explicitamente noclean n Por padr o quando o initdb dete
130. das est o descritas detalhadamente no comando SELECT Sa das Consulte os comandos CREATE TABLE e SELECT para obter um sum rio das mensagens de sa da poss veis Descri o O comando SELECT INTO cria uma nova tabela e a preenche com os dados produzidos por uma consulta Os dados n o s o retornados para o cliente como acontece em um comando SELECT normal As colunas da nova tabela possuem os mesmos nomes e tipos de dado das colunas de sa da do comando SELECT Note O comando CREATE TABLE AS funcionalmente equivalente ao comando SELECT INTO CREATE TABLE AS a sintaxe recomendada porque SELECT INTO N o padr o De fato esta forma do SELECT INTO n o est dispon vel no PL pgSQL e no ecpg porque os dois interpretam a cl usula INTO de forma diferente Compatibilidade O SQL92 utiliza o comando SELECT INTO para representar a sele o de valores para dentro de vari veis escalares do programa hospedeiro em vez de criar uma nova tabela Esta a mesma utiliza o encontrada no PL pgSQL e no ecpg A utiliza o no PostgreSQL do comando SELECT INTO para representar a cria o de uma tabela hist rica melhor utilizar o comando CREATE TABLE AS para esta finalidade nos programas novos O comando CREATE TABLE AS tamb m n o padr o mas tem menos chance de gerar confus o SET Name SET muda um par metro de tempo de execug
131. de 8 bytes e neste caso as segii ncias utilizam aritm tica para o tipo regular integer faixa de valores de 2147483648 a 2147483647 Quando o valor para cache maior do que 1 cada servidor utiliza sua pr pria mem ria para armazenar os n meros pr viamente alocados Os n meros armazenados em mem ria mas n o utilizados pela sess o atual s o perdidos ocasionando uma seqii ncia cheia de buracos Utiliza o Criar uma sequ ncia ascendente chamada serial come ando por 101 CREATE SEQUENCE serial START 101 Selecionar o pr ximo valor desta seqii ncia SELECT nextval serial CREATE SEQUENCE nextval Utilizar esta seqii ncia em um comando INSERT INSERT INTO distribuidores VALUES nextval serial nada Atualizar o valor da seqii ncia ap s executar o comando COPY FROM BEGIN COPY distribuidores FROM arquivo entrada SELECT setval serial max id FROM distribuidores D E Compatibilidade SQL92 O comando CREATE SEQUENCE uma extens o do PostgreSQL linguagem N o existe o comando CREATE SEQUENCE no SQL92 CREATE TABLE Name CREATE TABLE define uma nova tabela Synopsis TABLE nome_da_tabela CREATE LOCAL TEMPORARY TEMP nome da coluna tipo de dado restri o de tabela INHERITS
132. de agrega o caso existam s o computadas atrav s de todas as linhas que pertencem a cada grupo produzindo um valor separado para cada grupo enquanto que SELECT sem GROUP BY uma fun o de agrega o produz um nico valor computado atrav s de todas as linhas selecionadas Quando GROUP BY est presente n o v lido uma express o de sa da do SELECT fazer refer ncia a uma coluna n o agrupada exceto dentro de uma fun o de agrega o porque pode haver mais de um valor poss vel retornado para uma coluna n o agrupada Um item do GROUP BY pode ser o nome de uma coluna da entrada o nome ou o n mero ordinal de uma coluna da sa da express o SELECT ou pode ser uma express o arbitr ria formada pelos valores das colunas da entrada No caso de haver ambigiiidade o nome no GROUP BY vai ser interpretado como o sendo o nome de uma coluna da entrada e n o como o nome de uma coluna da sa da A cl usula HAVING A condi o opcional HAVING possui a forma geral HAVING express o booleana onde expres o booleana a mesma que foi especificada para a cl usula WHERE HAVING especifica uma tabela agrupada derivada pela elimina o das linhas agrupadas que n o satis fazem a express o booleana HAVING diferente de WHERE WHERE filtra individualmente as linhas antes da aplica o do GROUP BY enquanto HAVING filtra os grupos de linhas criados pelo GROUP BY Cada coluna referenciada na express o booleana deve referen
133. de dados Em seguida o servidor aut nomo deve ser parado e o postmaster reiniciado Como esta provavelmente a nica situa o em que a maioria das pessoas usa um servidor aut nomo algumas observa es devem ser feitas Inicie o servidor com um comando como postgres D SPGDATA O P meu banco de dados Forne a o caminho correto para a rea de banco de dados na op o D ou assegure se de que a vari vel de ambiente PGDATA est declarada Tamb m deve ser especificado o nome do banco de dados em particular em que se deseja trabalhar Pode ser executado qualquer comando SQL e n o apenas o REINDEX Tenha em mente que o servidor aut nomo trata o caractere de nova linha como t rmino da entrada do comando n o existe a intelig ncia sobre o ponto e v rgula como existe no psql Para um comando prosseguir atrav s de v rias linhas deve se digitar uma contrabarra precedendo cada caractere de nova linha exceto da ltima Tamb m n o existe nenhuma das conveni ncias do processamento da linha lida n o existe o hist rico dos comandos por exemplo Para sair do servidor digite EOF geralmente control D Consulte a p gina de refer ncia do postgres para obter mais informa es REINDEX Utiliza o Reconstruir os ndices da tabela minha tabela REINDEX TABLE minha tabela Reconstruir um nico ndice REINDEX IND
134. de dados existente a ser removido Sa das DROP DATABASE Mensagem retornada se o comando for executado com sucesso DROP DATABASE cannot be executed on the currently open database N o poss vel estar conectado ao banco de dados que se deseja remover Conecte se ao banco de dados template1 ou a qualquer outro banco de dados e execute este comando novamente DROP DATABASE may not be called in a transaction block Antes de executar este comando deve se concluir a transa o em andamento Descri o O comando DROP DATABASE remove as entradas do cat logo para um banco de dados existente e remove o diret rio contendo os dados Somente pode ser executado pelo dono do banco de dados normalmente o usu rio que o criou O comando DROP DATABASE n o pode ser desfeito Use com prud ncia DROP DATABASE Notas Este comando n o pode ser executado enquanto conectado ao banco de dados de destino Portanto mais conveniente utilizar o script dropdb que uma envolt ria em torno deste comando Consulte o comando CREATE DATABASE para obter informa es sobre como criar bancos de dados Compatibilidade SQL92 O comando DROP DATABASE uma extens o do PostgreSQL linguagem N o existe este comando no SQL92 DROP FUNCTION Name DROP FUNCTION remove uma fun o definida pelo usu rio Synopsis DROP FUNCTION nome tipo 1 Entradas nome O nome de uma fun o exis
135. deste Manual de Refer ncia se prop em a fornecer um resumo completo e formal dos respec tivos assuntos Mais informa es sobre a utiliza o do PostgreSQL sob forma narrativa de tutorial ou de exemplos podem ser encontradas em outras partes do conjunto de documentos do PostgreSQL Veja as refer ncias cruzadas listadas em cada p gina de refer ncia As informa es contidas no Manual de Refer ncia tamb m est o dispon veis no formato man pages do Unix Projeto PostgreSQL Br O centro de informa es para os usu rios brasileiros Traduzido por Halley Pacheco de Oliveira C mara Municipal do Rio de Janeiro Revisado por Diogo de Oliveira Biazus Ikono 1 http pgsglbr querencialivre rs gov br 2 mailto halleypo yahoo com br 3 mailto diogo Wikono com br Comandos SQL Esta parte cont m informa es de refer ncia para os comandos SQL suportados pelo PostgreSQL Por SQL entenda se a linguagem SQL de modo geral informa es sobre a conformidade e a compatibili dade de cada comando com rela o ao padr o podem ser encontradas nas respectivas p ginas de refer n cia ABORT Name ABORT aborta a transa o corrente Synopsis ABORT WORK TRANSACTION Entradas Nenhuma Sa das ROLLBACK Mensagem retornada se o comando for executado com sucesso NOTICE ROLLBACK no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comand
136. devido restri o do comprimento das tuplas Uma tabela n o pode ter o mesmo nome de uma tabela do cat logo do sistema As cl usulas opcionais de restri o especificam as restri es ou testes que as linhas novas ou modificadas devem satisfazer para a opera o de inclus o ou de altera o ser completada Uma restri o uma regra DEFAULT express o padr o restri o de coluna MATCH PAI coluna_ CREATE TABLE com nome um objeto SQL que ajuda a definir conjuntos v lidos de valores estabelecendo limites nos resultados das opera es de inclus o exclus o e atualiza o realizadas na tabela Existem duas formas para definir restri es restri es de tabela e restri es de coluna A restri o de coluna definida como parte da defini o da coluna A restri o de tabela n o est presa a uma coluna em particular podendo abranger mais de uma coluna Toda restri o de coluna tamb m pode ser escrita como uma restri o de tabela a restri o de coluna somente uma nota o conveniente no caso da restri o afetar apenas uma coluna Par metros LOCAL TEMPORARY OU LOCAL TEMP Se for especificado a tabela criada como uma tabela tempor ria Tabelas tempor rias s o auto maticamente eliminadas no final da sess o Uma tabela permanente com o mesmo nome caso exista n o ser vis vel na sess o corrente enquanto a tabela tempor ria existir Todo ndi
137. do usado con correntemente O pg_dump n o bloqueia os outros usu rios que porventura estejam acessando o banco de dados leitura ou grava o 29 pg_dump Op es O pg dump aceita os seguintes argumentos de linha de comando As formas longas das op es est o dispon veis apenas em algumas plataformas nome bd Especifica o nome do banco de dados a ser exportado a data only Exporta somente os dados n o o esquema defini es dos dados Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore b blobs Exporta os objetos bin rios grandes blobs C clean Gera comandos para excluir drop os objetos do banco de dados antes de cri los Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg_restore C create Inicia a sa da por um comando para criar o pr prio banco de dados e se conectar ao banco de dados criado Com um script assim n o importa em qual o banco de dados se est conectado antes de executar o script Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg_restore d inserts Exporta os dados como comandos INSERT em vez de COPY tornando a importa o muito lenta por m os arquivos exportados tornam se mais port veis para outros SGBDR
138. dos e diversas funcionalidades semelhantes s da she11 para facilitar a cria o de scripts e automatizar uma grande variedade de tarefas Descric o Conex o a um banco de dados O psql um aplicativo cliente do PostgreSQL comum Para se conectar a um banco de dados necess rio saber o nome do banco de dados o nome da m quina e o n mero da porta do servidor e o nome de usu rio a ser usado para a conex o O psql pode ser informado sobre estes par metros atrav s das op es de linha de comando d h p e U respectivamente Se for encontrado um argumento que n o perten a a nenhuma op o este ser interpretado como o nome do banco de dados ou o nome do usu rio se o nome do banco de dados for fornecido Nem todas estas op es s o requeridas os padr es se aplicam Se for omitido o nome da m quina ent o o psql se conecta atrav s do soquete do dom nio Unix ao servidor na m quina local O n mero padr o para a porta determinado em tempo de compila o Desde que o servidor de banco de dados use o mesmo padr o n o ser necess rio especificar a porta na maioria dos casos O nome de usu rio padr o o nome do usu rio do Unix como tamb m o nome do banco de dados padr o Observe que n o poss vel se conectar a qualquer banco de dados com qualquer nome de usu rio O administrador de banco de dados informa as permiss es de acesso concedidas Para evitar a digita o podem ser definidas as vari veis d
139. dr o antes de serem analisadas ou executadas Para especificar no in cio do programa usa se a chave a Se for definido como queries o psql exibe todos os comandos antes de envi los para o servidor A op o para isto e 59 psql ECHO_HIDDEN Quando esta vari vel est definida e um comando de contrabarra consulta o banco de dados a con sulta mostrada previamente Desta forma pode se estudar o PostgreSQL internamente e fornecer funcionalidades semelhantes nos pr prios programas Se a vari vel for definida como noexec a consulta apenas exibida sem ser enviada para o servidor para executar ENCODING A codifica o multibyte corrente do cliente Se n o estiver configurado para usar caracteres multi byte esta vari vel ir conter sempre SQL ASCIT HISTCONTROL Se esta vari vel estiver definida como ignorespace as linhas que come am por espa o n o s o salvas na lista de hist rico Se estiver definida como ignoredups as linhas id nticas linha anterior do hist rico n o s o salvas O valor ignoreboth combina estas duas op es Se n o estiver definida ou se estiver definida com um valor diferente destes acima todas as linhas lidas no modo interativo s o salvas na lista de hist rico Note Esta funcionalidade foi plagiada do bash HISTSIZE O n mero de comandos a serem armazenados no hist rico de comandos O valor padr o 500 Note Esta funcionalidade foi pla
140. e FETCH RELATIVE 0 FROM cursor O PostgreSQL atualmente n o suporta esta no o na verdade o valor zero reservado para indicar que todas as linhas devem ser buscadas equivalendo a especificar a palavra chave ALL Se a palavra chave RELATIVE for usada o PostgreSQL assume que o usu rio deseja o comportamento do SQL92 e retorna esta mensagem de erro Descri o O comando FETCH permite o usu rio buscar linhas usando um cursor O n mero de linhas buscadas especificado pelo Se o n mero de linhas remanescentes no cursor for menor do que ent o somente as linhas dispon veis s o buscadas Colocando se a palavra chave ALL no lugar do n mero faz com que todas as linhas restantes no cursor sejam buscadas As inst ncias podem ser buscadas para frente FORWARD e para tr s BACKWARD O padr o para frente Tip permitido especificar n meros negativos para o contador de linhas Um n mero negativo equivale a inverter o sentido das palavras chave FORWARD e BACKWARD Por exemplo FORWARD 1 O mesmo que BACKWARD 1 FETCH Notas Observe que as palavras chave FORWARD e BACKWARD s o extens es do PostgreSQL A sintaxe do SQL92 tamb m suportada especificando se a segunda forma do comando Veja abaixo para obter detalhes sobre quest es de compatibilidade A atualiza o de dados pelo cursor n o suportada pelo PostgreSQL porque mapear as atualiza es do cursor de volta para as tabelas base ger
141. e cem neste arquivo As linhas podem ser movidas e tamb m podem virar coment rio colocando se um no seu in cio N orig order Restaura os itens na ordem original de exporta o Por padr o o pg dump ir exportar os itens em uma ordem conveniente para o pg dump e depois salvar o arquivo de exporta o em uma ordem de OID modificada Esta op o substitui a da ordem de OID 0 oid order Restaura os itens na ordem de OID Por padr o o pg dump ir exportar exporta os itens em uma ordem conveniente para o pg dump e depois salvar o arquivo de exporta o em uma ordem de OID modificada Esta op o imp e a estrita ordem de OID O no owner Impede qualquer tentativa de restaurar o dono original do objeto O dono dos objetos ser o usu rio conectado ao banco de dados P nome da fun o function nome da fun o Especifica o procedimento ou a fun o a ser restaurada rearrange Restaura os itens na ordem modificada de OID Por padr o o pg dump ir exportar os itens em uma ordem conveniente para o pg dump e depois salvar o arquivo de exporta o em uma ordem de OID modificada A maior parte dos objetos restaurada na ordem de OID mas alguns elementos por exemplo regras e ndices s o restaurados no fim do processo sem respeitar os OIDs Esta a op o padr o R no reconnect Durante a restaura o do arquivo de exporta o o pg restore usualmente necessita reconectar ao banco d
142. e Por esta raz o recomenda se associar sempre um coment rio intelig vel a todos os objetos Estes podem ser vistos atrav s do comando lo list Observe que este comando sutilmente diferente da fun o 1o import do servidor porque atua como o usu rio local no sistema de arquivos local em vez do usu rio e sistema de arquivos do servidor Note Veja a descri o da vari vel LO TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes NG 12st Mostra a lista contendo todos os objetos grandes do PostgreSQL armazenados atualmente no banco de dados juntamente com os coment rios fornecidos para os mesmos Xlo_unlink loid Exclui do banco de dados o objeto grande com o OID igual a loid 51 psql Tip Use 110_1ist para descobrir os OIDs dos objetos grandes Note Veja a descri o da vari vel LO TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes Yo fnome do arquivol comando Salva os resultados das pr ximas consultas no arquivo nome do arquivo ou envia os pr ximos resultados para uma outra she11 do Unix para executar o comando Se nenhum argumento for especificado a sa da da consulta ser enviada para stdout Os resultados das consultas incluem todas as tabelas respostas dos comandos e as notifica es obtidas do servidor de banco de dados assim como a sa da dos v rios comandos de contrabarr
143. e NOT NULL conforme foi explicado anteriormente A forma ALTER COLUMN est em conformidade total O SQL92 especifica algumas funcionalidades adicionais para o comando ALT s o diretamente suportadas pelo PostgreSQL ALTER TABLE tabela DROP COLUMN E que ainda n o Ea coluna R Remove a coluna da tabela Na implementa o atual para remover uma coluna existente a tabela deve ser recriada e recarregada CREATE TABLE temp AS SELECT did DROP TABLE distribuidores CREATE TABLE distribuidores did w ECIMAL 3 DEFAU cidade VARCHAR 40 NOT NULL INSERT INTO distribuidores SELEC DROP TABLE temp FROM temp cidade FROM distribuidores As cl usulas para mudar o nome das tabelas colunas ndices e seq ncias s o extens es do PostgreSQL ao SQL92 ALTER USER Name ALTER USER altera a conta de um usu rio do banco de dados Synopsis ALTER USER nome do usu rio WITH op o 1 onde op o pode ser ENCRYPTED UNENCRYPTED PASSWORD senha CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER VALID UNTIL data hora Entradas nome_do_usu rio O nome do usu rio cuja conta est sendo alterada senha A nova senha a ser utilizada para esta conta ENCRYPTED UNENCRYPTED Es
144. e ambiente PGDATABASE PGHOST PGPORT PGUSER com os valores apropriados Se a conex o n o puder ser estabelecida por algum motivo por exemplo privil gios insuficientes o postmaster n o est executando no servidor etc o psql retorna uma mensagem de erro e termina Entrando com comandos No modo normal de opera o o psql disponibiliza um prompt com o nome do banco de dados ao qual est conectado seguido pela cadeia de caracteres gt Por exemplo psql testdb Welcome to psql the PostgreSQL interactive terminal 45 psql Type Ncopyright for distribution terms h for help with SOL commands X for help on internal slash commands Xg or terminate with semicolon to execute query q to quit testdb gt No prompt o usu rio pode digitar comandos SQL Normalmente as linhas de entrada s o enviadas para o servidor quando o caractere ponto e v rgula que termina o comando encontrado Um caractere de fim de linha n o termina um comando Portanto os comandos podem ocupar v rias linhas para clareza Se o comando for enviado e executado sem erro o resultado do comando ser exibido na tela Sempre que um comando executado o psql tamb m procura por eventos de notifica o ass ncronos gerados pelo LISTEN e NOTIFY Meta comandos do psq Qualquer coisa entrada no psql que comece por uma contrabarra Y n o entre ap strofos um meta comando do psql que processado pelo pr prio psql Est
145. e chave estrangeira Outro uso poss vel deste mecanismo copiar o conte do de um arquivo para um campo Primeiro deve se carregar o arquivo na vari vel e depois proceder coforme mostrado testdb gt set content X cat meu_arquivo txt N testdb gt INSERT INTO minha tabela VALUES content Um problema poss vel com esta abordagem que o meu arquivo txt pode conter ap strofos que devem ser precedidos por uma contrabarra para que n o causem erro de sintaxe quando a inser o for processada o que poderia ser feito atrav s do programa sed testdb gt Mset content N sed e s WV g lt meu arquivo txt N Observe o n mero correto de contabarras 6 Isto pode ser visto desta maneira Ap s o psql ter analisado esta linha vai enviar sed e s NNN g lt meu arquivo txt paraa shell shell far suas pr prias coisas dentro das aspas e vai executar o sed com os argumentos e e s V g Quando o sed fizer a an lise vai substituir as duas contrabarras por uma nica e ent o vai fazer a substitui o Talvez em um algum ponto tenha se pensado que timo todos os comandos Unix usarem o mesmo caractere de escape escape character Isto tudo ainda ignora o fato de se ter que colocar contrabarra na frente de contrabarra tamb m porque as constantes de texto do SQL tamb m est o sujeitas a certas interpreta es Neste caso melhor preparar o arquivo externamente Como os dois pontos podem apar
146. e dados v ria vezes com nomes de usu rio diferentes para definir o dono correto dos objetos criados Se isto n o for desej vel por exemplo se a interven o manual for necess ria para cada reconex o esta op o pro be o pg restore requisitar reconex es uma requisi o de conex o em modo texto puro n o conectado ao banco de dados feita emitindo o comando connect do psql Entretanto esta op o um instrumento bastante rudimentar porque faz o pg restore perder a in forma o sobre o dono a menos que seja usada a op o X use set session authorization S schema only Restaura somente o esquema defini es dos dados sem os dados Os valores das seq ncias s o substitu dos 40 pg restore S nome do usu rio superuser nome do usu rio Especifica o nome do superusu rio a ser usado para desativar os gatilhos e ou definir o dono dos elementos do esquema Por padr o o pg restore usa o nome do usu rio corrente se este for um superusu rio t tabela table tabela Restaurar o esquema dados da tabela apenas T gatilho trigger gatilho Restaurar a defini o do gatilho apenas Vy verbose Especifica o modo verboso X no privileges no acl Pro be a restaura o dos privil gios de acesso comandos GRANT REVOKE X use set session authorization use set session authorization Normalmente se ao restaurar um arquivo de exporta o for necess rio trocar o usu
147. e o anterior Este exemplo cria um tipo de objeto grande e o utiliza na defini o de uma tabela CREATE TYPE objeto grande INPUT lo filein OUTPUT lo fileout CREATE TYPE INTERNALLENGTH VARIABLE CREATE TABLE tbl grandes objetos id int4 obj objeto grande Compatibilidade Este comando CREATE TYPE uma extens o do PostgreSQL Existe um comando CREATE TYPE no SQL99 que bastante diferente nos detalhes Consulte tamb m CREATE FUNCTION DROP TYPE Guia do Programador do PostgreSQL CREATE USER Name CREATE USER define uma nova conta de usu rio do banco de dados Synopsis CREATE USER nome do usu rio WITH op o onde op o pode ser SYSID uid ENCRYPTED UNENCRYPTED PASSWORD senha CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER IN GROUP nome do grupo VALID UNTIL data hora Entradas nome do usu rio O nome do usu rio uid A cl usula SYSID pode ser utilizada para especificar o identificador do usu rio sendo criado no PostgreSQL N o de forma alguma necess rio que este identificador corresponda ao identificador do usu rio no UNIX mas algumas pessoas optam por manter o mesmo n mero Se n o for especificado ser utilizado por padr o o maior valor atribu do a um identificador de
148. e o comando DROP DATABASE e o aplicativo psql para ver as causas poss veis Descri o O dropdb remove do PostgreSQL um banco de dados existente Para executar este comando necess rio ser um superusu rio ou o dono do banco de dados O dropdb um script envolt rio que usa o comando SQL DROP DATABASE atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nada em especial sobre remover bancos de dados desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq Utiliza o Para remover o banco de dados demo do servidor de banco de dados padr o dropdb demo DROP DATABASE Para remover o banco de dados demo usando o servidor na m quina eden porta 5000 com confirma o e vendo o comando utilizado dropdb p 5000 h eden i e demo Database demo will be permanently deleted Are you sure y n y DROP DATABASE demo DROP DATABASE 14 droplang Name droplang remove uma linguagem procedural do PostgreSQL Synopsis droplang lopedes_de_conex o nome_da_linguagem nome do bd droplang op es de conex o listl nome do bd Entradas O droplang aceita os seguintes argumentos de linha de comando nome da linguagem Especifica o nome da linguagem de
149. ecer nos comandos a seguinte regra se aplica Se a vari vel n o est definida a sequ ncia de caracteres dois pontos nome n o mudada De qualquer maneira pode se colocar uma contrabarra antes dos dois pontos para proteg lo de interpreta o A sintaxe de dois pontos para vari veis o padr o SQL para as linguagens embutidas como o ecpg A sintaxe de dois pontos para array slices e transforma es de tipo s o extens es do PostgreSQL da o conflito Prompt Os prompts mostrados pelo psql podem ser personalizados conforme a prefer ncia As tr s vari veis PROMPT1 PROMPT2 PROMPT3 cont m cadeias de caracteres e segii ncias especiais de escape que de screvem a apar ncia do prompt O prompt 1 o prompt normal que mostrado quando o psql requisita um novo comando O prompt 2 mostrado quando mais entrada aguardada durante a entrada do co mando porque o comando n o foi terminado por um ponto e v rgula ou um ap strofo n o foi fechado O prompt 3 mostrado quando se executa um comando SQL COPY e espera se que as tuplas sejam digitadas no terminal 62 psql O valor da respectiva vari vel de prompt exibido literalmente exceto quando um sinal de percent agem 9 encontrado Dependendo do caractere seguinte certos outros textos s o substitu dos As substitui es definidas s o A M O nome completo do hospedeiro do servidor de banco de dados com o nome do dom nio ou
150. edirecionamento da entrada em teoria garante produzir exatamente a mesma sa da que seria produzida se tudo tivesse sido digitado manualmente F field separator separador Usa separador como o separador de campos Equivalente ao Npset fieldsepou ao Nf 56 psql h host hostname Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra usado como sendo o diret rio do soquete do dom nio Unix H html Ativa a sa da tabular HTML Equivalente ao pset format html ou ao comando MH 1 list Lista todos bancos de dados dispon veis e depois termina Outras op es que n o forem de conex o s o ignoradas Semelhante ao comando interno list 0 output nome do arquivo Envia a sa da de todos os comandos para o arquivo nome do arquivo Equivalente ao comando Vo p port porta Especifica a porta TCP IP ou por omiss o o soquete do dom nio local Unix onde o postmaster est aguardando as conex es Por padr o o valor da vari vel de ambiente PGPORT ou se n o estiver definida a porta especificada durante a compila o usualmente 5432 P pset atribui o Permite especificar op es de impress o no estilo Npset pela linha de comando Observe que aqui o nome e o valor devem estar separados pelo sinal de igual em vez de espa o Portanto para definir o formato de sa da como LaTeX deve se escrever P format latex Especifica que o psql deve trabalha
151. egar reload simplesmente envia o sinal SIGHUP para o postmaster fazendo com que este releia os arquivos de configura o postgresqgl conf pg hba conf etc Permite mudar as op es do arquivo de configura o que n o requerem um rein cio completo para ter efeito O modo status verifica se o postmaster est executando e se estiver exibe o PID e as op es de linha de comando que foram usadas para cham lo 79 pg_ctl Op es D diret rio de dados Especifica a localiza o dos arquivos de banco de dados Se for omitido a vari vel de ambiente PGDATA usada l nome do arquivo Apensa a sa da do 1og do servidor ao nome do arquivo Se o arquivo n o existir criado A umask definida como 077 n o permitindo o acesso ao arquivo de log pelos outros usu rios por padr o m modo Especifica o modo de parar shutdown O modo pode ser smart fast ou immediate ou a primeira letra de um desses tr s 0 op es Especifica op es a serem passadas diretamente para o postmaster Os par metros s o geralmente envoltos por aspas ou ap strofos para garantir que s o passados como um grupo p caminho Especifica a localiza o do arquivo execut vel postmaster Por padr o o postmaster pego do mesmo diret rio do pg ctl ou se falhar do diret rio de instala o N o necess rio usar esta op o a menos que esteja se fazendo algo diferente do usual e recebendo uma mensagem de erro inform
152. el em pgtclsh Consulte tamb m petclsh Guia do Programador do PostgreSQL descri o da 1ibpgtc1 telsh wish 69 vacuumdb Name vacuumdb limpa e analisa um banco de dados do PostgreSQL Synopsis vacuumdb op es de conex o d nome ba full f verbose v analyze z table tabela colunal vacuumdb op es de conex o all a full f verbose v analyze z Entradas O vacuumdb aceita os seguintes argumentos de linha de comando dnome bd dbname nome bd Especifica o nome do banco de dados a ser limpo ou analisado a all Limpa analisa todos os bancos de dados f full Executa a limpeza completa full Vy verbose Exibe informa es detalhadas durante o processamento Z analyze Calcula estat sticas a serem utilizadas pelo otimizador ttabela coluna table tabela coluna l Limpa ou analisa somente a tabela Os nomes das colunas s podem ser especificados juntamente com a op o analyze Tip Se forem especificadas as colunas a serem analisadas provavelmente ser necess rio fazer o escape dos par nteses para a shell 70 vacuumdb O vacuumdb tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra con
153. ente um script de importa o necessita reconectar v rias vezes como usu rios diferentes para especificar o dono original dos objetos Esta op o um instrumento bas tante rudimentar porque faz o pg_dump perder a informa o sobre o dono a menos que seja usada a op o X use set session authorization Uma das raz es poss veis para n o se desejar a reconex o durante a importa o o acesso ao banco de dados requerer interven o manual por exemplo senhas Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg_restore schema only Exporta somente o esquema defini es dos dados sem os dados S nome do usu rio superuser nome do usu rio Os scripts e os arquivos de exporta o gerados pelo pg dump necessitam do privil gio de supe rusu rio em certos casos como desativar gatilhos ou definir o dono dos elementos do esquema Esta op o especifica o nome do usu rio a ser usado nestes casos ttabela table tabela Exporta os dados da tabela apenas V verbose Especifica o modo verboso X no privileges no acl Impede gerar os privil gios de acessos comandos GRANT REVOKE X use set session authorization use set session authorization Normalmente se o script modo texto puro gerado pelo pg_dump necessita trocar o usu rio corrente do banco de dados por exemplo para definir o dono correto do
154. er 6 145402 TABLE species records postgres 7 145402 ACL species records 8 145416 TABLE ss old postgres 9 145416 ACL ss old 10 145433 TABLE map resolutions postgres 11 145433 ACL map resolutions 12 145443 TABLE hs old postgres 13 145443 ACL hs old Ponto e v rgula s o delimitadores de coment rios e os n meros no in cio das linhas referem se aos iden tificadores interno do arquivo de exporta o atribu dos a cada item As linhas do arquivo podem ser transformadas em coment rio exclu das e reordenadas Por exemplo 10 145433 TABL 2 145344 TABL 4 145359 TABLI 6 145402 TABLE species records postgres 8 145416 TABLE ss old postgres map resolutions postgres species postgres PE dd ta nt_header postgres poderia ser usado como entrada para o pg_restore e somente restauraria os itens 10 e 6 nesta ordem pg_restore L arqexp list arqexp file Hist rico O utilit rio pg_restore apareceu pela primera vez no PostgreSQL 7 1 Consulte tamb m pg_dump pg_dumpall psql Guia do Administrador do PostgreSQL 44 psdl Name psql terminal interativo do PostgreSQL Synopsis psql op es nome bd nome usu rio Sum rio O psql um cliente do PostgreSQL em modo terminal Permite digitar os comandos interativamente envi los para o PostgreSQL e ver os resultados Alternativamente a entrada pode vir de um arquivo Adicionalmente possui um certo n mero de meta coman
155. er usado para iniciar e terminar o postmaster com seguran a e conforto 92 postmaster As op es n o funcionam no FreeBSD nem no OpenBSD Use o c em seu lugar Esta uma falha destes sistemas operacionais uma vers o futura do PostgreSQL disponibilizar uma forma de contornar este problema caso n o seja corrigido Utiliza o Para iniciar o postmaster em segundo plano usando os valores padr o nohup postmaster gt logfile 2 gt amp 1 lt dev null amp Para iniciar o postmaster usando uma porta espec fica postmaster p 1234 Este comando inicia o postmaster se comunicando atrav s da porta 1234 Para se conectar a este postmas ter usando o psql deve se executar psql p 1234 ou definir a vari vel de ambiente PGPORT export PGPORT 1234 psql Par metros de tempo de execug o nomeados podem ser definidos usando se um destes estilos postmaster c sort_mem 1234 postmaster sort mem 1234 As duas formas substituem o que estiver definido para sort_mem em postgresql conf Observe que os sublinhados nos nomes dos par metros podem ser escritos na linha de comando com o caractere sub linhado ou o trago dash Tip Exceto para experimentos de curta durac o provavelmente uma pr tica melhor editar as defini es no arquivo postgresql conf do que depender das chaves da linha de comando para definir os par metros 93
156. es comandos s o o que fazem o psql interessante para a administra o ou para a edi o de scripts Os meta comandos s o usualmente chamados de coman dos de barra ou de contrabarra O formato do comando psql a contrabarra seguida imediatamente pelas letras do comando e depois pelos argumentos Os argumentos s o separados das letras do comando e entre si por qualquer n mero de caracteres de espa o Para incluir caracteres de espa o em um argumento deve se coloc los entre ap strofos Para incluir um ap strofo neste tipo de argumento deve se preced lo por uma contrabarra Qualquer coisa entre ap strofos est sujeita s substitui es no estilo C para o An nova linha t tabula o d gitos Vod gitose Voxd gitos o caractere com o c digo decimal octal ou hexadecimal informado Se o argumento n o entre ap strofos come ar por dois pontos este ser considerado como sendo uma vari vel e o valor desta vari vel ser tomado como o argumento Os argumentos entre crases s o considerados como sendo uma linha de comando a ser passada para a shell A sa da do comando com o caractere de nova linha final removido tomada como o argumento As segii ncias de escape 1 acima tamb m se aplicam s crases Alguns comandos recebem como argumento o nome de um identificador SQL como o nome de uma tabela Estes argumentos seguem as regras de sintaxe do SQL com rela o s aspas um identificad
157. especificado as linhas retornam na ordem que o sistema considera mais f cil de gerar Veja A cl usula ORDER BY SELECT As consultas SELECT podem ser combinadas usando os operadores UNION INTERSECT e EXCEPT Use par nteses se for necess rio para determinar a ordem destes operadores O operador UNION computa a cole o das linhas retornadas pelas consultas envolvidas As linhas dupli cadas s o eliminadas a n o ser que ALL seja especificado Veja A cl usula UNION O operador INTERSECT computa as linhas que s o comuns s duas consultas interse o As linhas duplicadas s o eliminadas a n o ser que ALL seja especificado Veja A cl usula INTERSECT O operador EXCEPT computa as linhas que s o retornadas pela primeira consulta mas que n o s o re tornadas pela segunda consulta As linhas duplicadas s o eliminadas a n o ser que ALL seja especificado Veja A cl usula EXCEPT A cl usula FOR UPDATE permite ao comando SELECT realizar o bloqueio exclusivo das linhas sele cionadas A cl usula LIMIT permite que retorne para o usu rio apenas um subconjunto das linhas produzidas pela consulta Veja A cl usula LIMIT necess rio possuir o privil gio SELECT na tabela para poder ler seus valores Consulte os comandos GRANT REVOKE A cl usula FROM A cl usula FROM especifica uma ou mais tabelas de origem para o SELECT Se m ltiplas tabelas de origem forem especificadas o resultado ser conceit
158. essando uma nica linha da tabela aleatoriamente a ordem f sica dos dados da tabela n o importante Entretanto havendo uma tend ncia para acessar alguns dados mais do que outros se existir um ndice que agrupa estes dados haver benef cio se o comando CLUSTER for utilizado Outra situag o em que o comando CLUSTER til s o os casos em que se usa o ndice para acessar v rias linhas da tabela Se for solicitada uma faixa de valores indexados de uma tabela ou um nico valor indexado possuindo muitas linhas que correspondam a este valor o comando CLUSTER ajuda porque quando o ndice identifica a p gina da primeira linha todas as outras linhas estar o provavelmente nesta mesma p gina reduzindo o acesso ao disco e acelerando a consulta Existem duas maneiras de se agrupar os dados A primeira com o comando CLUSTER que reordena a tabela original na ordem do ndice especificado Este procedimento pode ser lento para tabelas grandes porque as linhas s o lidas da tabela na ordem do ndice e se a tabela n o estiver ordenada as linhas estar o em p ginas aleat rias fazendo uma p gina do disco ser lida para cada linha movida O PostgreSQL possui um cache mas a maioria das tabelas grandes n o cabem no cache Outra maneira de agrupar a tabela usar SELECT lista de colunas INTO TABLE nova tabela FROM nome da tabela ORDER BY lista de colunas que usa o c digo de ordena o do PostgreSQ
159. esso ERROR Relation vis o already exists Este erro ocorre se a vis o especificada existir no banco de dados OTICE Attribute nome da coluna has an unknown type A vis o ser criada possuindo uma coluna de tipo desconhecido se n o for especificado Por exemplo o seguinte comando gera esta advert ncia CREATE VIEW vista AS SELECT Al Mundo NOTICE Attribute column T has an unknown type h relation creation anyway Proceeding wit enquanto o comando abaixo n o gera esta advert ncia CREATE VIEW vista AS SELECT text Al Mundo CREATE VIEW Descric o O comando CREATE VIEW define uma vis o de uma tabela A vis o n o fisicamente materializada Em vez disso uma regra automaticamente gerada para realizar o retorno dos dados da consulta Notas Atualmente as vis es s o apenas para leitura o sistema n o permite inclus o atualiza o ou exclus o em uma vis o poss vel obter o efeito de uma vis o atualiz vel criando se regras que troquem as inclus es na vis o por a es apropriadas em outras tabelas Para mais informa es consulte o comando CREATE RULE Use o comando DROP VIEW para excluir vis es Utiliza o Criar uma vis o consistindo de todos os filmes de com dia CREATE VIEW comedias AS SE ECT x FROM filmes WHERE tipo Com dia
160. ete do dom nio Unix no qual o postmaster est aguardando as conex es dos aplicativos clientes UNIX SOCKET DIRECTORY diret rio Normalmente o padr o tmp mas pode ser mudado em tempo de compila o l Ativa as conex es seguras usando SSL SSL TRUE A op o i tamb m requerida Deve ter sido compilado com SSL habilitado para ser poss vel o uso desta op o N num max conex es Define o n mero m ximo de conex es de clientes aceitas por este postmaster MAX CONNECTIONS num max conex es Por padr o este valor 32 mas pode ser definido t o alto quanto o sistema operacional suportar Observe que a op o B deve ser pelo menos o dobro da op o N Veja a discuss o sobre os recursos do sistema requeridos para a conex o de um grande n mero de clientes no Guia do Administrador 0 op es extras As op es no estilo linha de comando especificadas nas op es extras s o passadas para todos os processos servidores come ando por este postmaster Consulte o postgres para ver as possibili dades Se a cadeia de caracteres contendo a op o contiver espa os toda a cadeia de caracteres deve vir entre ap strofos 90 postmaster p porta Especifica a porta TCP IP ou o soquete do dom nio local Unix onde o postmaster est aguardando as conex es dos aplicativos cliente PORT porta Por padr o o valor da vari vel de ambiente PGPORT ou se PGPORT n o estiver definida o valor estabelecido d
161. etir a informa o no log Todos os dados s o escritos no disco Consulte o Guia do Administrador do PostgreSQL para obter mais informa es sobre o WAL Somente os superusu rios podem executar o comando CHECKPOINT A utiliza o deste comando durante uma opera o normal n o esperada Consulte tamb m Guia do Administrador do PostgreSQL Compatibilidade O comando CHECKPOINT uma extens o do PostgreSQL linguagem CLOSE Name CLOSE fecha o cursor Synopsis CLOSE cursor Entradas cursor O nome do cursor aberto a ser fechado Sa das CLOS D4 Mensagem retornada se o cursor for fechado com sucesso NOTICE PerformPortalClose portal cursor not found Esta advert ncia exibida quando o cursor n o est declarado ou se j tiver sido fechado Descri o O comando CLOSE libera os recursos associados a um cursor aberto Ap s o cursor ser fechado n o permitida nenhuma opera o posterior sobre o mesmo O cursor deve ser fechado quando n o for mais necess rio Um fechamento impl cito executado para todos os cursores abertos quando a transa o terminada pelo comando COMMIT ou pelo comando ROLLBACK Notas O PostgreSQL n o possui um comando expl cito OPEN cursor o cursor considerado aberto ao ser declarado Use o comando DECLARE para declarar um cursor Utiliza o Fechar o cursor cur emp CLOSE cur emp Compatibilidade
162. etornada se o comando for executado com sucesso Descri o O comando COMMENT armazena um coment rio sobre um objeto do banco de dados Os coment rios podem ser facilmente acessados atrav s dos comandos dd d e 11 do psql Outras interfaces de COMMENT usu rio podem acessar os coment rios utilizando as mesmas fun es nativas usadas pelo psq1 que s o obj description ecol_description Para modificar um coment rio basta executar novamente o comando COMMENT para o mesmo objeto Somente um nico coment rio armazenado para cada objeto Para excluir um coment rio escreva NULL no lugar do texto O coment rio automaticamente exclu do quando o objeto exclu do Deve ser observado que n o existe atualmente nenhum mecanismo de seguran a para os coment rios qualquer usu rio conectado ao banco de dados pode ver todos os coment rios dos objetos do banco de dados embora somente um superusu rio possa modificar coment rios de objetos que n o lhe pertencem Portanto n o coloque informa es confidenciais nos coment rios Utiliza o Adicionar um coment rio tabela minha tabela COMMENT ON minha tabela IS Esta tabela minha Alguns outros exemplos COMME ON DATABASE bd desenv IS Banco de dados de desenvolvimento COMME ON INDEX idx func id IS Garante a unicidade do identificador do fun
163. f Contents ALTER USER 00 a o A a ar E E a 1 ANALYZE EN EENEN R rta 1 BEGIN E CE A E A E ia add ros ld A E E ec E A de 1 CHECKPOINT neasa a E E A E E E ESS 1 CLOSE sena E AE E EE E E EN E E E E E E 1 CEUSTER cti dis 1 COMMENT e ele de de 1 COMME ocasion iia ia Mundos daria Ns SAP AE AE A E ua E Na dos done NEAS 1 COPA a SEN ENE E A ds apa OSE 1 CREATE AGGREGATE ses ee aee eio e aaae aee ada do E S EAEE e Naga E E EES ESS ENS 1 CREATE CONSTRAINT TRIGGER se a E E E E E E T 1 CREATE DATABASE cari A ei 1 CREATE FUNCTION ed 1 CREATE GROUP csi tao il ira e 1 CREATE INDEX TAE E EE EE E a 1 CREATE LANGUAGE nieteens ekek ra pE a EAE EE ado E E E EEE EEE rras 1 CREATE OPERATO Round e es e S E EE E E E O E T E E atadas 1 CREATE RULE 00000 as 1 CREATE SEQUENCE 000 lia iia 1 CREATE TABLE naa pasao posi SS Danas Rima haa a a Osa SG UNO adan 1 CREATE TABLE AS uste a 1 CREATE TRIGGER erate coso dastociicid dactilar loli cd eiii id 1 CREATE TYPE ar ee r e Ere oo E E io iii decai 1 CREATE USER curia ios 1 CREATE VIE Weinstein airis 1 DECLARE E EE is 1 DELE TE uu io ii AA dani 1 DROP AGGREGATE heeii otaona nen rar rE EEEE na paa AGE ES SEDA E EEEE rE EEEa eiS 1 DROP DATABASE ini ains 1 DROP FUNCTION cocine TTE 1 DROP GROUP iistcicnosiono e r tias fases db iso us siendo sda sister id ido Duda ad dieses Eo E peso 1 DROP INDEX iria sodas 1 DROP LANGUAGE coi inte 1 DROP OPERATOR E EEEE STEE 1 DROP RULE cocido iio bd 1 DROP SEQUENCE oikia a rinit
164. failed Aconteceu algum erro O usu rio n o foi criado Se houver uma condi o de erro a mensagem de erro do servidor ser exibida Consulte o comando CREATE USER e o aplicativo psql para ver as causas poss veis Descri o O createuser cria um novo usu rio do PostgreSQL Somente os superusu rios usu rios com o usesuper definido na tabela pg shadow podem criar novos usu rios do PostgreSQL portanto o createuser deve ser executado por algu m que seja um superusu rio do PostgreSQL Ser um superusu rio tamb m implica na capacidade de n o ser afetado pelas verifica es de permiss o de acesso do banco de dados portanto o privil gio de superusu rio deve ser concedido criteriosamente O createuser um script envolt rio que usa o comando SQL CREATE USER atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nada em especial sobre criar usu rios desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq 11 createuser Utiliza o Para criar o usu rio joel no servidor de banco de dados padr o createuser joel Is the new user allowed to create databases y n n Shall the new user be allowed to create more new users y n n CREATE USER Criar o mesmo usu rio joe
165. ficar usando o psql LISTEN virtual NOTIFY virtual Asynchronous NOTIFY virtual from backend with pid 8448 received Compatibilidade SQL92 N o existe o comando NOTIFY no SQL92 REINDEX Name REINDEX reconstr i ndices corrompidos Synopsis REINDEX TABLE DATABASE INDEX nome FORCE Entradas TABLE Reconstr i todos os ndices da tabela especificada DATABASE Reconstr i todos os ndices do sistema do banco de dados especificado Os ndices das tabelas dos usu rios n o s o inclu dos INDEX Reconstr i o ndice especificado nome O nome da tabela banco de dados ou ndice a ser reindexado FORCE For a a reconstru o dos ndices do sistema Sem esta palavra chave o comando REINDEX pula os ndices do sistema que n o est o marcados como inv lidos FORCE irrelevante para o comando REINDEX INDEX ou para reindexar ndices do usu rio Sa das REINDEX Mensagem retornada se a tabela for reindexada com sucesso REINDEX Descric o O comando REINDEX utilizado para reconstruir ndices corrompidos Embora na teoria nunca deve haver esta necessidade na pr tica os ndices podem se tornar corrompidos devido a erros de programa o ou falhas nos equipamentos O comando REINDEX fornece um m todo de recupera o Se houver a suspeita de que um ndice de uma tabela do usu rio est corro
166. formativas podendo ser omitidas Use o ROLLBACK para desfazer a transa o COMMIT Utiliza o Para tornar todas as modifica es permanentes COMMIT WORK Compatibilidade SQL92 O SQL92 somente especifica as duas formas COMMIT COMMIT WORK Fora isso a compatibilidade total COPY Name COPY copia dados entre arquivos e tabelas Synopsis COPY BINARY tabela WITH OIDS FROM nome do arquivo stdin USING DELIMITERS delimitador WITH NULL AS cadeia de caracteres nula COPY BINARY tabela WITH OIDS TO nome do arquivo stdout USING DELIMITERS delimitador WITH NULL AS cadeia de caracteres nula Entradas BINARY Altera o comportamento da formata o dos campos fazendo todos os dados serem escritos ou lidos no formato bin rio em vez de texto As op es DELIMITERS e WITH NULL n o s o pertinentes para o formato bin rio tabela O nome de uma tabela existente WITH OIDS Especifica a c pia do identificador interno do objeto OID para cada linha nome do arquivo O nome do arquivo de entrada ou de sa da no Unix junto com o caminho absoluto stdin Especifica que a entrada vem do aplicativo cliente stdout Especifica que a sa da vai para o aplicativo cliente delimitador O caractere que separa os campos dentro de cada linha do arquivo cadeia de caracteres nula 4 66 A cadeia de caracteres que represe
167. giada do bash HOST O hospedeiro do servidor de banco de dados ao qual se est conectado E definida toda vez que se conecta a um banco de dados inclusive na inicializa o mas a defini o n o pode ser removida IGNOREEOF Se n o estiver definida o envio de um caractere EOF usualmente Control D para uma sess o in terativa do psql termina o aplicativo Se estiver definida com um valor num rico este n mero de caracteres EOF s o ignorados antes que o aplicativo termine Se a vari vel estiver definida mas n o tiver um valor num rico o padr o 10 Note Esta funcionalidade foi plagiada do bash LASTOID O valor do ltimo oid afetado retornado por um comando INSERT ou lo insert Esta vari vel somente garantida como v lida at que o resultado do pr ximo comando SQL tenha sido mostrado LO TRANSACTION Se for usada a interface de objeto grande do PostgreSQL para armazenar os dados que n o cabem em uma tupla todas as opera es devem estar contidas em um bloco de transa o Consulte a doc 60 ON psql umentac o da interface de objetos grandes para obter mais informac es Como o psql n o tem maneira de saber se existe uma transa o em andamento quando chamado um de seus coman dos internos Nlo export Nlo import Vlo unlink este precisa tomar alguma decis o arbi tr ria Esta a o pode ser desfazer ro11 back alguma transa o que esteja em andamento efeti var esta t
168. greSQL sempre utiliza o modo de bloqueio menos restritivo quando poss vel O comando LOCK TABLE usado nos casos onde se necessita de um modo de bloqueio mais restritivo Os bloqueios dos SGBDR utilizam a seguinte terminologia EXCLUSIVE Um bloqueio exclusivo impede a concess o de outros bloqueios do mesmo tipo Nota O modo ROW EXCLUSIVE n o segue esta conven o de nome perfeitamente porque compartilhado no n vel de tabela exclusivo apenas com rela o s linhas espec ficas que est o sendo atualizadas SHARE Um bloqueio compartilhado permite que outros tamb m obtenham o mesmo tipo de bloqueio mas impede que o bloqueio EXCLUSIVE correspondente seja concedido ACCESS Bloqueia o esquema da tabela ROW Bloqueia linhas individualmente Por exemplo suponha que um aplicativo processe uma transa o no n vel de isolamento READ COM MITTED e precise garantir a persist ncia dos dados da tabela durante a transa o Para conseguir esta persist ncia pode se obter o modo de bloqueio SHARE na tabela antes de realizar a consulta Este pro cedimento impede altera es de dados concorrentes e garante que as opera es de leitura posteriores na tabela acessam os dados no estado atual porque o modo de bloqueio SHARE conflita com qualquer modo de bloqueio ROW EXCLUSIVE necess rio para escrever O comando LOCK TABLE nome IN SHARE LOCK MODE aguarda at que todas as opera es de escrita concorrentes termi
169. h pid 8448 received Compatibilidade SQL92 N o existe o comando LISTEN no SQL92 LOAD Name LOAD carrega ou recarrega um arquivo de biblioteca compartilhada Synopsis LOAD nome arquivo Descri o Carrega um arquivo de biblioteca compartilhada no espa o de endere amento do servidor PostgreSQL Se o arquivo tiver sido carregado anteriormente o mesmo descarregado primeiramente Este comando til para descarregar e recarregar um arquivo de biblioteca compartilhada que foi mudado ap s ter sido carregado pelo servidor Para usar a biblioteca compartilhada suas fun es devem ser declaradas pelo comando CREATE FUNCTION O nome do arquivo especificado da mesma forma que os nomes das bibliotecas compartilhadas no comando CREATE FUNCTION em particular pode se confiar no caminho de procura e na adi o au tom tica das extens es de nomes de arquivos das bibliotecas compartilhadas do sistema padr o Consulte o Guia do Programador para obter mais detalhes Compatibilidade O comando LOAD uma extens o do PostgreSQL Consulte tamb m CREATE FUNCTION Guia do Programador do PostgreSQL LOCK Name LOCK bloqueia explicitamente uma tabela Synopsis LOCK TABLE nome LOCK TABLE nome IN modo de bloqueio MODE onde modo de bloqueio um entre ACCESS SHARE ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXC
170. hados _ Veja a seg o sobre as vari veis do psql para obter detalhes Embora possa ser definida qualquer vari vel para fazer qualquer coisa que se deseje o psql trata diversas vari veis como sendo especiais Elas est o documentadas na se o sobre vari veis Note Este comando totalmente distinto do comando SQL SET 54 psql E Alterna a exibi o do cabe alho contendo o nome das colunas e do rodap contendo o n mero de linhas Este comando equivalente ao Apset tuples only sendo fornecido por conveni ncia VT op es de tabela Permite especificar op es a serem colocadas na tag table no modo de sa da tabular HTML Este comando equivalente ao 1pset tableattr op es de tabela iw fnome do arquivol comando Escreve o buf fer de comando corrente no arquivo nome do arquivo ou envia para o comando Unix comando atrav s de um pipe Xx Alterna o modo estendido de formato de linha Sendo assim equivalente ao pset expanded z padr o Produz uma lista contendo todas as tabelas do banco de dados juntamente com suas permiss es de acesso Se um argumento for fornecido este ser considerado como sendo uma express o regular limitando a lista s tabelas correspondentes test gt Mz Access permissions for database test Relation Access permissions minha tabela 1 row r Joe arwR group staf ar Deve ser lido da seguinte maneira e r PUBLIC p
171. hamado em modo interativo a partir da she11 o usu rio pode entrar com comandos e os re sultados s o exibidos na tela mas em uma forma que mais til para os desenvolvedores do que para os usu rios finais Deve se notar que executar o servidor em modo monousu rio n o muito apropriado para a depura o do servidor porque n o vai acontecer nenhuma comunica o entre processos e bloqueio genu nos Ao executar o servidor aut nomo o usu rio da sess o ser definido como o usu rio com o identificador 1 Este usu rio n o necessita existir portanto o servidor aut nomo pode ser usado para recuperar manual mente certos tipos de danos acidentais dos cat logos do sistema Poderes impl citos de superusu rio s o concedidos ao usu rio com identificador igual a 1 no modo aut nomo Op es Quando o postgres iniciado pelo postmaster herda todas as op es definidas para este Adicionalmente op es espec ficas do postgres podem ser passadas pelo postmaster usando a chave o Pode se evitar digitar a maior parte destas op es usando um arquivo de configura o Consulte o Guia do Administrador para obter detalhes Algumas op es seguras tamb m podem ser definidas pelo cliente ao se conectar de um modo dependente do aplicativo Por exemplo se a vari vel de ambiente PGOPTIONS 85 postgres estiver definida ent o os clientes baseados na 1ibpq passam esta cadeia de caracteres para o servidor que vai interpret l
172. i algumas poucas limita es Ao exportar uma nica tabela ou no formato texto puro o pg dump n o trata objetos grandes Os objetos grandes devem ser exportados em sua inteireza usando um dos formatos bin rios de exporta o Ao exportar somente os dados o pg dump gera comandos para desativar os gatilhos das tabelas do usu rio antes de inserir os dados e comandos para reativ los ap s os dados terem sido inseridos Se a restaura o for interrompida no meio os cat logos do sistema podem ficar em um estado errado Exemplos Para exportar um banco de dados pg dump meu bd gt db out Para importar este banco de dados psql d database f db out Para exportar um banco de dados chamado meu bd que cont m objetos grandes para um arquivo tar pg dump Ft b meu bd gt bd tar 34 pg_dump Para importar este banco de dados com os objetos grandes para um banco de dados existente chamado novo_bd pg_restore d novo_bd bd tar Hist rico O utilit rio pg_dump apareceu pela primeira vez no Postgres95 vers o 0 02 Os formatos de sa da n o texto puro foram introduzidos no PostgreSQL vers o 7 1 Consulte tamb m pg_dumpall pg restore psql Guia do Administrador do PostgreSQL 35 pg dumpall Name pg dumpall extrai todos os bancos de dados do PostgreSQL para um arquivo script Synopsis pg dumpall c clean g globals only h hospedeiro p porta U nome do usu rio
173. ibui o padr o do PostgreSQL mas n o as linguagens fornecidas por terceiros Embora as linguagens de programa o do servidor possam ser adicionadas diretamente usando v rios comandos SQL recomenda se o uso do createlang porque este realiza v rias verifica es e muito mais f cil de usar Consulte o comando CREATE LANGUAGE para obter mais informa es Notas Use o droplang para remover uma linguagem O createlang um script envolt rio que chama o psql v rias vezes Se as coisas estiverem dispostas de uma maneira que seja requerida uma senha para se conectar a senha ser solicitada v rias vezes Utiliza o Para instalar a linguagem p1tc1 no banco de dados templatel createlang pltcl templatel createuser Name createuser define uma nova conta de usu rio do PostgreSQL Synopsis createuser op es nome do usu rio Entradas h host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es e echo Exibe os comandos que o createuser gera e envia para o servidor q quiet N o exibe a resposta d createdb permitido ao novo usu rio criar bancos de dados D no createdb N o permitido ao novo usu rio criar b
174. id da tabela para garantir que os OIDs na tabela realmente identificam unicamente uma linha mesmo ap s o contador recome ar Evite assumir que os OIDs s o nicos entre tabelas se for necess rio um identificador nico para todo o banco de dados use uma combina o do tableoid OID da tabela com o OID da linha para esta finalidade prov vel que nas vers es futuras do PostgreSQL existam contadores OID separados para cada tabela ent o ser necess rio e n o opcional incluir o tableoid para ter se um identificador nico para todo o banco de dados Tip O uso de wITHOUT OIDS n o recomendado para tabelas sem chave prim ria porque sem um OID e sem uma chave de dados nica fica dif cil identificar uma linha espec fica O PostgreSQL cria automaticamente um ndice para cada restri o de unicidade e de chave prim ria para garantir a sua unicidade Portanto n o necess rio criar um ndice expl cito para as colunas da chave prim ria Consulte o comando CREATE INDEX para obter mais informa es O padr o SQL92 especifica que as restri es CHECK de colunas podem referenciar apenas a coluna qual se aplica somente restri es CHECK de tabelas podem fazer refer ncias a v rias colunas O Post greSQL n o imp e esta restri o as restri es de tabela e de colunas s o tratadas da mesma maneira As restri es de unicidade e de chave prim ria n o s o herdadas na implementa o atual tor
175. ide to SQL por Groff and Weinberg Conectar ao Servidor de Banco de Dados Pode se conectar ao banco de dados atrav s de EXEC SQL CONNECT TO nome bd onde o nome do banco de dados n o escrito entre ap strofos Antes da vers o 2 1 0 o nome do banco de dados tinha que vir entre ap strofos Tamb m poss vel especificar o nome do servidor e a porta no comando de conex o A sintaxe nome bd feservidor porta ou lt tcp unix gt postgresql servidor porta nome bd op es Comandos Em geral os comandos SQL aceitos por outros aplicativos como o psql podem ser embutidos no c digo C Abaixo est o alguns exemplos de como fazer Criar Tabela EXEC SQL CREATE TABLE foo number int4 ascii char 16 EXEC SQL CREATE UNIQUE index numl on foo number EXEC SQL COMMIT Incluir EXEC SQL INSERT INTO foo number ascii VALUES 9999 doodad EXEC SQL COMMIT Excluir EXEC SQL DELETE FROM foo WHERE number 9999 EXEC SQL COMMIT Sele o de uma nica linha EXEC SQL SELECT foo INTO FooBar FROM tablel WHERE ascii doodad 22 Seleg o usando Cursor EXEC SQL DECLARE foo_bar CURSOR FOR SELECT number ascii FROM foo ORDER BY ascii EXEC SOL FETCH foo bar INTO FooBar DooDad EXEC
176. ifica o Especifica o esquema de codifica o de caracteres a ser usado neste banco de dados nome bd Especifica o nome do banco de dados a ser criado O nome deve ser nico entre todos os bancos de dados do PostgreSQL desta instala o O padr o criar o banco de dados com o mesmo nome do usu rio atual do sistema operacional createdb descri o Especifica opcionalmente um coment rio a ser associado com o banco de dados criado As op es h p U We s o passadas literalmente para o psql As op es D T e E s o convertidas em op es do comando SQL CREATE DATABASE subjacente consulte este comando para obter mais informa es sobre estas op es Sa das CREATE DATABASE O banco de dados foi criado com sucesso createdb Database creation failed A cria o do banco de dados falhou createdb Comment creation failed Database was created O coment rio descri o para o banco de dados n o p de ser criado mas o banco de dados foi criado Pode ser usado agora o comando SQL COMMENT ON DATABASE para criar o coment rio Se houver uma condi o de erro a mensagem de erro do servidor ser exibida Consulte o comando CREATE DATABASE e o aplicativo psql para ver as causas poss veis Descri o O createdb cria um banco de dados novo do PostgreSQL O usu rio que executa este comando se torna o dono do banco de dados O createdb um script envolt rio que usa o c
177. implicitamente definido que sempre inclui todos os usu rios Observe que qualquer usu rio em particular possui a soma dos privil gios concedidos diretamente para o mesmo mais os privil gios concedidos para qualquer grupo do qual seja membro mais os privil gios concedidos para PUBLIC Os usu rios fora o criador do objeto n o possuem nenhum privil gio de acesso ao objeto a menos que o criador conceda as permiss es N o existe nenhuma necessidade de se conceder privil gios ao criador do objeto porque o criador automaticamente possui todos os privil gios O criador pode entretanto decidir revogar alguns de seus pr prios privil gios por motivo de seguran a Observe que esta capacidade de conceder e revogar privil gios inerente ao criador n o podendo ser perdida O direito de eliminar o objeto da mesma forma inerente ao criador n o podendo ser concedido ou revogado Os privil gios poss veis s o SELECT Permite consultar qualquer coluna SELECT da tabela vis o ou segii ncia especificada Tamb m permite utilizar o comando COPY FROM INSERT Permite incluir novas linhas INSERT na tabela especificada Tamb m permite utilizar o comando COPY TO UPDATE Permite modificar os dados de qualquer coluna UPDATE da tabela especificada O comando SELECT FOR UPDATE tamb m requer este privil gio al m do privil gio SELECT Para as sequ ncias este privil gio permite o uso de nextva
178. inar a transa o Utiliza o Para iniciar uma transa o BEGIN WORK Compatibilidade SQL92 O comando BEGIN uma extens o do PostgreSQL linguagem N o existe o comando BEGIN expl c ito no SQL92 o in cio de uma transa o sempre impl cito e termina pelo comando COMMIT ou pelo comando ROLLBACK Note Muitos sistemas de banco de dados relacionais oferecem a funcionalidade de auto efetiva o autocommit por conveni ncia Lembre se que a palavra chave BEGIN utilizada para uma finalidade diferente no SQL embutido Deve se ter muito cuidado com rela o sem ntica da transa o ao se portar aplicativos de banco de dados O SQL92 requer que SERIALIZABLE seja o n vel de isolamento padr o das transa es CHECKPOINT Name CHECKPOINT for a um ponto de controle no log de transa o Synopsis CHECKPOINT Descri o A grava o pr via do registro no log Write Ahead Logging WAL coloca periodicamente um ponto de controle checkpoint no log de transa o Para ajustar o intervalo autom tico do ponto de controle consulte as op es de configura o em tempo de execu o CHECKPOINT SEGMENTS e CHECKPOINT TIMEOUT O comando CHECKPOINT for a um ponto de controle imediato ao ser executado sem aguardar o ponto de controle pr definido Um ponto de controle um ponto na segii ncia do log de transa o no qual todos os arquivos de dados foram atualizados para refl
179. ios bancos de dados Se NOCREATEDB for especificado nega se ao usu rio a permiss o para criar bancos de dados Se esta cl usula for omitida NOCREATEDB ser utilizado por padr o CREATEUSER NOCREATEUSER Estas cl usulas determinam se permitido ou n o o usu rio criar novos usu rios Esta op o tamb m torna o usu rio um superusu rio que pode modificar todas as restri es de acesso Se esta cl usula for omitida o valor deste atributo para o usu rio ser NOCREATEUSER nome do grupo O nome do grupo onde o usu rio ser inclu do como um novo membro Nomes de v rios grupos podem estar presentes data hora A cl usula VALID UNTIL define uma data e hora ap s a qual a senha do usu rio n o mais v lida Se esta cl usula for omitida a conta ser v lida para sempre Sa das CREATE USER Mensagem retornada se o comando for executado com sucesso Descri o O comando CREATE USER inclui um novo usu rio em uma inst ncia do PostgreSQL Consulte o Guia do Administrador para obter mais informa es sobre o gerenciamento de usu rios e autentica o Apenas os superusu rios do banco de dados podem usar este comando Use o ALTER USER para mudar a senha e os privil gios do usu rio e o DROP USER para excluir o usu rio Use o ALTER GROUP para adicionar ou remover o usu rio de outros grupos O PostgreSQL possui o script createuser com a mesma f
180. is ia iia 1 DROP TABLE cota iaa ias 1 DROP TRIGGER ses sos osespoo piores daria ri cias 1 DROP TYPE ui ios eiii iris GA diia dani 1 DROP USER uscar tad 1 iii DROP VEV A iS 1 II D AT E A AR ENEON ist NEEE 1 EXPLAIN ran n i T E E da e a 1 FETCH estos e a E T A A EN A A RRE A E ATAN 1 GRAN h AE 1 INSERTE llei 1 LISTEN a Roi 1 LOAD ona 1 LOCK 1 MOVE di a 1 NOTIFY A dios 1 REINDEX 00 cacon ies id able 1 RESET Adobe 1 REVOKE ut ii E 1 ROEEBACK sais res oo lio adas 1 SELECTA as raid bis 1 SELECT INTO tool 1 S A AREA AAA OE lA 1 SELCONSTRAIN TS in A is tie do 1 SET SESSION AUTHORIZATION ereere Eet eoor ener enn none E E E Ramone nono rca 1 SET TRANSACTION uma E De a RGE S DS O RR ana na 1 SHOW A e 1 TRUNCATE duo o di IE ia cado 1 UNLIS TEN cipal RR E EAEE E A T E EA E aE 1 UPDATE Su ii E AE 1 VACUUM sa a 1 IH Aplicativos para a esta o cliente do PostgreSQL ococoononononoononosnonosiononcononosoononoononosnononcononccnononcononss 4 CD A ii 3 Created gia irois iori eos idas T A 8 Create USET A As 10 o 1 0 016 iii id dit EE E li de 13 UP iii 15 A OO NN 17 UU A ted 19 PEC ii is 24 DECO dida 27 PE UMD asias iio o o iS iii o iii tii 29 pe dumpall ico ero 36 PET e 38 PL ii ii E 45 Seg o lo RUNNER A SEN JO DER RO NR A RR ES 68 petksh ten E ss ae E us Sd a 69 VACUNA al dd dO EO pn ea og danada 70 DD in 74 O 7 Ipeclean ria 78 PE iia 79 PEPA Wide A AD paia 83 NANO 85 PO MA tati 89 Pref cio As entradas
181. ivo sobre quando usar ou n o o paginador Ilustra es mostrando como parecem estes formatos diferentes podem ser vistas na se o Exemplos Tip Existem v rios comandos abreviados para O Ypset Veja Ma AC NH Mt NT e x Note Atualmente errado chamar o 1pset sem argumentos No futuro esta chamada dever mostrar o status corrente de todas as op es de impress o va Sair do programa psql qecho texto Este comando id ntico ao Yecho exceto que toda a sa da escrita no canal de sa da de consulta definido pelo Mo Restaura limpa o buffer de comando Ys nome do arquivo Exibe ou salva o hist rico da linha de comando em nome do arquivo Senome do arquivo for omitido o hist rico enviado para a sa da padr o Esta op o somente estar dispon vel se o psql estiver configurado para usar a biblioteca de hist rico GNU Note Na vers o corrente n o mais necess rio salvar o hist rico dos comandos porque isto feito automaticamente ao t rmino do programa O hist rico tamb m carregado automatica mente toda vez que o psa inicia Yset nome valor Define a vari vel interna nome com o valor ou se mais de um valor for fornecido com a con catena o de todos eles Se o segundo valor n o for fornecido a vari vel definida sem valor Para remover a defini o da vari vel deve se usar o comando Yunset Nomes v lidos de vari veis podem conter letras d gitos e sublin
182. ivo deve atualizar as linha R1 e R2 na mesma ordem do primeiro aplicativo As transa es devem obter dois modos de bloqueio conflitantes somente se um deles auto conflitante ou seja pode ser obtido por somente uma nica transa o de cada vez Se diversos modos de bloqueio est o envolvidos ent o as transa es devem sempre solicitar o modo mais restritivo primeiro Um exemplo desta regra foi dado anteriormente ao se discutir o uso do modo SHARE ROW EXCLU SIVE em vez do modo SHARE Note O PostgreSQL detecta impasses deadlocks e desfaz pelo menos uma das transa es em espera para resolver o impasse Ao se bloquear v rias tabelas o comando LOCK a b equivalente a LOCK a LOCK b As tabelas s o bloqueadas uma por uma na ordem especificada pelo comando LOCK Notas O comando LOCK IN ACCESS SHARE MODE requer o privil gio SELECT na tabela especificada Todas as outras formas de LOCK requerem os privil gios UPDATE e ou DELETE LOCK O comando LOCK til apenas dentro de um bloco de transag o BEGIN COMMIT porque o bloqueio liberado logo que a transa o termina Um comando LOCK aparecendo fora de um bloco de transa o forma uma transa o auto contida portanto o bloqueio ser liberado t o logo seja obtido Utiliza o Este exemplo mostra o bloqueio no modo SHARE da tabela que cont m a chave prim ria antes de fazer uma inser o na tabela q
183. l currval e setval DELETE Permite excluir linhas DELETE da tabela especificada GRANT RULE Permite criar regras para a tabela ou para a vis o Consulte o comando CREATE RULE REFERENCES Para criar uma tabela com restrig o de chave estrangeira necess rio possuir este privil gio na tabela com a chave referenciada TRIGGER Permite criar gatilhos na tabela especificada Consulte o comando CREATE TRIGGER ALL PRIVILEGES Concede todos os privil gios mostrados acima de uma s vez A palavra chave PRIVILEGES op cional no PostgreSQL entretanto requerida pelo SQL estrito Os privil gios requeridos pelos outros comandos est o listados nas p ginas de refer ncia dos respectivos comandos Notas Deve se notar que os superusu rios do banco de dados podem acessar todos os objetos a despeito dos privil gios definidos Este comportamento compar vel aos direitos do usu rio root no sistema Unix Assim como o root n o aconselh vel operar como um superusu rio exceto quando for absolutamente necess rio Atualmente para conceder privil gios somente para algumas colunas deve se criar uma vis o possuindo as colunas desejadas e conceder os privil gios para esta vis o Use o comando z do psql para obter informa es sobre os privil gios concedidos nos objetos existentes Database lusitania Relation Grant Revoke Permissions mytable rw miriam arwdRxt group todos rw
184. l usando o servidor na m quina eden porta 5000 evitando o pedido de informa es e vendo o comando subjacente createuser p 5000 h eden D A e joel CREATE USER joel NOCREATEDB NOCREATEUSER CREATE USER 12 dropdb Name dropdb remove um banco de dados do PostgreSQL Synopsis dropdb op es nome bd Entradas h host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es U username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha e echo Exibe os comandos que o dropdb gera e envia para o servidor q quiet N o exibe a resposta 1 Interactive Solicita a confirma o antes de fazer qualquer opera o destrutiva nome bd Especifica o nome do banco de dados a ser removido O banco de dados deve ser um dos bancos de dados existentes no PostgreSQL desta instala o As op es h p U W e e s o passadas literalmente para o psa 13 dropdb Sa das DROP DATABAS ti O banco de dados foi removido com sucesso dropdb Database removal failed Algum erro aconteceu Havendo uma condi o de erro a mensagem de erro do servidor exibida Consult
185. la o d gito verificador e retorna TRUE se o d gito verificador dos par metros da fun o est correto A inten o utilizar esta fun o numa restri o de verifica o CHECK CREATE FUNCTION ean checkdigit char char RETURNS boolean AS funcs LANGUAGE C CREATE TABLE product id char 8 PRIMARY KEY eanprefix char 8 CHECK eanprefix 0 9 2 0 9 5 REFERENCES brandname ean prefix eancode char 6 CHECK eancode 0 9 6 CONSTRAINT ean CHECK ean checkdigit eanprefix eancode No pr ximo exemplo criada uma fun o que faz a convers o de tipo do tipo complexo definido pelo usu rio e o tipo nativo point A fun o implementada por um objeto carregado dinamicamente que foi compilado a partir de um fonte C est ilustrada a alternativa obsoleta de se especificar o caminho absoluto para o arquivo contendo o objeto compartilhado Para o PostgreSQL encontrar a fun o de convers o de tipo automaticamente a fun o SQL deve ter o mesmo nome do tipo retornado e por isso a sobrecarga inevit vel O nome da fun o sobrecarregado utilizando se a segunda forma da cl usula As na defini o SQL CREATE FUNCTION point complex RETURNS point AS home bernie pgsql lib complex so complex to point LANGUAGE C A declara o em C da fun o poderia ser Point complex to point Complex z Point p
186. la referenciada coluna referenciada MATCH tipo corresp ON DELETE a o ON UPDATE a o restri o da coluna FOREIGN KEY nome da coluna REFERENCES tabela referenciada coluna referenciada 1 1 MATCH tipo corresp ON DELETE a o ON UPDATE a o restri o da tabela A restri o REFERENCES especifica que um grupo de uma ou mais colunas da nova tabela deve conter somente valores correspondentes aos valores das colunas referenciadas coluna referenciada da tabela referenciada tabela referenciada Sea coluna referenciada for omitida a chave prim ria da tabela referenciada utilizada As colunas referenciadas devem pertencer a uma restri o de chave prim ria ou de unicidade da tabela referenciada Os valores adicionados a estas colunas s o comparados com os valores das colunas referenciadas da tabela referenciada utilizando o tipo de compara o Existem 3 tipos de compara o MATCH FULL MATCH PARTIAL e o tipo de compara o padr o se nada for especificado MATCH FULL n o permite que uma coluna de uma chave estrangeira com v rias colunas seja nula a menos que todas as colunas da chave estrangeira sejam nulas O tipo de compara o padr o permite que algumas colunas da chave estrangeira sejam nulas enquanto outras colunas da chave estrangeira n o s o nulas MATCH PARTIAL ainda n o est implementado Adicionalmente quando os dados das colunas referen
187. lam se as restri es podem ser postergadas Uma restri o que n o pode ser postergada verificada imediatamente ap s cada comando A verifica o das restri es que s o posterg veis pode ser adiada para o final da transa o usando o comando SET CONSTRAINTS O padr o NOT DEFERRABLE Somente restri es de chave estrangeira aceitam esta cl usula no momento Todos os outros tipos de restri o n o s o posterg veis INITIALLY IMMEDIATE OU INITIALLY DEFERRED Se uma restri o posterg vel esta cl usula especifica o momento padr o para verificar a restri o Se a restri o INITIALLY IMMEDIATE ent o verificada ap s cada declara o Este o padr o Se a declara o INITIALLY DEFERRED ent o verificada apenas no final da transa o O mo mento de verifica o da restri o pode ser alterado pelo comando SET CONSTRAINTS Diagn sticos CREATE Mensagem retornada se a tabela for criada com sucesso ERROR Mensagem retornada se a cria o da tabela falhar Esta mensagem normalmente acompanhada por algum texto descritivo como ERROR Relation nome da tabela already exists que ocorre quando a tabela especificada existe no banco de dados CREATE TABLE Notas Sempre que uma aplica o faz uso dos OIDs para identificar linhas espec ficas de uma tabela re comendado criar uma restrig o de unicidade para a coluna o
188. les only ou t Alterna entre exibir somente as tuplas e exibir tudo O modo exibir tudo pode mostrar infor ma es adicionais como os cabe alhos das colunas t tulos e v rios rodap s No modo tuplas apenas somente os dados da tabela s o mostrados title texto Define o t tulo para as pr ximas tabelas a serem impressas Pode ser usado para colocar textos descritivos na sa da Se nenhum argumento for fornecido a defini o removida Note Anteriormente s afetava o modo HTML Atualmente pode ser definido t tulo para qualquer formato de sa da tableattr ou T texto Permite especificar qualquer atributo a ser colocado dentro do marcador table do HTML Estes atributos podem ser por exemplo cellpadding ou bgcolor Observe que provavelmente n o vai se desejar especificar border aqui porque isto j tratado pelo pset border pager Alterna o paginador usado para mostrar a sa da da tabela Se a vari vel de ambiente PAGER estiver definida a sa da enviada para o programa especificado sen o o more utilizado De qualquer maneira o psql somente usa o paginador se julgar adequado significando que entre outras coisas a sa da para um terminal e que a tabela normalmente n o caberia na tela Devido 53 psql a natureza modular das rotinas de impress o n o sempre poss vel predizer o n mero de linhas que ser o realmente impressas Por esta raz o o psql pode parecer n o muito discriminat
189. limitador Os valores dos atributos s o cadeias de caracteres geradas pela fun o de sa da ou aceit veis pela fun o de entrada para cada tipo de dado de atributo A cadeia de caracteres nula especificada utilizada no lugar dos atributos que s o nulos Se WITH OIDS for especificado o OID lido ou escrito como a primeira coluna precedendo as colunas de dado do usu rio Vai acontecer um erro se WITH OIDS for especificado para uma tabela que n o possua OIDs O fim dos dados pode ser representado por uma nica linha contendo apenas contrabarra ponto 1 Um marcador de fim de dados n o necess rio ao se ler de um arquivo Unix porque o fim de arquivo serve COPY perfeitamente bem mas um marcador de fim dos dados deve ser fornecido para copiar os dados de ou para um aplicativo cliente O caractere contrabarra 1 pode ser usado nos dados do comando COPY para evitar que caracteres dos da dos sejam interpretados como delimitadores de linha ou de coluna Em particular os seguintes caracteres devem ser precedidos por uma contrabarra se aparecerem como parte do valor de um atributo a pr pria contrabarra a nova linha e o caractere delimitador corrente As seguintes segii ncias especiais de contrabarra s o reconhecidas pelo comando COPY FROM A AE Retorno do carro ASCII 13 abula o ASCII 9 v abula o Vertical ASCH 11 d gitos A contrabarra seguida por um a tr s d gitos octais especifica o caractere c
190. linguagem C e o PostgreSQL Permite o desen volvimento de programas C com c digo SQL embutido Linus Tolke lt linustepact se gt foi o autor original do ecpg at a vers o 0 2 Michael Meskes lt meskesftdebian org gt o atual autor e mantenedor do ecpg Thomas Good lt tomg g8 nrnet org gt o autor da ltima revis o do man page do ecpg no qual este documento se baseia Utiliza o Pr processamento para Compila o Um arquivo fonte com SQL embutido deve ser pr processado antes de ser compilado cpg da 1 o arquivo arquivo pgc onde o sinalizador opcional d ativa a depura o A extens o pgc uma maneira arbitr ria de caracteri zar um fonte ecpg Pode se desejar redirecionar a sa da do pr processador para um arquivo de 109 Compila o e Liga o Assumindo se que os bin rios do PostgreSQL est o em usr local pgsgl ser necess rio compilar e ligar link o arquivo fonte pr processado usando gcc g I usr local pgsql include o arquivo arquivo c L usr local pgsqgl 1lib Gram tica Bibliotecas O pr processador adiciona duas diretivas ao c digo fonte finclude lt ecpgtype h gt tinclude lt ecpglib h gt 20 ecpg Declarac o das Vari veis As vari veis declaradas dentro do c digo fonte ecpg devem estar precedidas por EXEC SOL BEGIN DECLARE SECTION Analogamente a se o de declara o das vari veis deve termina
191. linha com o nome nome seg O usu rio que executa o comando se torna o dono do gerador Ap s a segii ncia ser criada podem ser utilizadas as fun es next val currval e setval para trabalhar com a segii ncia Estas fun es est o documentadas no Guia do Usu rio Embora n o seja poss vel atualizar uma segii ncia diretamente poss vel realizar uma consulta do tipo SELECT FROM nome seg para conhecer os par metros e o estado atual da segii ncia Em particular o campo last value da sequ ncia mostra o ltimo valor alocado por qualquer processo servidor E claro que este valor pode estar obsoleto na hora em que for exibido se outros processos estiverem chamando a fun o next val CREATE SEQUENCE Caution Podem ocorrer resultados n o esperados ao se especificar um valor maior do que 1 para cache em um objeto de sequ ncia utilizado ao mesmo tempo por v rios servi dores backends Cada servidor aloca e armazena em mem ria valores suces sivos da sequ ncia ao fazer um nico acesso ao objeto de sequ ncia e incrementa o ltimo valor 1ast value na forma correspondente Ent o a pr xima utiliza o de cache 1 da fun o nextval neste servidor simplesmente retorna os valores pr alocados sem tocar no objeto compartilhado Desta forma todos os valores alocados nesta sess o mas n o utilizados s o perdidos ao final da sess o Al m disso embora seja garantido que os diversos servidores alocam val
192. lo comando CREATE FUNCTION ou seja n o s o reconhecidos ou exigidos O PostgreSQL permite a sobrecarga de fun o ou seja o mesmo nome pode ser usado por v rias fun es diferentes desde que possuam argumentos com tipos diferentes Entretanto esta funcionalidade deve ser usada com cuidado para as fun es internas e para as fun es escritas na linguagem C Duas fun es internal n o podem possuir o mesmo nome no c digo C sem causar erros durante a fase de liga o Para contornar este problema deve se dar nomes diferentes no c digo C por exemplo usar os tipos dos argumentos como parte do nome no c digo C ent o especificar este nome na cl usula AS do comando CREATE FUNCTION Se a cl usula AS for omitida ent o CREATE FUNCTION assume que o nome da fun o no c digo C tem o mesmo nome do SQL Analogamente ao se sobrecarregar o nome das fun es SQL atrav s de v rias fun es escritas na lin guagem C deve ser dado a cada inst ncia da fun o na linguagem C um nome distinto e ent o usar a forma alternativa da cl usula AS na sintaxe do CREATE FUNCTION para selecionar a implementa o apropriada na linguagem C de cada fun o SQL sobrecarregada Quando chamadas repetidas ao comando CREATE FUNCTION fazem refer ncia ao mesmo arquivo ob jeto o arquivo s carregado uma vez Para descarregar e carregar o arquivo talvez durante a fase de desenvolvimento use
193. lo no terceiro campo 0000000 P G 0000020 NO MO 0000040 A F 0000060 E A 0000100 377 Av 0000120 377 377 0000140 G E 0000160 M 377 0000200 NO 377 0000220 I Compatibilidade SQL92 B Cc NO MO BAI SPT N dO NO NO 006 NO R I FTL NA 377 006 B A O No 017 No No No A No No B N o existe o comando COPY no SQL92 E No No 003 A No No No No wW BI O OO r Eo O ES An No No SN 377 003 A 314 A 377 NO A wW No Xr An NO 377 F G 006 NO N I 377 Mv 377 377 M B ITA BRA IIA Silo O 004 003 002 001 377 006 H A vo MO A NO vo MO 006 NO IA NE NO No N A No No NO NO NO No I L 003 A No NO NO No S 377 No L Z 003 CREATE AGGREGATE Name CREATE AGGREGATE define uma nova fun o de agrega o Synopsis CREATE AGGREGATE nome BASETYPE tipo dado entrada SFUNC func trans estado STYPE tipo dado estado FINALFUNC func final INITCOND cond inicial Entradas nome O nome da fun o de agrega o a ser criada tipo dado entrada O tipo do dado de entrada sobre o qual esta fun o de agrega o opera Pode ser especificado como ANY para uma fun o de agrega o que n o examina seus valores de entrada um exemplo a fun o count func trans estado O nome da fun o de transi o de estado a ser chamada para cada valor
194. m banco de dados em particular e criar o banco de dados template1 Quando um novo banco de dados criado tudo que existe no banco de dados template1 copiado Este banco de dados cont m tabelas do cat logo preenchidas com dados como os tipos de dado primitivos O initab deve ser executado pelo mesmo usu rio do processo servidor porque o servidor necessita ter acesso aos arquivos e diret rios criados pelo initdb Como o servidor n o deve ser executado como root tamb m n o se deve executar o initdb como root Na verdade este vai se recusar a faz lo Embora o initab tente criar o diret rio de dados especificado muitas vezes n o ter permiss o para faz lo porque este diret rio geralmente est sob um diret rio que pertence ao root Para resolver uma situa o como esta deve se criar um diret rio de dados vazio como root depois usar o comando chown para mudar o dono deste diret rio para o usu rio do banco de dados em seguida executar su para se tornar o usu rio do banco de dados e finalmente executar init db como o usu rio do banco de dados Op es pgdata diret rio D diret rio Esta op o especifica o diret rio onde o sistema de banco de dados deve ser armazenado Esta a nica informa o requerida pelo initab mas pode ser evitado escrev la definindo a vari vel de ambiente PGDATA o que conveniente porque depois o servidor de banco de dados postmaster poder localizar o diret rio dos ban
195. man Usa dd mm yyyy para representar as datas num ricas As duas op es a seguir determinam o subestilo dos formatos de sa da SQL e PostgreSQL e a interpreta o preferencial da entrada de data amb gua European Usa dd mm yyyy para representar as datas num ricas NonEuropean US Usa mm dd y y y y para representar as datas num ricas O valor para SET DATESTYLE pode ser um da primeira relac o estilos de sa da ou um da segunda relac o subestilos ou um de cada separados por v rgula A inicializa o do formato da data pode ser feita por Atribui o da vari vel de ambiente PGDATESTYLE Se PGDATESTYLE estiver definida no ambi ente do cliente baseado na 1ibpq automaticamente a 1ibpg atribui a DATESTYLE o valor de PGDATESTYLE durante a inicializa o da conex o Executar o postmaster utilizando a op o o e para atribuir s datas a conven o European A op o DateStyle prevista apenas para portar aplicativos Para formatar os valores de data hora conforme a necessidade deve se usar a fam lia de fun es to char SEED Define a semente interna para o gerador de n meros rand micos valor O valor da semente a ser usada pela fun o random Os valores permitidos s o n meros de ponto flutuante entre O e 1 os quais s o ent o multiplicados por 2 1 Este produto ir estourar a capacidade sem dar mensagem de erro se um n mero fora deste intervalo f
196. mero da porta 5432 ou o valor da vari vel de ambiente PGPORT se estiver definida U nome do usu rio Nome do usu rio para se conectar W For a a solicita o da senha Deve acontecer automaticamente se o servidor requerer autentica o por senha Diagn sticos Connection to database templatel failed connectDBStart connect failed No such file or directory Is the postmaster running locally and accepting connections on Unix socket tmp s PGSQL 5432 33 pg_dump O pg_dump n o p de se conectar ao processo postmaster usando o computador e a porta especi ficada Se esta mensagem for recebida deve se garantir que o postmaster est processando na m quina especificada e usando a porta especificada Note O pg dump executa internamente comandos seLECT Se houver problema ao executar o pg dump deve se ter certeza de poder consultar as informa es no banco de dados usando por exemplo o psa Notas Se na instala o houver alguma adi o local ao banco de dados templatel deve se ter o cuidado de restaurar a sa da do pg_dump em um banco de dados realmente vazio de outra forma podem acontecer erros devido duplicidade de defini es dos objetos adicionados Para criar um banco de dados vazio sem nenhuma adi o local deve se faz lo partir do template0 e n o do template 1 Por exemplo CREATE DATABASE foo WITH T EMPLAT E template O pg dump possu
197. mpido pode se simplesmente reconstruir este ndice ou todos os ndices da tabela usando o comando REINDEX INDEX ou REINDEX TABLI El Note Outra forma de tratar o problema de ndice corrompido em tabela do usu rio simplesmente elimin lo e recri lo Pode se preferir esta forma para manter alguma apar ncia de uma operac o normal em uma tabela O comando REINDEX obt m um bloqueio exclusivo da tabela enquanto o comando CREATE INDEX bloqueia a escrita mas n o a leitura da tabela A situa o se torna mais dif cil quando necess rio recuperar um ndice corrompido de uma tabela do sistema Neste caso importante que o servidor efetuando a recupera o n o esteja usando nenhum dos ndices suspeitos Sem d vida neste tipo de cen rio pode acontecer do servidor estar caindo durante a ini cializa o por depender do ndice corrompido Para executar a recupera o segura o postmaster deve ser parado e um servidor aut nomo stand alone do PostgreSQL deve ser iniciado fornecendo se as op es de linha de comando O e P estas op es permitem modificar as tabelas do sistema e faz com que os ndices do sistema n o sejam utilizados respectivamente Ent o se executa o comando REINDEX INDEX REINDEX TABLE OU REINDEX DATABASE dependendo de quanto se deseja reconstruir Na d vida deve ser utilizado o comando REINDEX DATABASE FORCE para for ar a reconstru o de todos os ndices do sistema no banco
198. nando o comportamento da combina o de heran a com restri o de unicidade diferente do esperado Exemplos Criar a tabela filmes e a tabela distribuidores CREATE TABLE filmes cod CHARACTER 5 CONSTRAINT pk filmes PRIMARY KEY titulo CHARACTER VARYING 40 NOT NULL did DECIMAL 3 NOT NULL data prod DATE C I tipo HAR 10 duracao TERVAL HOUR TO MINUTI ql CREATE TABLE distribuidores did DECIMAL 3 PRIMARY KEY DEFAULT NEXTVAL serial nome VARCHAR 40 NOT NULL CHECK nome lt gt Criar uma tabela com uma matriz de 2 dimens es CREATE TABLE matriz2d matriz INDERE CREATE TABLE Definir uma restri o de unicidade para a tabela filmes Restri es de unicidade de tabela podem ser definidas usando uma ou mais colunas da tabela CR EATE TABLE filmes cod CHAR 5 titulo VARCHAR 40 did DECIMAL 3 data prod DATE tipo VARCHAR 10 duracao INTERVAL HOUR TO M CONSTRAINT producao UNIQUE dat Definir uma restri o de coluna para verifica o CR EATE TABLE distribuidores did DECIMAL 3 CHECK VARCHAR 40 did nome Definir uma restri o de tabela para verifica o CR EATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 CONSTRAINT chk dist CHECK did INUTE a prod gt
199. nar uma coluna do tipo VARCHAR tabela ALT ER TABL distribuidores ADD COLUMN endereco VARCHAR 30 Para mudar o nome de uma coluna existente ALT ER TABL distribuidores RENAME COLUMN endereco TO cidade Para mudar o nome de uma tabela existente ALT ER TABL distribuidores RENAME TO fornecedores Para adicionar uma restri o de verifica o CHECK a uma tabela ALT ER TABL distribuidores ADD CONSTRAINT cep chk CHECK char length cod cep 8 Para remover uma restri o de verifica o de uma tabela e de todas as suas filhas ALT ER TABL distribuidores DROP CONSTRAINT cepchk RESTRICT Para adicionar uma chave estrangeira a uma tabela ALT ER TABL distribuidores ADD CONSTRAINT fk_dist FOREIGN KEY endereco REFERENCES Para adicionar uma restri o de unicidade multi coluna tabela ALTER TABLE ALTER TABLE distribuidores ADD CONSTRAINT dist id cep key UNIQUE dist id cep E Para adicionar uma restri o de chave prim ria a uma tabela com o nome gerado automaticamente observando se que a tabela somente pode possuir uma nica chave prim ria ALTER TABLE distribuidores ADD PRIMARY K Compatibilidade SQL92 tdist 1d A forma ADD COLUMN est em conformidade a n o ser por n o suportar valor padr o
200. ndo o mesmo banco de dados do PostgreSQL Mecanismos de n vel mais alto podem ser constru dos usando se tabelas no banco de dados para passar informa es adicionais al m do mero nome da condi o do notificador para o s ouvinte s Quando o NOTIFY utilizado para sinalizar a ocorr ncia de mudan as em uma tabela em particular uma t cnica de programa o til colocar o NOTIFY em uma regra que disparada pela atualiza o da tabela Deste modo a notifica o acontece automaticamente quando a tabela modificada e o programador do aplicativo n o vai poder acidentalmente esquecer de faz la O NOTIFY interage com as transa es SQL de forma importante Em primeiro lugar se um NOTIFY for executado de dentro de uma transa o o evento de notifica o n o enviado at que e a menos que a transa o seja efetivada Isto apropriado porque se a transa o for abortada deseja se que nenhum de seus comandos tenha surtido efeito incluindo o NOTIFY Mas isto pode ser desconcertante se for esperado que os eventos de notifica o sejam enviados imediatamente Em segundo lugar se um processo servidor na escuta recebe um sinal de notifica o enquanto est executando uma transa o o evento de notifica o n o ser enviado ao cliente conectado antes da transa o ser completada seja efetivada ou abortada Novamente o racioc nio que se a notifica o for enviada de dentro de uma transa o que for abortada poste
201. ne um novo gatilho Synopsis CREATE TRIGGER nome BEFORE AFTER evento OR ON tabela FOR EACH ROW STATEMENT Entradas nome O nome do novo gatilho tabela O nome de uma tabela existente evento Um entre INSERT DELETE e UPDATE func o Uma fun o fornecida pelo usu rio Sa das CREATE EXECUTE PROCEDURE fun o argumentos Mensagem retornada se o gatilho for criado com sucesso Descri o O comando CREATE TRIGGER introduz um novo gatilho no banco de dados atual O gatilho fica associado com a rela o tabela e executa a fun o especificada fun o O gatilho pode ser especificado para disparar antes BEFORE da opera o ser realizada na tupla antes das restri es serem verificadas O INSERT UPDATE ou DE LETE serem efetuados ou ap s AFTER a CREATE TRIGGER opera o ser realizada ou seja ap s as restri es serem verificadas e O INSERT UP completado Se o gatilho disparar antes do evento o gatilho pode evitar a opera o para a tupla atual ou modificar a tupla sendo inserida para as opera es de INS ERTe UPDATI DAT EL E ter E OU D ET E somente Se o gatilho disparar ap s o evento todas as modifica es incluindo a ltima inser o atualiza o ou exclus o s o vis veis
202. ne um novo gatilho de restrig o Synopsis CREATE CONSTRAINT TRIGGER nome AFTER eventos O rela o restri o atributos FOR EACH ROW EXECUTE PROCEDURE fun o args Entradas nome O nome do gatilho de restri o eventos As categorias dos eventos para as quais este gatilho deve ser disparado rela o O nome da tabela que dispara o gatilho restri o Especifica o da restri o atributos Atributos da restri o fun o args Fun o a ser chamada como parte do processamento do gatilho Sa das CREATE CONSTRAINT Mensagem retornada se o comando for executado com sucesso CREATE CONSTRAINT TRIGGER Descric o O comando CREATE CONSTRAINT TRIGGER utilizado de dentro do comando CREATE ALTER TABLE e pelo pg_dump para criar gatilhos especiais para a integridade referencial N o h a inten o de ser para uso geral CREATE DATABASE Name CREATE DATABASE cria um banco de dados novo Synopsis CREATE DATABASE nome WITH LOCATIO TEMPLATE ENCODING caminho gabarito codifica o Entradas nome O nome do banco de dados a ser criado caminho Um local alternativo no sistema de arquivos onde ser armazenado o banco de dados especificado como uma cadeia de caracteres ou DEFAULT para utilizar o local padr o gabarito Nome do banco de dado
203. nem efetivando ou desfazendo suas transa es Portanto quando este bloqueio conseguido n o existe nenhuma opera o de escrita sendo executada Note Para ler os dados em seu estado corrente atual ao executar uma transa o no n vel de isola mento SERIALIZABLE necess rio executar o comando LOCK TABLE antes de executar qualquer comando da DML A vis o dos dados de uma transa o serializ vel congelada no momento em que o primeiro comando da DML come a a executar Al m dos requisitos acima se uma transa o altera os dados da tabela ent o o modo de bloqueio SHARE ROW EXCLUSIVE deve ser obtido para prevenir a ocorr ncia da condi o de impasse deadlock quando duas transa es concorrentes bloqueiam a tabela em modo SHARE e depois tentam mudar os dados desta tabela as duas implicitamente solicitando o modo de bloqueio ROW EXCLUSIVE que conflita com o modo de bloqueio SHARE concorrente Para que n o ocorra a situa o de impasse quando duas transa es ficam aguardando uma pela outra descrita acima devem ser seguidas duas regras gerais que evitam as condi es de impasse As transa es t m que obter o bloqueio dos mesmos objetos na mesma ordem Por exemplo se um aplicativo atualiza a linha R1 e depois atualiza a linha R2 na mesma transa o ent o um segundo aplicativo n o deve atualizar a linha R2 se for atualizar a linha R1 depois na mesma transa o Em vez disto o segundo aplicat
204. ng connections on Unix socket tmp s PGSQL 5432 O pg restore n o p de se conectar ao processo postmaster usando o computador e a porta especificada Se esta mensagem for recebida deve se garantir que o servidor est processando na m quina especificada e usando a porta especificada Se a instala o usa um sistema de autentica o assegure se de ter obtido as credenciais de autentica o necess rias Note Quando uma conex o direta ao banco de dados especificada atrav s da op o d O pg restore executa internamente os comandos sor Se houver problema ao executar o pg restore deve se ter certeza de poder consultar as informa es no banco de dados usando por exemplo O psql Notas Se na instala o houver alguma adi o local ao banco de dados templatel deve se ter o cuidado de restaurar a sa da do pg restore em um banco de dados realmente vazio de outra forma podem acontecer erros devido duplicidade de defini es dos objetos adicionados Para criar um banco de dados vazio sem nenhuma adi o local deve se faz lo a partir do template0 e n o do templatel Por exemplo CREATE DATABASE foo WITH TEMPLATE template0 As limita es do pg restore est o descritas abaixo 42 pg restore Ao se restaurar os dados para tabelas pr existentes o pg restore emite comandos para desativar os gatilhos das tabelas dos usu rios antes de inserir os dados e comandos para reativ los a
205. nicial ou utilizar uma fun o de transi o que n o seja estrita Se a fun o de transi o de estado n o for estrita ent o ser chamada incondicionalmente para cada valor da entrada devendo ser capaz de lidar com valores nulos da entrada e valores nulos de transi o Esta op o permite ao autor da fun o de agrega o ter pleno controle sobre os valores nulos Se a fun o final for declarada strict est o n o ser chamada quando o valor do estado final for nulo em vez disso um resultado nulo ser produzido automaticamente claro que este apenas o comportamento normal de fun es estritas De qualquer forma a fun o final tem sempre a op o de retornar nulo Por exemplo a fun o final para avg retorna nulo quando n o h nenhum valor de entrada Notas Use o comando DROP AGGREGATE para excluir fun es de agrega o Os par metros do comando CREATE AGGREGATE podem ser escritos em qualquer ordem e n o apenas na ordem mostrada acima Utiliza o Consulte o cap tulo sobre fun es de agrega o no Guia do Programador do PostgreSQL para ver exem plos completos sobre a sua utiliza o Compatibilidade SQL92 O comando CREATE AGGREGATE uma extens o do PostgreSQL linguagem N o existe o comando CREATE AGGREGATE no SQL92 CREATE CONSTRAINT TRIGGER Name CREATE CONSTRAINT TRIGGER defi
206. nicializa o do sistema operacional Um postmaster gerencia sempre os dados de exatamente um agrupamento de bancos de dados Um agru pamento de bancos de dados uma coleg o de bancos de dados que armazenada em um local comum no sistema de arquivos Quando o postmaster inicia necessita saber a localizag o dos arquivos do agrupa mento de bancos de dados rea de dados o que feito atrav s da op o de chamada D ou atrav s da vari vel de ambiente PGDATA n o existe nenhum valor padr o Mais de um processo postmaster pode estar executando no sistema operacional no mesmo instante desde que utilizem reas de dados diferentes e portas de comunica o diferentes veja abaixo A rea de dados criada pelo initdb Op es Consulte o Guia do Administrador para ver uma discuss o detalhada das op es Pode se evitar digitar a maior parte destas op es usando um arquivo de configura o O postmaster aceita os seguintes argumen tos de linha de comando A 011 Ativa a verifica o das assertivas de tempo de execu o o que uma ajuda de depura o para detectar enganos de programa o S est dispon vel quando habilitada durante a compila o Se for o padr o ativa B num buffers Define o n mero de buffers compartilhados para uso pelos processos servidores SHARED BUFFERS num buffers Por padr o 64 buffers cada um de 8 kB 89 postmaster c nome valor Define o par metro de temp
207. no Ap s todos os dados terem sido processados a fun o final chamada uma vez para calcular o valor de sa da da agrega o Se n o houver nenhuma fun o final ent o o valor do estado final retornado A fun o de agrega o pode possuir uma condi o inicial ou seja um valor inicial para o valor de estado interno Este valor especificado e armazenado no banco de dados em um campo do tipo text mas deve possuir uma representa o externa v lida de uma constante do tipo de dado do estado Se n o for especificado ent o o valor do estado come a com NULL Se a fun o de transi o de estado for declarada como strict ent o n o poder ser chamada com valores da entrada nulos Para este tipo de fun o de transi o a execu o da agrega o realizada da seguinte maneira Valores da entrada nulos s o ignorados a fun o n o chamada e o valor do estado anterior permanece Se o valor do estado inicial for nulo ent o o primeiro valor de entrada que n o for nulo CREATE AGGREGATE substitui o valor do estado e a fun o de transi o chamada a partir do segundo valor de entrada que n o for nulo Este procedimento til para implementar fun es de agrega o como max Observe que este comportamento somente est dispon vel quando o tipo dado estado for do mesmo tipo do tipo dado entrada Quando estes tipos de dado forem diferentes dever ser fornecido um valor n o nulo para a condi o i
208. no de execu o de uma instru o Synopsis EXPLAIN ANALYZE VERBOSE consulta Entradas ANALYZE Sinalizador para executar a consulta e mostrar os tempos reais de execu o VERBOSE Sinalizador para mostrar o plano de execug o detalhado consulta Qualquer consulta Sa das OTICE QUERY PLAN plano Plano de execu o expl cito do servidor PostgreSQL EXPLAIN Sinalizador enviado ap s o plano da consulta ter sido mostrado Descri o Este comando mostra o plano de execu o que o planejador do PostgreSQL gera para a consulta fornecida O plano de execu o mostra como a s tabela s referenciada pela consulta ser varrida por uma varredura seqiiencial varredura do ndice etc e se v rias tabelas forem referenciadas quais algo ritmos de jun o ser o usados para unir as tuplas requisitadas de cada tabela de entrada A parte mais cr tica mostrada o custo estimado da execu o da consulta que a estimativa feita pelo planejador sobre a dura o da execu o da consulta medida em unidade de acesso s p ginas do disco EXPLAIN Na verdade dois n meros s o mostrados o tempo inicial anterior primeira tupla poder ser retornada e o tempo total para retornar todas as tuplas Para a maioria das consultas o tempo total o que interessa mas em contextos como os das subconsultas EXISTS o planejador escolhe o menor tempo inicial em vez do menor tempo total porq
209. nta o valor nulo O padr o in contrabarra N Pode se preferir uma cadeia de caracteres vazia por exemplo COPY Note Durante a leitura qualquer item de dado que corresponda a esta cadeia de caracteres armazenado com o valor nulo portanto deve se ter certeza de estar usando para ler a mesma cadeia de caracteres que foi usada para escrever Sa das COPY A c pia terminou com sucesso ERROR raz o A c pia falhou pela raz o mostrada na mensagem de erro Descri o O comando COPY copia dados entre tabelas do PostgreSQL e arquivos do sistema operacional O comando COPY TO copia todo o conte do de uma tabela para um arquivo enquanto o COPY FROM copia os dados de um arquivo para uma tabela adicionando os dados aos existentes na tabela O comando COPY com um nome de arquivo instrui o servidor PostgreSQL para ler ou escrever diretamente de um arquivo O arquivo deve ser acess vel ao servidor e o nome deve ser especificado a partir do ponto de vista do servidor Quando stdin ou stdout for especificado os dados fluir o entre o cliente e o servidor Tip N o confunda o comando copy com a instru o copy do psql O 1copy executa COPY FROM stdin OU COPY TO stdout e ent o l grava os dados em um arquivo acess vel ao cliente psa Portanto a acessibilidade e os direitos de acesso dependem do cliente e n o do servidor quando o copy utilizado Notas O comando COPY s pode ser utilizado em tabelas n o
210. ntretanto o ecpg o pr processador SQL embutido do PostgreSQL suporta as conven es de cursor do SQL92 incluindo as que envolvem os comandos DECLARE e OPEN Utiliza o Para declarar um cursor DECLARE liahona CURSOR FOR SELECT FROM filmes Compatibilidade SQL92 O SQL92 permite cursores somente no SQL embutido e em m dulos O PostgreSQL permite que o cursor seja usado interativamente O SQL92 permite aos cursores embutidos ou modulares atualizar as infor ma es no banco de dados Todos os cursores do PostgreSQL s o apenas para leitura A palavra chave BINARY uma extens o do PostgreSQL DELETE Name DELETE exclui linhas de uma tabela Synopsis DELETE FROM ONLY tabela WHERE condi o Entradas tabela O nome de uma tabela existente condi o Uma condi o de consulta do SQL que retorna as linhas a serem exclu das Consulte o comando SELECT para obter mais informa es sobre a cl usula WHERE Sa das DELETE contador Mensagem retornada se as linhas foram exclu das com sucesso O contador representa o n mero de linhas exclu das Se contador for 0 ent o nenhuma linha foi exclu da Descri o E exclui as linhas que satisfazem a cl usula WHERE na tabela especificada H O comando DELE Se a condi o cl usula WHERE estiver ausente o efeito a exclus o de todas as linhas da tabela O resultado vai ser uma t
211. o Synopsis SET vari vel TO valor valor DEFAULT SE TIME ZONE zona hor ria LOCAL DEFAULT Entradas vari vel Um par metro de tempo de execu o cujo valor pode ser mudado valor O novo valor do par metro Pode ser usado DEFAULT para especificar a atribui o do valor padr o do par metro S o permitidas listas de cadeias de caracteres mas constru es mais complexas podem precisar estar entre ap strofos ou entre aspas Descric o O comando SET altera os par metros de configura o de tempo de execu o Os seguintes par metros podem ser alterados CLIENT ENCODING NAMES Define a codifica o multibyte do cliente A codifica o especificada deve ser suportada pelo servi dor Esta op o somente est dispon vel quando o PostgreSQL for gerado com suporte para multibyte DATESTYLE Escolhe o estilo de representa o da data hora Duas atribui es separadas s o feitas o padr o de sa da para data hora e a interpreta o da entrada amb gua Estes s o os estilos de sa da para data hora ISO Usa o estilo ISO 8601 para data e hora YYYY MM DD HH MM SS Este o padr o SET SQL Usa o estilo Oracle Ingres para data e hora Observe que este estilo n o tem relag o com o SQL que define o estilo ISO 8601 O nome desta op o apenas um acidente hist rico PostgreSQL Usa o formato tradicional do PostgreSQL Ger
212. o comprimento isto permite tratar OIDs de 4 bytes versus 8 bytes sem muita dificuldade e permite os OIDs serem mostrados como NULL se por acaso for desejado Rodap do Arquivo O rodap do arquivo consiste em uma palavra int16 contendo 1 sendo facilmente distingu vel da palavra contador de campos da tupla O leitor deve relatar um erro se a palavra contador de campos n o for 1 nem o n mero esperado de colunas fornecendo uma verifica o extra com rela o a perda de sincroniza o com os dados Utiliza o O exemplo a seguir copia uma tabela para a sa da padr o usando a barra vertical como delimitador de campo COPY paises TO stdout USING DELIMITERS Para copiar dados de um arquivo Unix para a tabela paises COPY paises FROM usrl proj bray sqgl paises txt COPY Abaixo est um exemplo de dados apropriados para se copiar para a tabela a partir de stdin por isso possui a sequ ncia de termina o na ltima linha AF AL DZ ZM ZW Ns Observe que os espa os em branco em cada linha s o na verdade o caractere de tabula o AFGHANISTAN ALBANIA ALGERIA ZAMBIA ZIMBABW Abaixo s o os mesmos dados escritos no formato bin rio em uma m quina Linux 1586 Os dados mostra dos foram filtrados atrav s do utilit rio do Unix od c A tabela possui tr s campos o primeiro char 2 o segundo text o terceiro integer Todas as linhas possuem um valor nu
213. o ABORT desfaz a transa o corrente fazendo com que todas as modifica es realizadas pela transa o sejam rejeitadas Este comando possui um comportamento id ntico ao do comando ROLLBACK do SQL92 estando presente apenas por raz es hist ricas Notas Use o comando COMMIT para terminar uma transa o com sucesso Utiliza o Para abortar todas as modifica es ABORT WORK ABORT Compatibilidade SQL92 Este comando uma extens o do PostgreSQL presente apenas por raz es hist ricas O comando equiva lente do SQL92 o ROLLBACK ALTER GROUP Name ALTER GROUP inclui ou exclui usu rios em um grupo Synopsis ALTER GROUP nome ADD USER nome do usu rio ALTER GROUP nome DROP USER nome do usu rio Entradas nome O nome do grupo a ser modificado nome do usu rio Os usu rios a serem inclu dos ou exclu dos no grupo Os nomes dos usu rios devem existir Sa das ALTER GROUP Mensagem retornada se a altera o for realizada com sucesso Descri o O comando ALTER GROUP utilizado para incluir ou excluir usu rios em um grupo Somente os supe rusu rios do banco de dados podem utilizar este comando Incluir um usu rio em um grupo n o cria o usu rio Analogamente excluir um usu rio de um grupo n o exclui o usu rio do banco de dados Use o CREATE GROUP para criar um novo grupo eo DROP GROUP para remover um grupo Utiliza o Incl
214. o PostgreSQL linguagem TRUNCATE Name TRUNCATE esvazia a tabela Synopsis TRUNCATE TABLE nome Entradas nome O nome da tabela a ser truncada Sa das TRUNCATE Mensagem retornada se a tabela for truncada com sucesso Descri o O comando TRUNCATE remove rapidamente todas as linhas da tabela Tem o mesmo efeito do comando DELETE sem a cl usula WHERE mas como n o varre a tabela mais r pido mais vantajoso para tabelas grandes O comando TRUNCATE n o pode ser utilizado dentro de um bloco de transa o delimitado por BEGIN COMMIT porque n o existe a possibilidade de desfaz lo Utiliza o Truncar a tabela tbl grande TRUNCATE TABLE tbl grande TRUNCATE Compatibilidade SQL92 N o existe o comando TRUNCATE no SQL92 UNLISTEN Name UNLISTEN p ra de escutar uma notificag o Synopsis UNLISTEN nome notifica o Entradas nome notifica o O nome de uma condi o de notifica o registrada previamente Todos os registros de escuta atuais deste processo servidor s o removidos Sa das UNLISTEN Constata que o comando foi executado Descri o O comando UNLISTEN utilizado para remover um registro de NOTIFY existente UNLISTEN cancela qualquer registro existente da sess o corrente do PostgreSQL para escutar a condi o de notifica o nome notifica o A condi o e
215. o comando VACUUM no SQL92 II Aplicativos para a esta o cliente do PostgreSQL Esta parte cont m informa es de refer ncia para os aplicativos e utilit rios usados na esta o cliente do PostgreSQL Nem todos os comandos s o de uso geral alguns requerem privil gios especiais para serem executados A caracter stica comum destes aplicativos que podem ser executados a partir de qualquer computador independentemente de onde o servidor de banco de dados esteja instalado createdb Name createdb cria um novo banco de dados do PostgreSQL Synopsis createdb op es nome bd descri o Entradas h host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es U username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha e echo Exibe os comandos que o createdb gera e envia para o servidor q quiet N o exibe a resposta D location diret rio_de_dados Especifica o local alternativo de banco de dados Consulte tamb m o aplicativo initlocation T template gabarito Especifica o banco de dados de gabarito a partir do qual este banco de dados ser gerado E encoding cod
216. o d gitos for 0 os caracteres s o interpretados como um n mero octal e o caractere correspondente substitu do Sen o um n mero decimal assumido nome O valor da vari vel nome do psql Veja a seg o Vari veis para obter detalhes comando A sa da do comando similar substitui o de crase normal Para inserir um sinal de percentagem no prompt deve se escrever 3 Os prompts padr o s o equiva lentes a 5 R paraos prompts le2 e gt gt parao prompt 3 63 psql Note Esta funcionalidade foi plagiada da tcsh Miscel nea O psq l retorna O se terminar normalmente 1 se ocorrer um erro fatal pr prio falta de mem ria arquivo n o encontrado 2 se a conex o com o servidor teve problema e a sess o n o interativa e 3 se ocorrer um erro em um script e a vari vel ON ERROR STOP estiver definida Antes de come ar o psql tenta ler e executar os comandos do arquivo SHOME psqlrc Este pode ser usado para configurar o cliente ou o servidor conforme se deseje usando os comandos set e SET Biblioteca de hist rico GNU O psql suporta as bibliotecas de hist rico e de leitura de linha por ser conveniente para a edi o e recuper a o da linha O hist rico dos comandos armazenado no arquivo chamado psql history no diret rio home sendo recarregado quando o psql inicia Completa o por tabula o tamb m suportado embora a l gica da completa o n o pretenda ser a
217. o de execu o designado Consulte o Guia do Administrador para obter a rela o destes par metros e as suas descri es A maior parte das outras op es de linha de comando s o na verdade formas curtas de atribui o destes par metros A op o c pode aparecer v rias vezes para definir v rios par metros dn vel de depura o Define o n vel de depura o DEBUG LEVEL n vel de depura o Quanto maior for definido este valor mais sa da de depura o ser escrita no log do servidor O padr o 0 que significa sem depura o Valores at 4 s o teis n meros maiores n o produzem nenhuma sa da adicional D diret rio de dados Especifica a localiza o do diret rio de dados no sistema de arquivos Veja a discuss o acima Desativa as chamadas a sync para melhorar o desempenho correndo o risco de corrup o dos dados na ocorr ncia de uma falha do sistema FSYNC OFF Leia a documenta o antes de usar esta op o h nome do hospedeiro Especifica o nome ou o endere o do hospedeiro TCP IP no qual o postmaster vai aguardar as conex es dos aplicativos clientes VIRTUAL HOST nome do hospedeiro Por padr o aguarda em todos os endere os configurados incluindo localhost Permite os clientes se conectarem via TCP IP Dom nio da Internet TCPIP SOCKET TRUE Sem esta op o somente as conex es via soquete do dom nio local Unix s o aceitas k diret rio Especifica o diret rio do soqu
218. o n mero de porta A maneira mais f cil de se ver usando o comando ps ax grep postmaster ou ps e grep postmaster dependendo do sistema operacional Havendo certeza de que nenhum outro processo postmaster est executando e o erro continuar acon tecendo deve se tentar especificar uma porta diferente usando a op o p poss vel acontecer este erro se o postmaster for terminado e imediatamente reiniciado usando a mesma porta neste caso deve se simplesmente aguardar alguns segundos at que o sistema operacional feche a porta antes de tentar novamente Finalmente este erro pode acontecer se for especificado um n mero de porta que o sistema operacional considera ser reservado Por exemplo muitas vers es do Unix consid eram os n meros de porta abaixo de 1024 como sendo trusted confiadas e s permite o acesso aos superusu rios do Unix Notas Sempre que for poss vel n o use o SIGKILL para terminar o postmaster Isto impede que o postmaster libere os recursos do sistema utilizados por exemplo mem ria compartilhada e sem foros antes de terminar Para terminar o postmaster normalmente os sinais SIGTERM SIGINT ou SIGQUIT podem ser usados O primeiro aguarda todos os clientes terminarem antes de fechar o segundo for a a desconex o de todos os clientes e o terceiro fecha imediatamente sem um shutdown apropriado acarretando a execu o da recupera o ao reiniciar O comando utilit rio pg ctl pode s
219. o pelo postmaster fazendo suposi es diferentes sobre o geren ciamento do buffer pool descritores de arquivos etc t pa rser pl anner e xecutor Exibe estat sticas de tempo para cada comando relacionando com cada um dos principais m dulos do sistema Esta op o n o pode ser usada junto com a op o s v vers o do protocolo Especifica o n mero da vers o do protocolo cliente servidor a ser usado por esta sess o em particular W segundos T o logo esta op o seja encontrada o processo adormece a quantidade especificada de segundos dando ao desenvolvedor tempo para ligar o depurador ao processo servidor Utiliza o Inicie o servidor aut nomo com um comando do tipo postgres D SPGDATA outras op es meu bd 87 postgres Forne a o caminho correto para a rea de banco de dados com D ou garanta que a vari vel de ambiente PGDATA esteja definida Tamb m especifique o nome do banco de dados em que deseja trabalhar Normalmente o servidor aut nomo trata o caractere de nova linha como t rmino da entrada n o existe intelig ncia com rela o ao ponto e v rgula como existe no psql Para continuar um comando por v rias linhas deve se digitar uma contrabarra Y logo antes de cada nova linha exceto a ltima Mas se for usada a chave de linha de comando N o caractere de nova linha n o termina a entrada do comando O servidor vai ler a entrada padr o at a marca de fim de arquivo EOF e ent
220. o processados da esquerda para a direita a menos que os par nteses estabele am outra ordem INTERSECT tem preval ncia sobre UNION ou seja A UNION B INTERSECT C processado como A UNION B INTERSECT C a menos que outra ordem seja estabelecida pelo uso de par nteses A cl usula EXCEPT tabela consulta EXCEPT ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL OFFSET in cio onde tabela consulta especifica qualquer express o de sele o sem as cl usulas ORDER BY FOR UPDATE ou LIMIT EXCEPT semelhante a UNION exceto que retorna somente as linhas presentes na sa da da consulta esquerda mas que n o est o presentes na sa da da consulta direita O resultado do EXCEPT n o possui nenhuma linha repetida a menos que a op o ALL seja especificada Com ALL uma linha que possui m repeti es em L e n repeti es em R aparece max m n 0 vezes Quando existem v rios operadores EXCEPT no mesmo comando SELECT estes s o processados da esquerda para a direita a menos que os par nteses estabele am outra ordem EXCEPT possui o mesmo n vel de preced ncia de UNION A cl usula LIMIT LIMIT contador ALL OFFSET in cio onde contador especifica o n mero m ximo de linhas retornadas e in cio especifica o n mero de linhas a serem saltadas antes de come ar a retornar as linhas O contador LIMIT permite que seja re
221. objeto usado o comando Y connect do psql Este comando na verdade abre uma nova conex o o que pode requerer a interven o manual por exemplo senhas Se for usada a op o x use set session authorization ent o o Pg dump vai usar o comando SET SESSION AUTHORIZATION Embora produza o mesmo efeito 32 pg_dump requer que o usu rio que for fazer a importa o do banco de dados a partir do script gerado seja um superusu rio Esta op o substitui a op o R Como o SET SESSION AUTHORIZATION um comando SQL padr o enquanto o connect so mente funciona no psql esta op o tamb m aumenta a portabilidade te rica do script gerado Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore Z0 9 compress 0 9 Especifica o n vel de compress o a ser usado nos arquivos com formatos que suportam compress o atualmente somente o formato personalizado suporta compress o O pg dump tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix pporta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es O padr o para o n
222. ocedurais atualmente instaladas Table pg language Attribute Type Modifier lanname name lanispl boolean lanpltrusted boolean lanplcallfoid oid lancompiler text lanname lanispl lanpltrusted lanplcallfoid lancompiler internal C sql Fh Ph hh CREATE LANGUAGE Hmh Ph bh O O bin cc 0 postgres Atualmente a defini o de uma linguagem procedural n o pode ser mudada ap s ter sido criada Exemplos Os dois comandos mostrados abaixo executados em seq ncia registram uma nova linguagem procedural e o tratador de chamadas associado CREATE FU CREATE CTIO E C UAGE minha pl minha pl trata chamada RETURNS opaque AS Slibdir minha pl LANGUAG LA HANDLER minha pl trata chamada Compatibilidade O comando CRE Hist rico O comando CRE ATE ATE LANGUAGE uma extens o do PostgreSQL linguagem LANGUAGE apareceu pela primeira vez no PostgreSQL 6 3 Consulte tamb m createlang CREATE FUNCTION droplang DROP LANGUAGE Guia do Programador do PostgreSQL CREATE OPERATOR Name CREATE OPERATOR define um novo operador Synopsis CREATE OPERATOR nome PROCEDURE nome_da_func o LEFTARG tipo_esquerdo RIGHTARG tipo direito COMMUTATOR op comutador NEGATOR op negador RESTRICT proc_restr
223. ode ser editado manualmente 83 pg passwd Consulte tamb m Guia do Administrador do PostgreSQL 84 postgres Name postgres executa o servidor PostgreSQL no modo monousu rio Synopsis postgres A 011 B num buffers c nome valor d n vel de depura o D diret rio de dados e El f s 1 t ln m h LA 1 LN ro nome do arquivo O P ss t pa pl ex S mem ria para ordena o W segundos nome valor banco de dados postgres A 011 I B num buffers c nome valor d n vel de depura o D diret rio de dados e sliltIin lmilh Fl 4 o nome do arquivo 0 p banco de dados P s t pa pl ex S mem ria para ordena o v vers o do protocolo W segundos nome valor Descri o O execut vel postgres o verdadeiro processo servidor que processa os comandos do PostgreSQL Normalmente n o chamado diretamente em vez dele um servidor multiusu rio postmaster ativado A segunda forma mostrada acima como o postgres chamado pelo postmaster somente conceitual mente porque o postmaster e o postgres s o de fato o mesmo programa n o deve ser chamado diretamente desta maneira A primeira forma chama o servidor diretamente em modo monousu rio in terativo A utiliza o mais frequente deste modo durante a inicializa o pelo initdb Algumas vezes utilizado para depura o ou para recupera o de desastre Quando c
224. ode mudar a participa o do usu rio nos grupos Use o ALTER GROUP para realizar esta opera o Use o CREATE USER para criar um novo usu rio e o DROP USER para remover um usu rio Utiliza o Mudar a senha do usu rio ALTER USER marcos WITH PASSWORD hu83mn3 Mudar a data de expira o da senha do usu rio ALTER USER manuel VALID UNTIL Jan 31 2030 Mudar a data de expira o da senha do usu rio especificando que sua autoriza o expira ao meio dia de 4 de maio de 1998 usando uma zona hor ria uma hora adiante da UTC ALTER USER cristina VALID UNTIL May 4 12 00 00 1998 1 Dar ao usu rio poderes para criar outros usu rios e novos bancos de dados ALTER USER marcela CREATEUSER CREATEDB ALTER USER Compatibilidade SQL92 N o existe o comando ALTER USER no SQL92 O padr o deixa a defini o dos usu rios para a imple menta o ANALYZE Name ANALYZE coleta estat sticas sobre um banco de dados Synopsis ANALYZE VERBOSE tabela coluna 1 Entradas VERBOSE Ativa a exibi o de mensagens de progresso tabela O nome de uma tabela espec fica a ser analisada Por padr o todas as tabelas coluna O nome de uma coluna espec fica a ser analisada Por padr o todas as colunas Sa das ANALYZE O comando est conclu do Descri o O comando ANALYZE cole
225. om este c digo num rico Atualmente o COPY TO nunca gera uma seq ncia contrabarra d gitos octais mas as outras seq ncias de contrabarra listadas acima s o utilizadas para estes caracteres de controle Nunca coloque uma contrabarra antes dos caracteres de dado N ou ponto sen o os dois ser o interpre tados erroneamente como a cadeia de caracteres nula padr o e o marcador de fim dos dados respectiva mente Qualquer outro caractere n o mencionado na tabela acima interpretado como representando a si pr prio fortemente recomendado que os aplicativos que geram dados para o COPY convertam os caracteres de nova linha e de retorno de carro presentes nos dados em seqii ncias An e r respectivamente No presente momento PostgreSQL 7 2 e vers es mais antigas poss vel se representar um retorno de carro nos dados sem nenhuma segii ncia especial e representar a nova linha nos dados por uma contrabarra seguida por um caractere de nova linha Entretanto estas representa es n o ser o aceitas por padr o nas vers es futuras Observe que o fim de cada linha marcado por um caractere de nova linha no estilo Unix An Atual mente o COPY FROM n o se comporta de forma adequada quando o arquivo especificado cont m o fim de linha no estilo MS DOS ou Mac Espera se que isto mude em vers es futuras Formato Bin rio O formato do arquivo usado pelo copy BINARY mudou no PostgreSQL v7 1 O novo formato do arquivo
226. omando SQL CREATE DATABASE atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nada em especial sobre criar bancos de dados desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq Utiliza o Para criar o banco de dados demo usando o servidor de banco de dados padr o createdb demo CREATE DATABASE A resposta a mesma que teria sido recebida se fosse executado o comando SQL CREATE DATABASE createdb Para criar o banco de dados demo usando o servidor na m quina eden porta 5000 usando o esquema de codifica o LATIN1 e vendo o comando subjacente createdb p 5000 h eden E LATIN1 e demo CREATE DATABASE demo WITH ENCODING LATIN CREATE DATABASE createlang Name createlang define uma nova linguagem procedural do PostgreSQL Synopsis createlang op es de conex o nome da linguagem nome ba createlang op es de conex o listl l nome bd Entradas O createlang aceita os seguintes argumentos de linha de comando nome da linguagem Especifica o nome da linguagem de programa o procedural a ser definida d dbname nome bd Especifica em qual banco de dados a linguagem deve ser adicionada O padr o usar o banco de dado
227. opsis DROP GROUP nome Entradas nome O nome de um grupo existente Sa das DROP GROUP Mensagem retornada se o grupo for removido com sucesso Descric o O comando DROP GROUP remove do banco de dados o grupo especificado Os usu rios cadastrados no grupo n o s o removidos Use o CREATE GROUP para criar grupos novos e o ALTER GROUP para gerenciar os membros do grupo Utiliza o Para eliminar um grupo DROP GROUP engenharia DROP GROUP Compatibilidade SQL92 N o existe o comando DROP GROUP no SQL92 DROP INDEX Name DROP INDEX remove um ndice Synopsis DROP INDEX nome_do_ ndice Entradas nome_do_ ndice O nome do ndice a ser removido Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR index nome do ndice does not exist Esta mensagem ocorre se nome do ndice n o for um ndice no banco de dados Descri o O comando DROP INDEX remove um ndice existente no sistema de banco de dados Para executar este comando necess rio ser o dono do ndice Notas O comando DROP INDEX uma extens o da linguagem do PostgreSQL Consulte o comando CREATE INDEX para obter informa es sobre como criar ndices DROP INDEX Utiliza o Remover o ndice titulo idx DROP INDEX titulo idx Compatibilidade SQL92 O SQL92 define comandos atrav s dos quais um banco de dados relacional gen rico pode ser
228. or que n o esteja entre aspas convertido para letras min sculas Para todos os outros comandos as aspas n o s o especiais se tornando parte do argumento A leitura dos argumentos termina quando outra contrabarra n o entre ap strofos encontrada Esta considerada como sendo o in cio de um novo meta comando A segii ncia especial 11 duas contrabar ras marca o fim dos argumentos e prossegue analisando os comandos SQL se existirem Desta forma os comandos SQL e psql podem ser livremente misturados em uma linha Mas em nenhum caso os argumentos do meta comando podem continuar al m do fim da linha 46 psql Os seguintes meta comandos est o definidos Ya Se o formato atual de sa da da tabela for desalinhado muda para alinhado Se n o for desalinhado define como desalinhado Este comando mantido para compatibilidade com as vers es anteriores Veja o Ypset para uma solu o geral Ycd nome do diret rio Muda o diret rio de trabalho corrente para nome do diret rio Sem argumento muda para o diret rio home do usu rio corrente Tip Para ver o diret rio de trabalho corrente use Y pwa wc t tulo Define o t tulo de qualquer tabela sendo exibida como resultado de uma consulta ou remove a defini o deste t tulo Este comando equivalente ao Npset title t tulo O nome deste co mando deriva de caption t tulo porque anteriormente s era usado para definir o t tulo de uma tabela em
229. or usado A semente tamb m pode ser definida atrav s da fun o set seed do SQL SELECT setseed valor SET SERVER_ENCODING Define a codifica o multibyte do servidor Esta op o somente est dispon vel quando o PostgreSQL for gerado com suporte para multibyte TIME ZONE TIMEZONE Define a zona hor ria padr o para a sess o Os argumentos podem ser uma constante SQL de inter valo de tempo uma constante inteira ou de precis o dupla ou uma cadeia de caracteres representando uma zona hor ria suportada pelo sistema operacional hospedeiro Os valores poss veis para a zona hor ria dependem do sistema operacional Por exemplo no Linux o arquivo usr share zoneinfo cont m um banco de dados de zona hor ria Abaixo est o mostrados alguns valores v lidos para a zona hor ria PST8PDT Zona hor ria para a Calif rnia Portugal Zona hor ria para Portugal Europe Rome Zona hor ria para a It lia Zona hor ria com 7 horas de deslocamento oeste do GMT equivalente PDT INTERVAL 08 00 HOUR TO MINUTE Zona hor ria com 8 horas de deslocamento oeste do GMT equivalente PST LOCAL DEFAULT Define como sendo a zona hor ria local a zona hor ria do sistema operacional Se uma zona hor ria inv lida for especificada a zona hor ria torna se GMT na maioria dos sis temas Se a vari vel de ambiente PGTZ tiver valor atribu do numa esta o do cliente baseada na lib
230. ores distintos da sequ ncia os valores podem ser gerados fora de sequ ncia quando s o leva dos em conta todos os servidores Por exemplo com um cache de 10 o servidor A pode reservar os valores de 1 a 10 e usar o pr ximo valor igual a 1 ent o o servidor B pode reservar os valores de 11 a 20 e usar o pr ximo valor igual a 11 antes do servidor A ter usado o pr ximo valor igual a 2 Assim com um valor para cache igual a 1 seguro assumir que os valores da fun o nextval s o gera dos sequencialmente com um valor para cache maior do que 1 pode se assumir que os valores da fun o nextval s o todos distintos mas n o que sejam ger ados de forma puramente sequencial Al m disso o valor do campo last value reflete o ltimo valor reservado por qualquer servidor independentemente de ter sido ou n o retornado por uma chamada fun o next val Outra considera o a ser feita que a fun o setval executada neste tipo de sequ ncia n o vai fazer efeito em outro servidor at que este tenha utilizado todos os valores pr alocados em mem ria Notas Use o comando DROP SEQUENCE para excluir uma segii ncia As seqii ncias s o baseadas em aritm tica de tipo bigint por isso a faixa de valores n o pode ultrapassar a faixa permitida para n meros inteiros de 8 bytes 9223372036854775808 a 9223372036854775807 Em algumas plataformas mais antigas pode n o haver suporte do compilador para n meros inteiros
231. ornado AS defini o LANGUAGE nome ling WITH atributo CREATE OR REPLACE FUNCTION nome RETURNS tipo_retornado ANGUAGE nome ling WITH atributo Descric o AS arq objeto simbolo_de liga o tipo do argumento 1 tipo do argumento 1 O comando CREATE FUNCTION define uma nova fun o O comando CREATE OR REPLACE FUNCTION tanto cria uma nova fun o quanto substitui uma fun o existente Par metros nome O nome da fun o a ser criada N o necess rio que o nome seja nico porque as fun es podem ser sobrecarregadas overloaded mas as fun es que possuem o mesmo nome devem ter argumentos de tipos diferentes tipo do argumento Os tipos de dado dos argumentos da fun o caso existam Os tipos de dado da entrada podem ser o tipo base complexo opaque ou o mesmo tipo de uma coluna existente Opaque indica que a fun o aceita argumentos de tipo n o SQL como o char O tipo de dado da coluna referenciado escrevendo se nome da tabela nome da colunaSTYP E utilizando se esta nota o ajuda a fun o se tornar independente das mudan as ocorridas na estrutura da tabela tipo retornado O tipo do dado retornado O tipo de dado retornado pode ser especificado como um tipo base com plexo setof opaque ou o mesmo tipo de uma coluna existente O modificador setof indica que a fun o
232. os de notifica o depende da interface de programa o de aplicativos API do PostgreSQL sendo usada Usando a biblioteca libpq b sica o aplica tivo executa o comando LISTEN como um comando SQL comum e depois passa a chamar periodicamente a rotina PQnotifies para descobrir se algum evento de notifica o foi recebido Outras interfaces como a libpgtcl fornecem m todos de n vel mais alto para tratar os eventos de notifica o na verdade us ando a libpgtcl o programador do aplicativo n o precisa nem executar o comando LISTEN ou UNLISTEN diretamente Consulte a documenta o da biblioteca sendo usada para obter mais detalhes O comando NOTIFY cont m uma discuss o mais extensa da utiliza o do comando LISTEN e do comando NOTIFY Notas nome pode ser qualquer cadeia de caracteres v lida como um nome n o precisa corresponder ao nome de qualquer tabela existente Se nome notifica o estiver entre aspas n o necess rio nem que seja um nome com uma sintaxe v lida pode ser qualquer cadeia de caracteres com at 31 caracteres Em algumas vers es anteriores do PostgreSQL o nome tinha que vir entre aspas quando n o correspondia a nenhum nome de tabela existente mesmo que sintaticamente fosse um nome v lido mas n o mais necess rio Utiliza o Configurar e executar a segii ncia escutar notificar usando o psql LISTEN virtual NOTIFY virtual Asynchronous NOTIFY virtual from backend wit
233. os do array delimitador O caractere delimitador a ser usado entre os valores nos arrays feitos deste tipo padr o O valor padr o para o tipo de dado Usualmente omitido fazendo com que NULL seja o padr o CREATE TYPE fun o de envio O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados deste tipo em uma forma adequada para transmitir para outra m quina fun o de recep o O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados deste tipo da forma de transmiss o para a forma interna alinhamento Alinhamento de armazenamento requerido por este tipo de dado Se for especificado deve ser char int2 int4 OU double o padr o int 4 armazenamento T cnica de armazenamento para este tipo de dado Se for especificado deve ser plain external extended ou main O padr o plain Sa das CREATE Mensagem retornada se o tipo for criado com sucesso Descri o O comando CREATE TYPE permite ao usu rio registrar um novo tipo de dado do usu rio no PostgreSQL para ser usado no banco de dados corrente O usu rio que define o tipo se torna o seu dono O nome do tipo o nome do novo tipo devendo ser nico entre os tipos definidos para este banco de dados O comando CREATE TYPE requer o registro de duas fun es usando CREATE FUNCTION antes de definir o tipo A representa o do novo tipo base de
234. ossui permiss o de leitura SELECT na tabela e joe arwR O usu rio joe possui permiss o para ler escrever UPDATE DELE INSERT e criar regras na tabela H E apensar group staff ar O grupo staff possui permiss o para SELECT INSERT Os comandos GRANT e REVOKE s o usados para definir as permiss es de acesso NM comando Abre outra she11 do Unix ou executa o comando Unix comando Os comandos deixam de ser interpretados e s o enviados para a she11 como est o Ne Obt m informa o de ajuda para os comandos de contrabarra V 55 psql Op es de linha de comando Caso esteja configurado adequadamente o psql trata tanto as op es curtas no estilo Unix padr o quanto as op es longas no estilo GNU Estas ltimas n o est o dispon veis em todos os sistemas operacionais a echo all Exibe todas as linhas na tela ao serem lidas mais til para o processamento de scripts do que no modo interativo Equivale a definir a vari vel ECHO como a11 A no align Muda para o modo de sa da n o alinhado Sen o o modo de sa da padr o ser o alinhado C command comando Especifica que o psql deve executar a cadeia de caracteres comando e depois terminar til para scripts O comando deve ser uma cadeia de caracteres que possa ser integralmente analisada pelo servidor ou seja n o cont m nenhuma funcionalidade espec fica do psql
235. ossuir o privil gio de superusu rio do PostgreSQL para poder registrar uma nova linguagem O comando CREAT define uma nova linguagem procedural PROCEDURAL LANGUAGE nome da linguagem ANGUAGE um usu rio do PostgreSQL pode registrar uma nova linguagem LANGUAGI E associa o nome da linguagem com o tratador de chamadas call handler que respons vel por executar as fun es escritas nesta linguagem Consulte o Guia do Programador para obter mais informa es sobre os tratadores de chamadas das linguagens Observe que as linguagens procedurais s o locais a cada bancos de dados Para tornar uma linguagem dispon vel a todos os bancos de dados por padr o esta linguagem deve ser instalada no banco de dados templatel Par metros TRUSTED TRUSTED especifica que o tratador de chamadas para a linguagem seguro ou seja n o oferece a um usu rio sem privil gios qualquer funcionalidade para contornar as restri es de acesso Se esta palavra chave for omitida ao registrar a linguagem somente usu rios do PostgreSQL com privil gio de superusu rio v o poder usar esta linguagem para criar novas fun es PROCEDURAL Apenas informativo nome da linguagem O nome da nova linguagem procedural N o existe distin o entre letras min sculas e mai sculas Uma linguagem procedural n o pode substituir uma das linguagens nativas do PostgreSQL Por compatibilidade com as
236. ost testdb gt Mpset fieldsep Field separator is peterftlocalhost testdb gt Mpset tuples only Showing only tuples peterftlocalhost testdb gt SELECT second first FROM minha tabela one 1 two 2 three 3 four 4 Alternativamente podem ser usados os comandos curtos peterflocalhost testdb gt Na Mt Ax Output format is aligned Tuples only is off Expanded display is on peterflocalhost testdb gt SELECT FROM minha tabela RECORD 1 first 1 second one RECORD 2 first 2 second two RECORD 3 first 3 second three RECORD 4 first 4 second four Ap ndice Problemas e Nas vers es iniciais o psql permitia o primeiro argumento come ar logo ap s o comando letra nica Por motivo de compatibilidade isto ainda suportado de alguma forma que n o ser explicada em 66 psql detalhes aqui porque desencorajado Mas se forem recebidas mensagens estranhas tenha isso em mente Por exemplo testdb gt foo Field separator is oo o que talvez n o seja o esperado O psql somente trabalha adequadamente com servidores da mesma vers o Isto n o significa que outras combina es v o falhar inteiramente mas problemas sutis e nem t o sutis podem acontecer Pressionar Control C durante um copy in envio de dados para o servidor n o apresenta o mais ideal dos comportamentos Se for recebida uma mensagem como COPY state must be
237. osta por uma ou mais consultas Para escrever v rias consultas deve se coloc las entre par nteses ou entre colchetes Estas consultas ser o realizadas na ordem especificada enquanto que n o h garantia sobre a ordem de execu o de m ltiplas regras para o objeto A a o tam b m pode ser NOTHING indicando nenhuma a o Portanto a regra DO INSTEAD NOTHING suprime a execu o da consulta original quando sua condi o for verdadeira uma regra DO NOTHING n o tem utilidade A parte a o da regra executa com o mesmo identificador do comando e da transa o do comando do usu rio que causou sua ativa o Regras e Vis es Atualmente as regras ON SELECT devem ser regras incondicionais INSTEAD e devem possuir a es compostas por uma nica consulta SELECT Portanto uma regra ON SELECT torna efetivamente a tabela objeto em uma vis o cujo conte do vis vel s o as linhas retornadas pela consulta SELECT da regra em vez de qualquer outra coisa que tenha sido armazenada na tabela se houver considerado um estilo melhor escrever um comando CREATE VIEW do que criar uma tabela real e definir uma regra ON SELECT para esta tabela O comando CREATE VIEW cria uma tabela fict cia sem armazenamento subjacente e associa uma regra ON SELECT a esta tabela O sistema n o permite atualiza es na vis o porque sabe que n o existe CREATE RULE uma tabela real Pode ser criada a ilus o de uma vis o atualiz vel definindo se regr
238. p Point palloc sizeof Point p gt x Z gt xX p gt y z gt y return p Compatibilidade O comando CREATE FUNCTION definido no SQL99 A vers o do PostgreSQL similar mas n o totalmente compat vel Os atributos n o s o port veis nem as diferentes linguagens dispon veis o s o CREATE FUNCTION Consulte tamb m DROP FUNCTION LOAD Guia do Programador do PostgreSQL CREATE GROUP Name CREATE GROUP define um novo grupo de usu rios Synopsis CREATE GROUP nome WITH op o onde op o pode ser SYSID gid USER nome usu rio Entradas nome O nome do grupo gid A cl usula SYSID pode ser utilizada para escolher o identificador do novo grupo no PostgreSQL Entretanto n o h necessidade de ser utilizada Se esta cl usula n o for especificada o valor do identificador mais alto atribu do a um grupo acrescido de um come ando por 1 ser utilizado por padr o nome usu rio A rela o dos usu rios a serem inclu dos no grupo Os usu rios devem existir Sa das CREATE GROUP Mensagem retornada se o comando for executado com sucesso CREATE GROUP Descric o O comando CREATE GROUP cria um novo grupo na instala o de banco de dados Consulte o Guia do Administrador do PostgreSQL para obter mais informa es sobre a utiliza o de grupos para autentica o necess rio ser um superusu
239. p s os dados terem sido inseridos Se a restaura o for interrompida no meio os cat logos do sistema podem ficar em um estado errado Opg restore n o restaura objetos grandes para uma nica tabela Se o arquivo de exporta o cont m objetos grandes ent o todos os objetos grandes s o restaurados Consulte a documenta o do pg dump para obter detalhes sobre as limita es do pg dump Exemplos Para exportar um banco de dados pg dump meu bd gt bd out Para importar este banco de dados psql d database f bd out Para exportar um banco de dados chamado meu bd que cont m objetos grandes para um arquivo tar pg dump Ft b meu bd gt bd tar Para importar este banco de dados com os objetos grandes para um banco de dados existente chamado bd novo pg restore d bd novo bd tar Para reordenar os itens do banco de dados primeiro neces rio exportar a tabela de conte do ndice do arquivo de exporta o pg restore 1 argexp file gt arqgexp list O arquivo de listagem consiste do cabe alho e de uma linha para cada item como no exemplo abaixo Archive created at Fri Jul 28 22 28 36 2000 7 dbname birds TOC Entries 74 E Compression 0 Dump Version 1 4 0 E Format CUSTOM 43 pg restore Selected TOC Entries 2 145344 TABLE species postgres 3 145344 ACL species 4 145359 TABLE nt header postgres 5 145359 ACL nt head
240. para obter informa es sobre como criar regras Quando a regra removida o acesso s informa es hist ricas escritas pela regra pode desaparecer Utiliza o Para remover a regra nova regra DROP RULE nova regra Compatibilidade SQL92 N o existe o comando DROP RULE no SQL92 DROP RULE DROP SEQUENCE Name DROP SEQUENCE remove uma seqii ncia Synopsis DROP SEQUENCE nome Entradas nome O nome da seqii ncia Sa das DROP Mensagem retornada se a sequ ncia for removida com sucesso ERROR sequence nome does not exist Esta mensagem ocorre quando a segii ncia especificada n o existe Descri o O comando DROP SEQUENCE remove do banco de dados o gerador de n meros sequenciais Na imple menta o atual das seqii ncias como tabelas especiais este comando funciona de maneira an loga ao comando DROP TABLE Notas O comando DROP SEQUENCE uma extens o do PostgreSQL linguagem Consulte o comando CREATE SEQUENCE para obter informa es sobre como criar sequ ncias Utiliza o Para remover do banco de dados a seqii ncia serial DROP SEQUENCE serial Compatibilidade SQL92 N o existe o comando DROP SEQUENCE no SQL92 DROP SEQUENCE DROP TABLE Name DROP TABLE remove uma tabela Synopsis DROP TABLE nome
241. para obter mais informa es Utiliza o Para mostrar o plano da consulta para uma consulta simples em uma tabela com uma nica coluna int 4 e 128 linhas EXPLAIN SELECT FROM foo NOTICE QUERY PLAN Seg Scan on foo cost 0 00 2 28 rows 128 width 4 EXPLAIN EXPLAIN Para a mesma tabela contendo um ndice para dar suporte a uma condi o de egiiijun o na consulta o comando EXPLAIN mostra um plano diferente EXPLAIN SELECT FROM foo WHERE i 4 NOTICE QUERY PLAN Index Scan using fi on foo cost 0 00 0 42 rows 1 width 4 EXPLAIN E finalmente para a mesma tabela contendo um ndice para dar suporte a uma condi o de egiiijun o na consulta o comando EXPLAIN mostra o seguinte para uma consulta contendo uma fun o de agrega o EXPLAIN SELECT sum i FROM foo WHERE i 4 NOTICE QUERY PLAN Aggregate cost 0 42 0 42 rows 1 width 4 gt Index Scan using fi on foo cost 0 00 0 42 rows 1 width 4 Observe que os n meros espec ficos mostrados e mesmo a estrat gia selecionada para a consulta pode variar entre vers es do PostgreSQL devido a melhorias no planejador Compatibilidade SQL92 N o existe o comando EXPLAIN no SQL92 FETCH Name FETCH busca linhas de uma tabela usando um cursor Synopsis FETCH dire o contador IN FROM cursor FETCH FORWARD BACKWARD RELATIVE
242. parte das cl usulas WHERE GROUP BY ou ORDER BY das consultas porque as estat sticas destas colunas n o t m utilidade para o otimizador O maior n mero de estat sticas entre as colunas sendo analisadas determina o n mero de linhas amostradas para preparar as estat sticas Aumentando o n mero de estat sticas por coluna causa um aumento proporcional no tempo e espa o necess rio para executar o comando ANALYZE Compatibilidade SQL92 N o existe o comando ANALYZE no SQL92 BEGIN Name BEGIN inicia um bloco de transa o Synopsis BEGIN WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das BEGIN Significa que uma nova transa o come ou NOTICE BEGIN already a transaction in progress Indica que uma transa o est sendo executada A transa o corrente n o afetada Descri o Por padr o o PostgreSQL executa as transa es em modo n o encadeado tamb m conhecido por au tocommit auto efetiva o em outros sistemas de banco de dados Em outras palavras cada comando executado em sua pr pria transa o e uma efetiva o implicitamente realizada ao final do comando se a execu o terminar com sucesso sen o um rollback realizado O comando BEGIN inicia uma transa o no modo encadeado ou seja todas as declara es ap s o comando BEGIN s o executadas como sendo uma
243. pendentes de m quinas O sinalizador opcional PASSEDBYVALUE indica que os valores deste tipo de dado s o passados por valor e n o por refer ncia Observe que n o se pode passar por valor os tipos cuja representa o interna maior do que o comprimento do tipo Datum quatro bytes na maioria das m quinas oito bytes em algumas A palavra chave alinhamento especifica o alinhamento do armazenamento requerido por este tipo de dado Os valores permitidos igualam se ao alinhamento das fronteiras de 1 2 4 ou 8 bytes Observe que os tipos de tamanho vari vel devem ter um alinhamento de pelo menos 4 porque cont m necessariamente um int 4 como seu primeiro componente A palavra chave armazenamento permite selecionar estrat gias de armazenamento para tipos de dado de comprimento vari vel somente plain permitido para os tipos de comprimento fixo O plain de sativa TOAST para o tipo de dado ser sempre armazenado em linha e n o comprimido O extended per mite toda a capacidade do TOAST o sistema primeiro tenta comprimir um valor longo do dado movendo o valor para fora da tabela principal se ainda continuar muito longo O external permite que o valor seja movido para fora da tabela principal mas o sistema n o vai tentar comprimi lo O main permite a compress o mas desencoraja mover o valor para fora da tabela principal Os itens de dado com este m todo de armazenamento ainda podem ser movidos para fora da tabela principal se n
244. pq automaticamente a 1ibpq atribui TIMEZONE o valor de PGTZ durante a inicializa o da conex o Uma rela o mais extensa dos par metros de tempo de execu o pode ser encontrada no Guia do Admin istrador SET Use o comando SHOW para ver os valores correntes estabelecidos para os par metros Diagn sticos uN ET VARIABLE Mensagem retornada se o comando for executado com sucesso td ys ROR not a valid option name nome O par metro que se tentou definir n o existe td ys ROR permission denied E necess rio ser um superusu rio para ter acesso a certas defini es td ys ROR nome can only be set at start up Certos par metros n o podem ser mudados ap s o servidor ter sido inicializado Exemplos Definir o estilo de data tradicional do PostgreSQL com conven es europ ias SET DATESTYLE TO PostgreSQL European Definir a zona hor ria de Berkeley Calif rnia usando aspas para preservar os atributos mai sculos do especificador de zona hor ria note que aqui o formato da data hora ISO uN ET TIME ZONE PST8PDI SELECT CURRENT_TIMESTAMP AS hoje hoje 1998 03 31 07 41 21 08 Definir a zona hor ria para a It lia observe que necess rio o uso de ap strofos ou de aspas para tratar caracteres especiais 92 ET TIME ZONE Europe Rome SELECT CURRENT TIMESTAMP AS hoje
245. processo servidor que fez a notifica o fornecido na mensagem do evento de notifica o o mesmo PID do seu processo servidor dispon vel pela libpg Quando forem id nticos o evento de notifica o o seu pr prio trabalho retornando podendo ser ignorado A despeito do que foi dito no par grafo precedente esta uma t cnica segura O PostgreSQL mant m as auto notifica es separadas das notifica es vindas de outros processos servidores portanto n o poss vel perder se uma notifica o externa ignorando se as pr prias notifica es Notas nome pode ser qualquer cadeia de caracteres v lida como um nome n o necess rio que corresponda ao nome de qualquer tabela existente Se nome estiver entre aspas n o necess rio nem que seja um nome com uma sintaxe v lida pode ser qualquer cadeia de caracteres com at 31 caracteres NOTIFY Em algumas vers es anteriores do PostgreSQL o nome tinha que vir entre aspas quando n o correspondia a nenhum nome de tabela existente mesmo que sintaticamente fosse um nome v lido mas n o mais necess rio Nas vers es do PostgreSQL anteriores a 6 4 o PID do processo servidor que enviou a mensagem de notifica o era sempre o PID do processo servidor do pr prio cliente Ent o n o era poss vel distinguir entre as pr prias notifica es e as notifica es dos outros clientes nestas vers es antigas Utiliza o Configurar e executar a seqii ncia escutar noti
246. programa o do servidor a ser removida d dbname nome do bd Especifica de qual banco de dados a linguagem deve ser removida O padr o usar o banco de dados com o mesmo nome do usu rio atual do sistema operacional e echo Exibe os comandos SQL medida que s o executados l list Exibe a rela o das linguagens instaladas no banco de dados de destino que deve ser especificado O droplang tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es U username nome do usu rio Nome do usu rio para se conectar 15 droplang W password For a a solicita o da senha Sa das A maioria das mensagens de erro s o auto explicativas Se n o for execute o droplang com a op o echo e consulte o comando SQL respectivo para obter detalhes Consulte tamb m o aplicativo psql para ver outras possibilidades Descri o O droplang um utilit rio para remover de um banco de dados do PostgreSQL uma linguagem de progra ma o existente O droplang pode remover qualquer linguagem procedural mesmo quelas n o fornecidas na distribui
247. programa psql Normalmente este tamb m o local onde o programa pg config reside includedir Exibe a localiza o dos arquivos de cabe alho C e C das interfaces do cliente includedir server Exibe a localiza o dos arquivos de cabe alho C e C para a programa o do servidor libdir Exibe a localizag o das bibliotecas de c digo objeto pkglibdir Exibe a localiza o dos m dulos carreg veis dinamicamente ou onde o servidor deve procur los Tamb m podem estar instalados neste diret rio outros arquivos de dados dependentes da arquitetura configure Exibe as op es que foram passadas para o script configure quando o PostgreSQL foi configurado para ser gerado Pode ser utilizado para reproduzir uma configura o id ntica ou para descobrir com quais op es o pacote bin rio foi gerado Entretanto observe que os pacotes bin rios geralmente cont m modifica es espec ficas da distribui o 27 pg_config version Exibe a vers o do PostgreSQL e termina Se mais de uma op o exceto version for fornecida a informa o exibida na mesma ordem uma por linha Notas A op o includedir server nova no PostgreSQL 7 2 Nas vers es anteriores os arquivos de inclus o do servidor estavam instalados no mesmo local dos cabe alhos dos clientes que podia ser con sultado pelo includedir Para tratar os dois casos deve se tentar primeiro a nova op o e testar o status da sa da
248. r em sil ncio Por padr o s o exibidas mensagens de boas vindas e diversas outras mensagens informativas Se esta op o for usada nada disso acontece til junta mente com a op o c Dentro do psql pode se tamb m definir a vari vel QUIET para obter o mesmo efeito R record separator separador Usa o separador como separador de registros Equivalente ao comando 1pset recordsep s single step Executa no modo passo nico significando que ser solicitada uma confirma o antes de cada co mando ser enviado para o servidor com a op o de cancelar a execu o Usado na depura o de scripts S single line Executa no modo linha nica onde o caractere de nova linha termina o comando como o ponto e v rgula faz Note Este modo fornecido para queles que insistem em us lo mas n o se encoraja a sua utiliza o Em particular se forem misturados comandos SQL e meta comandos na mesma linha a ordem de execu o nem sempre vai ser clara para o usu rio inexperiente 57 psql t tuples only Desativa a impress o dos nomes das colunas e do rodap com o n mero de linhas do resultado etc E totalmente equivalente ao meta comando Xt T table attr op es de tabela Permite especificar op es a serem colocadas dentro da tag table do HTML Veja Npset para obter detalhes u Faz com que o psql solicite o nome do usu rio e a senha antes de se conectar ao banco de dados Esta op
249. r por EXEC SOL END DECLARE SECTION Note Antes da vers o 2 1 0 cada vari vel tinha que ser declarada em uma linha separada A partir da vers o 2 1 0 m ltiplas vari veis podem ser declaradas em uma nica linha char foo 16 bar 16 Tratamento de Erros A rea de comunica o SQL definida pelo EXEC SQL INCLUDE sqlca Note A palavra sq1ca deve ser escrita em letras min sculas Enquanto a conven o SQL pode ser seguida ou seja usar letras mai sculas para separar o SQL embutido das declara es C O sqlca que inclui o arquivo de cabe alho sqlca h deve estar em letras min sculas devido ao fato do prefixo EXEC SQL indicar que esta inclus o ser feita pelo ecpg O ecpg diferencia letras mai sculas de min sculas soLCA h n o ser encontrado O EXEC SOL INCLUDE pode ser utilizado para incluir outros arquivos de cabe alho desde que a diferen a entre as letras mai sculas e min sculas seja observada O comando sglprint utilizado junto com a declara o EXEC SOL WHENEVER para ativar o tratamento de erros ao longo do programa EXEC SOL WHENEVER sqlerror sqlprint EXEC SOL WHENEVER not found sqlprint 21 ecpg Note Este n o um exemplo exaustivo da utiliza o da declara o EXEC SQL WHENEVER Outros exemplos de utilizac o podem ser encontrados em manuais do SQL por exemplo The LAN TIMES Gu
250. ra comandos para excluir drop os objetos do banco de dados antes de cri los Esta op o sem utilidade pr tica porque o script gerado espera criar os bancos de dados e estes estar o sempre vazios ap s a cria o g globals only Somente exporta os objetos globais usu rios e grupos n o os bancos de dados h hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix O padr o obtido da vari vel de ambiente PGHOST se estiver definida sen o tentada uma conex o pelo soquete do dom nio Unix 36 pg dumpall pporta O n mero da porta na qual o servidor est aguardando as conex es O padr o obtido da vari vel de ambiente PGPORT se estiver definida ou do padr o da compila o U nome do usu rio Nome do usu rio para se conectar W For a a solicita o da senha Deve acontecer automaticamente se o servidor requerer autentica o por senha Todos os outros par metros de linha de comando s o passados para as chamadas subjacentes do pg dump sendo til para controlar certos aspectos do formato da sa da mas algumas op es como f t e nome bd devem ser evitadas Exemplos Para exportar todos bancos de dados pg dumpall gt db out Para importar estes bancos de dados deve se usar por exemplo psql f db out templatel N o importante em qual banco de d
251. radas neste arquivo interativamente alterar as senhas das entradas existentes e criptografar estas senhas Forne a o nome do arquivo de senhas como um argumento para o pg passwd Para ser usado pelo Post greSQL o arquivo deve estar localizado no diret rio de dados do servidor e o nome base do arquivo deve estar especificado no arquivo de controle de acesso pg hba conf pg passwd usr local pgsql data senhas File usr local pgsql data senhas does not exist Create y n y Username guest Password Re enter password onde as mensagens Password Re enter password requerem a entrada da mesma senha que n o exibida no terminal Observe que a senha est limitada a oito caracteres teis por restri es da rotina de criptografia 3 da biblioteca padr o O arquivo original de senhas renomeado para senhas bk Para usar este arquivo de senhas coloque uma linha como a mostrada abaixo no arquivo pg hba conf host meu bd 133 65 96 250 255 255 255 255 password senhas que permite o acesso ao banco de dados meu bd pelo hospedeiro 133 65 96 250 usando as senhas listadas no arquivo senhas e somente aos usu rios listados neste arquivo Note Tamb m til existirem entradas com o campo de senha vazio o que diferente de uma senha vazia no arquivo de senhas Estas entradas permitem restringir os usu rios que podem acessar o sistema Estas entradas n o podem ser gerenciadas pelo pg passwd mas o arquivo de senhas p
252. ramador estender as funcionalidades do PostgreSQL definindo novas fun es de agrega o Algumas fun es de agrega o para tipos base como min integer e avg double precision est o presentes na distribui o base Se forem definidos tipos novos ou se houver a necessidade de uma fun o de agrega o que n o esteja presente ent o o comando CREATE AGGREGATE pode ser utilizado para criar as funcionalidades desejadas Uma fun o de agrega o identificada pelo seu nome e pelo tipo de dado da entrada Duas fun es de agrega o podem possuir o mesmo nome no caso de operarem sobre dados de entrada de tipos diferentes Para evitar confus o n o crie uma fun o comum com o mesmo nome e tipo de dado de entrada de uma fun o de agrega o 4 Uma fun o de agrega o constitu da de uma ou duas fun es comuns uma fun o de transi o de estado func trans estado e outra fun o opcional para a realiza o dos c lculos finais func final Estas fun es s o utilizadas da seguinte maneira func trans estado estado interno pr ximo item dado gt pr ximo estado interno func final estado interno gt valor da agrega o O PostgreSQL cria uma vari vel tempor ria do tipo tipo dado estado para armazenar o estado interno atual da agrega o Para cada item de dado da entrada a fun o de transi o de estado chamada para calcular o novo valor do estado inter
253. ransa o commit ou n o fazer nada Neste ltimo caso deve ser fornecido o bloco BEGIN TRANSACTION COMMIT ou o resultado n o ser previs vel geralmente resultando em que a a o desejada n o seja realizada em nenhum caso Para escolher o que se deseja fazer deve se definir esta vari vel como rollback commit ou noth ing O padr o desfazer roll back a transa o Se for desejado carregar apenas um ou poucos objetos est tudo bem Entretanto se a inten o for transferir muitos objetos grandes aconselh vel fornecer um bloco de transa o expl cito em torno dos comandos ERROR STOP Por padr o se um script n o interativo encontrar um erro como um comando SQL ou um meta comando mal formado o processamento continua Este tem sido o comportamento tradicional do psql mas algumas vezes n o o desejado Se esta vari vel estiver definida o processamento do script vai terminar imediatamente Se o script for chamado por outro script este vai terminar da mesma maneira Se o script externo n o foi chamado por uma sess o interativa do psql mas usando a op o o psql retorna um c digo de erro 3 para distinguir este caso das condi es de erro fatal c digo de erro 1 PORT A porta do servidor de banco de dados que se est conectado Definida toda vez que se conecta ao banco de dados inclusive na inicializa o mas a defini o pode ser removida PROMPT1 PROMPT2 PROMPT3
254. rdem Utiliza o Para efetuar a jun o da tabela filmes com a tabela distribuidores SELECT f titulo f did d nome f data prod f tipo FROM distribuidores d filmes f WHERE f did d did titulo did nome data_prod tipo The Third Man 101 British Lion 1949 12 23 Drama The African Queen 101 British Lion 1951 08 11 Romance Une Femm st une Femm 102 Jean Luc Godard 1961 03 12 Romance Vertigo 103 Paramount 1958 11 14 Ac o Becket 103 Paramount 1964 02 03 Drama 48 Hrs 103 Paramount 1982 10 22 Ac o War and Peace 104 Mosfilm 1967 02 12 Drama West Side Story 105 United Artists 1961 01 03 Musical Bananas 105 United Artists 1 97 1 07 1 3 Com dia Yojimbo 106 Toho 1961 06 16 Drama There s a Girl in my Soup 107 Columbia 1970 06 11 Com dia Taxi Driver 107 Columbia 1975 05 15 Ac o Absence of Malice 107 Columbia 1981 11 15 Ac o Storia di una donna 108 Westward 1970 08 15 Romance The King and I 109 20th Century Fox 1956 08 11 Musical Das Boot 110 Bavaria Atelier 1981 11 11 Drama Bed Knobs and Broomsticks TLT Walt Disney Musical 17 rows Obter soma da coluna duracao de todos os filmes agrupando os resultados por tipo SELECT tipo SUM duracao AS total FROM filmes GROUP BY tipo tipo total SELECT dE Ac o 07 34 Com dia 02 58 Drama 14 28 Musical 06 42 Romance 04 38 5 rows Obter a soma da coluna duracao de todos os filmes agrupando os re
255. recerem na condi o WHERE condi o Consulte o comando SELECT para obter uma descri o mais detalhada da cl usula WHERE Sa das UPDATE Mensagem retornada se o comando for executado com sucesso O representa o n mero de linhas atualizadas Se for O ent o nenhuma linha foi atualizada Descric o UPDATE O comando UPDATE muda os valores das colunas especificadas em todas as linhas que satisfazem a condi o Somente as colunas a serem modificadas devem aparecer na rela o de colunas do comando Refer ncias a arrays utilizam a mesma sintaxe encontrada no comando SELECT Assim sendo um nico elemento de um array uma faixa de elementos de um array ou todo o array pode ser substitu do em um nico comando E necess rio possuir acesso de escrita na tabela para poder modific la assim como acesso de leitura em todas as tabelas mencionadas na condi o da cl usula WHERE Por padr o o comando UPDATE atualiza todas as tuplas da tabela especificada e de suas filhas Para atualizar apenas a tabela referenciada deve ser utilizada a cl usula ONLY Utiliza o Mudar a palavra Drama por Suspense na coluna tipo UPDATE filmes SET tipo Suspense WHERE tipo Drama S ELE ET FROM filmes WHERE tipo Drama OR tipo Suspense cod titulo did data_prod tipo tempo BL101 The Third Man 101 1949 12 23 Suspense 01 44 P_302 Becket 103 1964 02 03 Suspense
256. reito de um operador un rio esquerdo ou direito respectivamente deve ser especificado como NONE Notas O comando DROP OPERATOR uma extens o da linguagem do PostgreSQL Consulte o comando CREATE OPERATOR para obter informa es sobre como criar operadores E responsabilidade do usu rio remover todos os m todos de acesso e classes de operadores que dependam do operador removido Utiliza o Remover o operador de pot ncia a n para int 4 DROP OPERATOR int4 int4 Remover o operador de nega o un rio esquerdo b para booleano DROP OPERATOR none bool Remover o operador de fatorial un rio direito i para int 4 DROP OPERATOR int4 none Compatibilidade SQL92 N o existe o comando DROP OPERATOR no SQL92 DROP RULE Name T DROP RULE remove uma regra Synopsis DROP RULE nome Entradas nome y O nome de uma regra existente a ser removida Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR Rule or vi w nom not found Esta mensagem ocorre quando a regra especificada n o existe Descric o O comando DROP RULE remove uma regra do sistema de regras do PostgreSQL O PostgreSQL cessa imediatamente de imp la e remove sua defini o dos cat logos do sistema Notas O comando DROP RULE uma extens o do PostgreSQL linguagem Consulte o comando CR EAT RUL E
257. ri o da coluna ou da tabela Se n o for especificado o nome ser gerado pelo sistema NOT NULL Valores nulos n o s o permitidos na coluna Esta declara o equivalente restri o de coluna CHECK nome da coluna NOT NULL NULL Valores nulos s o permitidos na coluna Este o padr o Esta cl usula s est dispon vel por compatibilidade com bancos de dados SQL fora do padr o Sua utiiza o desestimulada em novas aplica es UNIQUE restri o da coluna UNIQUE nome da coluna 1 restri o da tabela El A restri o UNIQUE especifica a regra onde um grupo de uma ou mais colunas distintas de uma tabela podem conter apenas valores nicos O comportamento da restri o de unicidade para tabelas o mesmo da restri o de unicidade para colunas por m com a capacidade adicional de abranger v rias colunas Para a finalidade da restri o de unicidade valores nulos n o s o considerados iguais Cada restri o de unicidade da tabela deve abranger um conjunto de colunas diferente do conjunto de colunas abrangido por qualquer outra restri o de unicidade e da chave prim ria definida para a tabela Sen o seria apenas a mesma restri o declarada duas vezes PRIMARY KEY restri o da coluna PRIMARY KEY nome da coluna 1 restri o da tabela A restri o de chave prim ria especifica que a coluna ou colunas da tabela pode conter apenas valores nicos n
258. ria para ordena o kilobytes antes de come ar a escrever os dados em arquivos tempor rios Op es para o modo aut nomo banco de dados Especifica o nome do banco de dados a ser acessado Se for omitido o padr o o nome do usu rio Exibe todos os comandos Desativa o uso do caractere de nova linha como delimitador do comando 86 postgres Op es semi internas Existem v rias outras op es que podem ser especificadas usadas principalmente para fins de depura o que est o mostradas aqui somente para o uso pelos desenvolvedores de sistema do PostgreSQL A utiliza o de qualquer uma destas op es altamente desaconselhada Al m disso qualquer uma destas op es poder mudar ou desaparecer em vers es futuras sem nenhum aviso fislilmInlh Pro be o uso de um m todo de varredura ou de jun o em particular s e i desativam as varreduras se quenciais e de ndices respectivamente enquanto que n m e h desativam as jun es de la o aninhado mesclagem e hash respectivamente Note Nem as varreduras sequenciais nem as jun es de la o aninhado podem ser desativadas completamente as op es fs e fn simplesmente desencorajam o otimizador de usar estes tipos de plano se houver alguma outra alternativa Pro be a execu o da consulta mas mostra a rvore do plano Permite modificar a estrutura das tabelas do sistema Usado pelo initdb pbanco de dados Indica que este servidor foi inicializad
259. rio do banco de dados para executar este comando Use o ALTER GROUP para incluir ou excluir usu rios no grupo e o DROP GROUP para excluir um grupo Utiliza o Criar um grupo vazio CREATE GROUP engenharia Criar um grupo com membros CREATE GROUP vendas WITH USER jonas marcela Compatibilidade SQL92 N o existe o comando CREATE GROUP no SQL92 O conceito de roles similar ao de grupos CREATE INDEX Name CREATE INDEX define um ndice novo Synopsis CREATE UNIQUE INDEX nome_do_ ndice ON tabela USING m todo de acesso coluna nome do operador WHERE predicado CREATE UNIQUE INDEX nome do ndice ON tabela USING m todo de acesso nome da fun o coluna 1 nome do operador WHERE predicado Entradas UNIQUE Faz com que o sistema procure por valores duplicados na tabela quando o ndice criado se existirem dados na tabela e sempre que novos dados forem adicionados A tentativa de inserir ou de atualizar dados que produza um valor duplicado gera um erro nome do ndice O nome do ndice a ser criado tabela O nome da tabela a ser indexada m todo de acesso O nome do m todo de acesso a ser utilizado pelo o ndice O m todo de acesso padr o o BTREE O PostgreSQL implementa quatro m todos de acesso para os ndices BTREE uma implementa o das
260. riormente vai se desejar que a notifica o seja desfeita de alguma maneira mas o processo servidor n o pode pegar de volta uma notifica o ap s envi la para o cliente Portanto os eventos de notifica o somente s o enviados entre transa es O resultado final disto que os aplicativos que utilizam o NOTIFY para sinaliza o de tempo real devem tentar manter as suas transa es curtas O NOTIFY se comporta como os sinais do Unix em um aspecto importante se o mesmo nome de condi o for sinalizado diversas vezes em uma sucess o r pida os ouvintes podem receber somente um evento de notifica o para v rias execu es do NOTIFY Portanto uma m id ia depender do n mero de notifi ca es recebidas Em vez disso use o NOTIFY para acordar os aplicativos que devam prestar aten o em algo e use um objeto do banco de dados como uma segii ncia para registrar o que aconteceu ou quantas vezes aconteceu comum para um cliente que executa o NOTIFY estar escutando o mesmo nome de notifica o Neste caso vai ser recebido de volta o evento de notifica o da mesma maneira que todos os outros clientes na escuta Dependendo da l gica do aplicativo isto pode resultar em um trabalho sem utilidade por exemplo a releitura da tabela do banco de dados para encontrar as mesmas atualiza es que foram feitas No PostgreSQL 6 4 e nas vers es posteriores poss vel evitar este trabalho extra verificando se o PID do
261. rmina que um erro impediu a cria o completa do sistema de bancos de dados s o removidos todos os arquivos porventura criados antes de ser descoberto que n o era poss vel terminar o trabalho Esta op o impede a limpeza e portanto til para a depura o debug d Exibe sa da de depura o do servidor de boot strap e algumas outras mensagens de menor interesse para o p blico em geral O servidor de boot strap o programa que o initab utiliza para criar as tabelas do cat logo Esta op o gera uma quantidade tremenda de sa da extremamente entediante 75 initdb Ambiente PGDATA Especifica o diret rio onde o sistema de bancos de dados deve ser armazenado pode ser substitu do usando a op o D Consulte tamb m postgres postmaster Guia do Administrador do PostgreSQL 76 Ini tlocation Name initlocation cria uma rea secund ria de armazenamento de bancos de dados do PostgreSQL Synopsis initlocation diret rio Descri o O initlocation cria uma nova rea secund ria de armazenamento de bancos de dados do PostgreSQL Veja em CREATE DATABASE a discuss o sobre como usar e gerenciar reas de armazenamento secund rias Se o argumento n o contiver uma barra e n o for um caminho v lido ser assumido como sendo uma vari vel de ambiente a qual referenciada Veja os exemplos no final Para poder usar este comando necess rio estar autenticado no sistema operacional como o
262. rquivo for especificado o arquivo editado ap s o fim da execu o do editor o conte do do arquivo copiado para o buffer de comando Se nenhum argumento for fornecido O buffer de comando corrente copiado para um arquivo tempor rio que editado de maneira id ntica O novo buffer de comando ent o analisado novamente de acordo com as regras normais do psql onde todo o buf fer tratado como sendo uma nica linha Portanto n o podem ser gerados scripts dessa maneira Use o comando Yi para fazer isso Assim sendo se o comando terminar por ou contiver um ponto e v rgula ser executado imediatamente sen o apenas permanece aguardando no buffer de comando 49 psql Tip O psql procura nas vari veis de ambiente PsoL EDITOR EDITOR VISUAL nesta ordem o editor a ser usado Se nenhuma delas estiver definida bin vi usado Vecho texto Envia os argumentos para a sa da padr o separados por um espa o e seguido por um caractere de nova linha podendo ser til para intercalar informa es na sa da dos scripts Por exemplo gt Mecho date Tue Oct 26 21 40 57 CEST 1999 Se o primeiro argumento for n n o entre ap strofos o caractere de nova linha final n o gerado Tip Se for usado o comando o para redirecionar a sa da dos comandos talvez se deseje utilizar Yaecho no lugar deste comando Yencoding codifica o Define a codifica o do cliente se estiver sendo utilizada a
263. s a ser usado como gabarito para a cria o do novo banco de dados ou DEFAULT para utilizar o banco de dados de gabarito padr o template1 codifica o M todo de codifica o multibyte a ser utilizado no novo banco de dados Especifique o nome como uma cadeia de caracteres por exemplo SOL ASCII ou o n mero inteiro da codifica o ou DEFAULT para utilizar a codifica o padr o Sa das CREATE DATABASE Mensagem retornada se o comando for executado com sucesso ti ys ROR user nome do usu rio is not allowed to create drop databases necess rio possuir o privil gio especial CREATEDB para criar bancos de dados Consulte o comando CREATE USER ERROR createdb database nome already exists Esta mensagem ocorre se o banco de dados com o nome especificado j existir CREATE DATABASE ERROR database path may not contain single quotes 2 O local do banco de dados especificado em caminho n o pode conter ap strofos Isto necess rio para que o interpretador de comandos que vai criar o diret rio do banco de dados possa executar com seguran a ERROR CREATE DATABASE may not be called in a transaction block Havendo um bloco de transa o expl cito sendo executado n o poss vel utilizar o comando CREATE DATABASE Primeiro a transa o deve terminar ERROR Unable to create database directory caminho
264. s com o mesmo nome do usu rio atual do sistema operacional e echo Exibe os comandos SQL medida que s o executados 1 list Exibe a rela o das linguagens instaladas no banco de dados de destino que deve ser especificado L diret rio Especifica o diret rio onde o interpretador da linguagem deve ser encontrado Normalmente o di ret rio encontrado automaticamente esta op o tem por finalidade a depura o O createlang tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es U username nome do usu rio Nome do usu rio para se conectar createlang W password For a a solicita o da senha Sa das A maioria das mensagens de erro s o auto explicativas Se n o for execute o createlang com a op o echo e consulte o comando SQL respectivo para obter detalhes Consulte tamb m o aplicativo psql para ver outras possibilidades Descri o O createlang um utilit rio para adicionar uma nova linguagem de programa o a um banco de dados do PostgreSQL O createlang pode tratar todas as linguagens fornecidas junto com a distr
265. s podem estar presentes na cl usula WITH iscachable O atributo Iscachable indica que a fun o sempre retorna o mesmo resultado quando recebe os mesmos valores para os argumentos ou seja n o faz consultas ao banco de dados e tamb m n o utiliza informa es que n o estejam diretamente presentes na sua lista de par metros O otimizador utiliza o atributo iscachable para saber se seguro pr executar a chamada da fun o isstrict O atributo isstrict indica que a fun o sempre retorna NULL quando qualquer um de seus ar gumentos for nulo Se este atributo for especificado a fun o n o ser executada quando houver argumento nulo ou seja um resultado nulo ser assumido automaticamente Quando o atributo isstrict n o for especificado a fun o ser chamada mesmo com argumentos de entrada nulos Fica sendo responsabilidade do autor da fun o verificar valores nulos se for necess rio e responder de forma apropriada Notas Consulte o cap tulo do Guia do Programador do PostgreSQL relativo extens o do PostgreSQL atrav s de fun es para obter mais informa es sobre como escrever fun es externas CREATE FUNCTION A sintaxe completa do SQL permitida para os argumentos de entrada e o valor retornado Entretanto al guns detalhes da especifica o do tipo por exemplo a precis o para tipos numeric s o responsabilidade da implementa o da fun o subjacente sendo silenciosamente aceitos pe
266. seguinte lista lt D gt D 0H WN amp I IS Existem algumas restri es na escolha do nome O n o pode ser definido como um operador de um nico caractere embora possa fazer parte do nome de um operador multi caractere e As segii ncias e n o podem aparecer em nenhum lugar do nome do operador porque ser con siderado in cio de coment rio Um nome de operador multi caractere n o pode terminar por ou por a menos que o nome tamb m contenha pelo menos um dos seguintes caracteres 10 1 1 Por exemplo um nome de operador permitido mas n o Esta restri o permite ao PostgreSQL analisar consultas em conformidade com o SQL sem requerer espa os entre elementos tokens Note Ao se trabalhar com nomes de operadores que n o sejam padr o SQL usualmente necess rio usar espa os entre os operadores adjacentes para evitar ambiguidade Por exemplo CREATE OPERATOR definindo se um operador un rio esquerdo chamado e n o se pode escrever x eY deve se escrever x ey para garantir que o PostgreSQL leia dois nomes de operadores e n o um O operador mapeado para lt gt na entrada portanto estes dois nomes s o sempre equivalentes Pelo menos um entre LEFTARG RIGHTARG deve ser definido Para operadores bin rios ambos devem ser definidos Para operadores un rios direito somente o LEFTARG deve ser definido enquanto que para operadores un rios esquerdo somente o RIGH
267. serve que se um item do ORDER BY for um nome simples que corresponda tanto ao nome de uma coluna do resultado quanto ao nome de uma coluna da entrada o ORDER BY vai interpretar como sendo o nome da coluna do resultado Esta op o oposta a que feita pelo GROUP BY na mesma situa o Esta inconsist ncia determinada pelo padr o SQL92 Opcionalmente pode ser utilizada a palavra chave DESC descendente ou ASC ascendente ap s cada nome de coluna na cl usula ORDER BY Se nada for especificado ASC assumido por padr o Alter nativamente um nome de operador de ordena o espec fico pode ser especificado ASC equivalente a USING lt e DESC equivalente a USING gt O valor nulo possui posi o de ordena o maior do que qualquer outro valor do dom nio Em outras palavras na ordena o ascendente os valores nulos ficam no final e na ordena o descendente os valores nulos ficam no in cio A cl usula UNION tabela consulta UNION ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL OFFSET in cio onde tabela consulta especifica qualquer express o de sele o sem as cl usulas ORDER BY FOR UPDATE ou LIMIT ORDER BY e LIMIT podem aparecer na subexpress o se estiver entre par nteses Sem os par nteses estas cl usulas se aplicam ao resultado da UNION e n o na sua express o de entrada da direita O operador UNION computa a cole o
268. sico contendo apenas os objetos padr o predefinidos pela vers o do PostgreSQL sendo utilizada Esta forma til quando se deseja evitar a c pia de qualquer objeto da instala o local que possa ter sido adicionado ao templatel O par metro opcional de codifica o permite a escolha de uma codifica o para o banco de dados se o servidor em uso foi compilado com suporte codifica o multibyte Quando este par metro n o especificado o padr o utilizar a mesma codifica o do banco de dados usado como gabarito Os par metros opcionais podem ser escritos em qualquer ordem e n o apenas na ordem mostrada acima Notas O comando CREATE DATABASE uma extens o da linguagem do PostgreSQL Use o comando DROP DATABASE para excluir um banco de dados CREATE DATABASE O aplicativo createdb um script envolt rio criado em torno deste comando fornecido por conveni ncia Existem quest es associadas seguran a e integridade dos dados envolvidas na utiliza o de locais alternativos para os bancos de dados especificados por caminhos absolutos Por isso pelo padr o somente uma vari vel de ambiente conhecida pelo gerenciador de banco de dados pode ser especificada para um local alternativo Consulte o Guia do Administrador do PostgreSQL para obter mais informa es Embora seja poss vel copiar outros bancos de dados al m do template1 especificando se seu nome como gabarito
269. siderado como sendo o diret rio do soquete do dom nio Unix pporta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio local Unix onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha e echo Exibe os comandos que o vacuumdb gera e envia para o servidor q quiet N o exibe a resposta Sa das VACUUM O comando foi executado com sucesso vacuumdb Vacuum failed Aconteceu algum erro O vacuumdb apenas um script envolt rio Consulte o comando VACUUM e O aplicativo psql para ver uma discuss o detalhada das mensagens de erro e dos problemas poss veis 71 vacuumdb Descric o O vacuumdb um utilit rio para fazer a limpeza de bancos de dados do PostgreSQL O vacuumdb tamb m gera estat sticas internas usadas pelo otimizador de consultas do PostgreSQL O vacuumdb um script envolt rio que usa o comando do servidor VACUUM atrav s do terminal inter ativo do PostgreSQL psql N o existe diferen a efetiva entre limpar o banco de dados desta ou daquela maneira O psql deve ser encontrado pelo script e o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psqle para a biblioteca cliente libpq Utiliza o Para limpar o banco de dados teste
270. sido executada O comando SET SESSION CHARACTERISTICS define o n vel de isolamento padr o para todas as transa es da sess o O comando SET TRANSACTION pode substitui lo para uma transa o individual O n vel de isolamento de uma transa o determina quais dados a transa o pode enxergar quando outras transa es est o processando ao mesmo tempo READ COMMITTED Um comando enxerga apenas as linhas efetivadas commit antes do in cio da sua execu o Este o padr o SERIALIZABLE A transa o corrente enxerga apenas as linhas efetivadas comm it antes da primeira consulta ou instru o que modifique os dados ter sido executada nesta transa o Tip Intuitivamente serializ vel significa que duas transa es concorrentes deixam o banco de dados no mesmo estado que estas duas transa es executadas uma ap s a outra em qualquer ordem deixaria Notas O n vel de isolamento padr o da transa o tamb m pode ser definido pelo comando SET default transaction isolation valor SET TRANSACTION no arquivo de configura o Consulte o Guia do Administrador para obter mais informa es Compatibilidade SQL92 SQL99 SERIALIZABLE o n vel de isolamento padr o do SQL O PostgreSQL n o possui os n veis de isola mento READ UNCOMMITTED REPEATABLE READ Devido ao controle de concorr ncia multi vers o o n vel serializ vel n o verdadeiramente
271. special curinga cancela todos os registros de escuta da sess o corrente O comando NOTIFY cont m uma discuss o mais extensa da utiliza o do comando LISTEN e do comando NOTIFY Notas O nome notifica o n o necessita ser um nome de classe v lido podendo ser qualquer cadeia de caracteres v lida como um nome com at 32 caracteres UNLISTEN O servidor n o reclama quando executado O UNLISTEN para algo que n o esteja sendo escutado Cada processo servidor executa automaticamente o comando UNLISTEN ao encerrar sua execu o Utiliza o Para participar de um registro existente LISTEN virtual LISTEN NOTIFY virtual NOTIFY Asynchronous NOTIFY virtual from backend with pid 8448 received Quando UNLISTEN executado os comandos NOTIFY posteriores s o ignorados UNLISTEN virtual UNLISTEN NOTIFY virtual NOTIFY notice no NOTIFY event is received nf ah Compatibilidade SQL92 N o existe o comando UNLISTEN no SQL92 UPDATE Name UPDATE atualiza linhas de uma tabela Synopsis UPDATE ONLY tabela SET coluna express o FROM lista de WHERE condi o Entradas tabela O nome de uma tabela existente coluna O nome de uma coluna da tabela express o Uma express o v lida ou um valor a ser atribu do coluna lista de Uma extens o n o padr o do PostgreSQL que permite colunas de outras tabelas apa
272. staura diretamente no banco de dados Os objetos grandes somente podem ser restaurados usando uma conex o direta ao banco de dados f arquivo_de_sa da file arquivo de sa da Especifica o nome do arquivo contendo o script gerado ou a listagem quando for utilizado com a op o 1 Por padr o a sa da padr o F formato format formato Especifica o formato do arquivo de exporta o N o necess rio especificar o formato porque O pg restore reconhece o formato automaticamente Se for especificado poder ser um dos seguintes O arquivo de exporta o est no formato tar Este formato de arquivo de exporta o permite reordenar e ou excluir elementos do esquema durante a importa o Tamb m permite limitar quais dados s o recarregados durante a importa o c O arquivo de exporta o est no formato personalizado do pg_dump Este o formato mais flex vel porque permite a reordena o da importa o dos dados e dos elementos do esquema Este formato tamb m comprimido por padr o i ndice index ndice Restaura a defini o do ndice para o ndice especificado apenas 1 list Lista o conte do do arquivo de exporta o A sa da deste comando pode ser usada com a op o L para restringir e reordenar os itens que s o restaurados 39 pg restore Larquivo da listagem use list arquivo da listagem Restaura apenas os elementos presentes no arquivo da listagem e na ordem em que apar
273. ste contexto Sa das DROP USER O usu rio foi removido com sucesso 17 dropuser dropuser deletion of user nome_do_usu rio failed Aconteceu algum erro O usu rio n o foi removido Havendo uma condi o de erro a mensagem de erro do servidor exibida Consulte o comando DROP USER e o aplicativo psql para ver as causas poss veis Descric o O dropuser remove um usu rio do PostgreSQL e os bancos de dados que este usu rio possui Somente os usu rios com usesuper definido na tabela pg_shadow podem remover usu rios do PostgreSQL O dropuser um script envolt rio que usa o comando SQL DROP USER atrav s do terminal interativo do PostgreSQL psq l Portanto n o existe nada em especial sobre remover usu rios desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq Utiliza o Para remover o usu rio joel do servidor de banco de dados padr o dropuser joel DROP USER Para remover o usu rio joel usando o postmaster na m quina eden porta 5000 com confirma o e vendo o comando utilizado dropuser p 5000 h eden i e joel User joel and any owned databases will be permanently deleted Are you sure y n y DROP USER joel DROP USER 18 ecpg Name ecpg
274. su rio n o encontrado DROP USER user nome owns database nome cannot be removed Deve se primeiro remover o banco de dados ou mudar seu dono Descri o O comando DROP USER remove o usu rio especificado do banco de dados N o remove tabelas vis es ou outros objetos de propriedade do usu rio Se o usu rio possuir algum banco de dados uma mensagem de erro gerada Use o comando CREATE USER para adicionar novos usu rios e o ALTER USER para mudar seus atrib utos O PostgreSQL tem o aplicativo dropuser que possui a mesma funcionalidade deste comando na verdade chama este comando mas que pode ser executado a partir da linha de comandos Utiliza o Para remover uma conta de usu rio DROP USER Josias Compatibilidade SQL92 N o existe o comando DROP USER no SQL92 DROP USER DROP VIEW Name DROP VII remove uma vis o E z Synopsis DROP VIEW nome Entradas nome O nome de uma vis o existente Sa das DROP Mensagem retornada se o comando for executado com sucesso ERROR view nome does not exist Esta mensagem ocorre quando a vis o especificada n o existe no banco de dados Descri o O comando DROP VIEW remove do banco de dados uma vis o existente Para executar este comando necess rio ser o dono da vis o Notas Consulte o comando CREATE VIEW para obter informa es sobre como criar vis es DROP VIEW Utili
275. sultados por t ipo mostrando apenas os grupos com total inferior a 5 horas SELECT tipo SUM duracao AS total FROM filmes GROUP BY tipo HAVING SUM duracao lt INTERVAL 5 hour tipo total E Com dia 02 58 Romance 04 38 2 rows Os dois exemplos mostrados abaixo s o formas id nticas de ordena o dos resultados de acordo com o conte do da segunda coluna nome SELECT FROM distribuidores ORDER BY nome SELECT FROM distribuidores ORDER BY 2 did nome 109 20th Century Fox 110 Bavaria Atelier 101 British Lion 107 Columbia 102 Jean Luc Godard TIZ Luso filmes 104 Mosfilm 103 Paramount 106 Toho 105 United Artists 111 Walt Disney 112 Warner Bros 108 Westward 13 rows Este exemplo mostra como obter a uni o das tabelas distribuidores e atores restringindo o resul tado aos nomes que iniciam pela letra W em cada uma das tabelas Somente linhas distintas s o desejadas por isso a palavra chave ALL omitida 10 SELECT distribuidores atores did nome id nome 108 Westward 1 Woody Allen 111 Walt Disney 2 Warren Beatty 142 3 Walter Matthau Warner Bros SELECT distribuidores nome FROM distribuidores WHERE distribuidores nome LIK TON SELECT atores nome FROM atores WHERE atores nome LIKE WS 9 o q nome Walt Disney Walter Matthau Warner
276. superusu rio do banco de dados usando o comando su por exemplo Utiliza o Para criar um banco de dados em um local alternativo usando uma vari vel de ambiente export PGDATA2 opt postgres data Deve se parar e reiniciar o postmaster para que este enxergue a vari vel de ambiente PGDATA2 O sistema deve ser configurado de maneira que o postmaster enxergue PGDATA2 toda vez que iniciar Finalmente initlocation PGDATA2 createdb D PGDATA2 testdb Quando os caminhos absolutos s o permitidos poss vel escrever initlocation opt postgres data createdb D opt postgres data testdb testdb 77 ipcclean Name ipcclean remove a mem ria compartilhada e os sem foros de um servidor PostgreSQL abortado Synopsis ipcclean Descri o O ipcclean remove todos os segmentos de mem ria compartilhada e os sem foros definidos perten centes ao usu rio corrente Foi desenvolvido para ser usado para fazer a limpeza ap s a queda do servidor PostgreSQL postmaster Observe que reiniciar o servidor imediatamente tamb m limpa a mem ria com partilhada e os sem foros portanto este comando possui pouca utilidade pr tica Somente o administrador do banco de dados deve executar este programa porque pode ocasionar um comportamento bizarro i e quedas se for executado durante uma sess o multiusu ria Se este comando for executado enquanto o postmaster estiver executando a mem ria compartilhada e os sem foros
277. t 81 pg_ctl Exibir o status do postmaster Abaixo segue uma um exemplo da sa da de status mostrada pelo pg_ctl pg_ctl status pg ctl postmaster is running pid 13718 Command line was usr local pgsql bin postmaster D usr local pgsgl data p 5433 B 128 Esta a linha de comandos que seria usada no modo de rein cio Bugs Aguardar o t rmino do in cio n o uma operag o bem definida podendo falhar se o controle de acesso for definido de uma maneira que o cliente n o possa se conectar sem interveng o manual Portanto deve ser evitado Consulte tamb m postmaster Guia do Administrador do PostgreSQL 82 pg_passwd Name pg passwd muda um arquivo secund rio de senhas do PostgreSQL Synopsis pg passwd nome do arquivo Descri o O pg passwd uma ferramenta para tratar arquivos de senhas texto Estes arquivos podem controlar a aut entica o dos clientes do servidor PostgreSQL Mais informa es sobre como configurar este mecanismo de autentica o podem ser encontradas no Guia do Administrador O formato do arquivo de senhas texto uma entrada por linha os campos de cada entrada s o separados por dois pontos O primeiro campo o nome do usu rio o segundo campo a senha criptografada Demais campos s o ignorados para permitir que arquivos de senha sejam compartilhados entre aplica tivos que usam formato similar O pg passwd permite aos usu rios adicionar ent
278. ta estat sticas sobre o conte do das tabelas do PostgreSQL e armazena os resultados na tabela do sistema pg statistic Posteriormente o otimizador de consultas utiliza estas estat sticas para auxiliar na determina o do plano de execu o mais eficiente para as consultas Sem nenhum par metro o comando ANALYZE analisa todas as tabelas do banco de dados em uso Com par metro o comando ANALYZE analisa somente uma tabela E poss vel ainda fornecer uma rela o de nomes de colunas e neste caso somente as estat sticas para estas colunas s o atualizadas ANALYZE Notas Aconselha se executar o comando ANALYZE periodicamente ou logo ap s realizar uma altera o signi ficativa no conte do de uma tabela Estat sticas precisas auxiliam o otimizador na escolha do plano de consulta mais apropriado e portanto a melhorar o tempo do processamento da consulta Uma estrat gia habitual executar VACUUM e ANALYZE uma vez por dia em per odos de pouca carga Ao contr rio do comando VACUUM FULL o comando ANALYZE requer somente um bloqueio de leitura na tabela podendo portanto ser executado em conjunto com outras atividades na tabela Para tabelas grandes o comando ANALYZE pega amostras aleat rias do conte do da tabela em vez de examinar todas as linhas Esta estrat gia permite que mesmo tabelas muito grandes sejam analisadas em curto espa o de tempo Observe entretanto que as estat sticas s o apenas aproximadas
279. tas palavras chave controlam se a senha armazenada criptografada ou n o em pg_shadow Consulte o comando CREATE USER para obter mais informa es sobre esta op o CREATEDB NOCREATEDB Estas cl usulas definem a permiss o para o usu rio criar bancos de dados Se CREATEDB for especificado o usu rio sendo alterado ter permiss o para criar seus pr prios bancos de dados Especificando se NOCREATEDB a permiss o para criar bancos de dados negada ao usu rio CREATEUSER NOCREATEUSER Estas cl usulas definem a permiss o para o usu rio criar novos usu rios Esta op o tamb m torna o usu rio um superusu rio que pode mudar todas as restri es de acesso data hora A data e opcionalmente a hora de expira o da senha do usu rio ALTER USER Sa das ALTER USER Mensagem retornada se a altera o for realizada com sucesso ERROR ALTER USER user nome do usu rio does not exist Mensagem retornada quando o usu rio especificado n o existir no banco de dados Descri o O comando ALTER USER utilizado para mudar os atributos da conta de um usu rio do PostgreSQL Os atributos n o mencionados no comando permanecem com os seus valores inalterados Somente um superusu rio do banco de dados pode alterar os privil gios e a expira o da senha com este comando Os usu rios comuns somente podem alterar as suas pr prias senhas O comando ALTER USER n o p
280. tente tipo O tipo de dado dos par metros da fun o Sa das DROP Mensagem retornada se o comando for executado com sucesso NOTICE RemoveFunction Function nome tipo does not exist Esta mensagem retornada quando a fun o especificada n o existe no banco de dados corrente Descri o O comando DROP FUNCTION remove a defini o de uma fun o existente Para executar este comando o usu rio deve ser o dono da fun o Os tipos de dado dos argumentos de entrada da fun o devem ser especificados porque v rias fun es diferentes podem existir com o mesmo nome mas com argumentos diferentes DROP FUNCTION Notas Consulte o comando CREATE FUNCTION para obter informa es sobre como criar fun es Nenhuma verifica o efetuada para garantir que os tipos operadores m todos de acesso ou gatilhos que dependem desta fun o foram previamente removidos Exemplos Este comando remove a fun o que calcula a raiz quadrada DROP FUNCTION sqrt integer Compatibilidade O comando DROP FUNCTION est definido no SQL99 Uma das formas da sua sintaxe DROP FUNCTION nome arg RESTRICT CASCADE onde CASCADE especifica a remo o de todos os objetos que dependem da fun o e RESTRICT recusa a remo o da fun o se existir algum objeto que dependa da fun o Consulte tamb m CREATE FUNCTION DROP GROUP Name DROP GROUP remove um grupo de usu rios Syn
281. terminada pela fun o de entrada que converte a representa o externa do tipo na representa o interna utiliz vel pelos operadores e fun es definidas para o tipo Naturalmente a fun o de sa da realiza a transforma o inversa A fun o de entrada pode ser declarada como recebendo um argumento do tipo opaque ou como recebendo tr s argumentos dos tipos opaque OID e int 4 O primeiro argumento o texto de entrada como uma cadeia de caracteres C o segundo argumento o tipo do elemento no caso de ser um tipo array e o terceiro o typmod da coluna de destino se for conhecido A fun o de sa da pode ser declarada como recebendo um argumento do tipo opaque ou como recebendo dois argumentos dos tipos opaque e OID O primeiro argumento na verdade do pr prio tipo do dado mas como a fun o de sa da deve ser declarada primeiro mais f cil declar la como recebendo o tipo opaque O segundo argumento novamente o tipo do elemento do array para tipos array CREATE TYPE Novos tipos de dado base podem ser de comprimento fixo e neste caso o comprimento_interno um inteiro positivo ou podem ser de comprimento vari vel indicado por fazer comprimento_interno igual a VARIABLE Internamente representado definindo typlen como 1 A representa o interna de todos os tipos de comprimento vari vel devem come ar por um n mero inteiro indicando o comprimento total deste valor do tipo 4 A comprimento d
282. terminated first simplesmente deve se refazer a conex o entrando com c 67 pgtclsh Name pgtclsh she11 Tel cliente do PostgreSQL Synopsis pgtclsh nome do arquivo argumentos Descri o O pgtclsh uma interface she11 Tel estendida com fun es de acesso a bancos de dados do PostgreSQL Essencialmente uma tclsh com a libpgtcl carregada Como no caso da shell Tcl normal o primeiro argumento da linha de comando o nome do arquivo de script e todos os demais argumentos s o passados para o script Se nenhum nome de arquivo for fornecido a sne11 ser interativa Uma she11 Tcl com Tk e fun es PostgreSQL est dispon velem pgtksh Consulte tamb m pgtksh Guia do Programador do PostgreSQL descri o da 1ibpgtc1 telsh 68 pgtksh Name pgtksh she11 Tel Tk cliente do PostgreSQL Synopsis pgtksh nome_do_arquivo argumentos Description O pgtksh uma interface she11 Tel Tk estendida com fun es de acesso a bancos de dados do Post greSQL Essencialmente uma tksh com a libpgtc1 carregada Como no caso da she11 Tcl Tk normal o primeiro argumento da linha de comando o nome do arquivo de script e todos os demais ar gumentos s o passados para o script As op es especiais podem ser tratadas pelas bibliotecas do sistema X Window em vez da she11 Se nenhum nome de arquivo for fornecido a she11 ser interativa Uma she11 Tel com fun es PostgreSQL est dispon v
283. tornada apenas uma parte das linhas que s o geradas pelo resultado da consulta Se um contador limite for fornecido n o ser retornado mais do que este n mero de linhas Se um deslocamento for especificado este n mero de linhas ser saltado antes de come ar o retorno das linhas SELECT Quando LIMIT usado aconselha se utilizar a cl usula ORDER BY para colocar as linhas do resultado dentro de uma ordem nica De outra maneira ser obtido um subconjunto das linhas da consulta im poss vel de ser previsto pode se estar querendo obter da d cima a vig sima linha mas da d cima a vig sima linha de qual ordena o N o poss vel saber qual ser a ordena o a menos que ORDER BY seja especificado A partir do PostgreSQL 7 0 o otimizador de consultas leva LIMIT em considera o ao gerar o plano para a consulta ent o muito prov vel que sejam obtidos planos diferentes resultando em ordena es diferentes das linhas dependendo do que seja fornecido para LIMIT e OFFSET Portanto utilizar valores diferentes para LIMIT OFFSET para selecionar subconjuntos diferentes do resultado de uma consulta vai produzir resultados inconsistentes a menos que seja exigida uma ordena o previs vel dos resultados utilizando ORDER BY Isto n o um erro bug isto uma conseqii ncia do fato de que o SQL n o retorna os resultados de uma consulta em nenhuma ordem espec fica a n o ser que ORDER BY seja utilizado para definir esta o
284. ualmente o produto Cartesiano de todas as linhas de todas estas tabelas mas geralmente condi es de qualifica o s o adicionadas para restringir as linhas retornadas a um pequeno subconjunto do produto Cartesiano Quando o item da cl usula FROM simplesmente o nome de uma tabela implicitamente s o inclu das as linhas das subtabelas desta tabela filhas que herdam Especificando se ONLY causa a supress o das linhas das subtabelas da tabela Antes do PostgreSQL 7 1 este era o comportamento padr o e a adi o das subtabelas era feita anexando se um ao nome da tabela Este comportamento antigo est dispon vel atrav s do comando SET SQL_Inheritance TO OFF Um item da cl usula FROM pode ser tamb m uma subconsulta entre par nteses note que uma cl usula ali s exigida para a subconsulta Esta caracter stica extremamente til porque esta a nica maneira de se obter m ltiplos n veis de agrupamento agrega o ou ordena o em uma nica consulta Finalmente um item da cl usula FROM pode ser uma cl usula JOIN que combina dois itens do FROM Use par nteses se for necess rio para determinar a ordem de aninhamento O CROSS JOIN e o INNER JOIN s o um produto Cartesiano simples o mesmo que seria obtido listando se os dois itens no n vel superior do FROM O CROSS JOIN equivalente ao INNER JOIN ON TRUE ou seja nenhuma linha removida pela qualifica o Estes tipos de jun o s o apenas uma not
285. ue cont m a chave estrangeira BEGIN WORK LOCK TABLE filmes IN SHARE MODE SELECT id FROM filmes WHERE nome Star Wars Episode I The Phantom Menace a Fazer O ROLLBACK se a linha n o for encontrada INSERT INTO filmes_comentarios VALUES COMMIT WORK Obter o bloqueio no modo SHARE ROW EXCLUSIVE da tabela que cont m a chave realizar a opera o de exclus o BEGIN WORK LOCK TABLE filmes IN SHARE ROW EXCLUSIVE MODE DELETE FROM filmes comentarios WHERE id IN SELECT id FROM filmes WHERE avaliacao lt 5 DELETE FROM filmes WHERE avaliacao lt 5 COMMIT WORK Compatibilidade SQL92 cid Maravilhoso Eu estava aguardando por isto h muito tempo prim ria antes de N o existe o comando LOCK TABLE no SQL92 que em seu lugar usa o comando SET TRANSACTION para especificar os n veis de concorr ncia das transa es O PostgreSQL tamb m suporta esta funcionalidade Consulte o comando SET TRANSACTION para obter mais detalhes Exceto pelos modos de bloqueio ACCESS SHARE ACCESS EXCLUSIVE e SHARE UPDATE EX CLUSIVE os modos de bloqueio do PostgreSQL e a sintaxe do comando LOCK TABLE s o compat veis com as presentes no Oracle TM MOVE Name MOVE posiciona o cursor em uma determinada linha da tabela Synopsis MOVE dire o contador
286. ue o executor p ra ap s ter obtido uma linha Al m disso se for limitado o n mero de tuplas a serem retornadas usando a cl usula LIMIT o planejador efetua uma interpola o apropriada com rela o aos custos finais para saber qual plano realmente o de menor custo A op o ANALYZE faz com que a consulta seja realmente executada e n o apenas planejada O tempo total de dura o gasto dentro de cada parte do plano em milissegundos e o n mero total de linhas realmente retornadas s o adicionados ao que normalmente mostrado Esta op o til para ver se as estimativas do planejador est o pr ximas da realidade A op o VERBOSE fornece a representa o interna completa da rvore do plano em vez de apenas o seu sum rio e a envia para o arquivo de log do postmaster tamb m Geralmente esta op o til apenas para fazer o debug do pr prio PostgreSQL Caution Tenha em mente que a consulta realmente executada quando a op o ANALYZE usada Embora O EXPLAIN despreze qualquer sa da que o SELECT possa re tornar outros efeitos colaterais da consulta acontecem na forma usual Para usar EXPLAIN ANALYZE em um INSERT UPDATE ou DELETE sem deixar que os dados sejam afetados utilize o seguinte procedimento BEGIN EXPLAIN ANALYZE ROLLBACK Notas Existem apenas informa es esparsas sobre a utiliza o do otimizador na documenta o do PostgreSQL Consulte o Guia do Usu rio e o Guia do Programador
287. ui o 64 psql O primeiro exemplo mostra como distribuir um comando por v rias linhas de entrada Observe a mudanga do prompt testdb gt testadb gt testdb gt testdb gt CREATE CREATE TABLE minha_tabela first integer not null default 0 second text y Agora veja novamente a defini o da tabela testdb gt Md minha tabela Table minha tabela Attribute Type Modifier first second integer not null default 0 text Neste ponto pode se desejar mudar o prompt para algo mais interessante testdb gt set PROMPT1 SnQ m S SR H peterftlocalhost testdb gt Vamos assumir que a tabela j esteja com dados e queremos v los peterflocalhost testdb gt SELECT FROM minha tabela first second 1 one 2 two 3 three 4 four 4 rows Esta tabela pode ser mostrada de forma diferente usando se o comando pset peterftlocalhost testdb gt Mpset border 2 Border style is 2 peterftlocalhost testdb gt SELECT FROM minha tabela first second 1 one 2 two 3 three 4 four 4 rows peterftlocalhost testdb gt Mpset border 0 Border style is 0 peterflocalhost testdb gt SELECT FROM minha tabela 65 psql first second 1 one 2 two 3 three 4 four 4 rows peterftlocalhost testdb gt Mpset border 1 Border style is 1 peterftlocalhost testdb gt Mpset format unaligned Output format is unaligned peterflocalh
288. uir usu rios em um grupo ALTER GROUP arquitetura ADD USER joana alberto ALTER GROUP Excluir um usu rio de um grupo ALTER GROUP engenharia DROP USER margarida Compatibilidade SQL92 N o existe o comando ALTER GROUP no SQL92 O conceito de roles similar ao de grupos ALTER TABLE Name ALTER TABLE altera a defini o da tabela Synopsis ALTER TABLE ONLY tabela ADD COLUMN coluna tipo restri o de coluna ALTER TABLE ONLY tabela E ALTER COLUMN coluna SET DEFAULT valor DROP DI ALTER TABLE ONLY tabela E ALTER COLUMN coluna SET STATISTICS inteiro ALTER TABLE ONLY tabela E RENAME COLUMN coluna TO novo nome da coluna ALTER TABLE tabela RENAME TO novo nome da tabela ALTER TABLE tabela ADD defini o de restri o de tabela ALTER TABLE ONLY tabela DROP CONSTRAINT restri o RESTRICT CASCADE R TABLE tabela OWNER TO novo dono D Entradas tabela O nome da tabela existente a ser alterada coluna O nome de uma coluna nova ou existente tipo O tipo da nova coluna novo_nome_da_coluna O novo nome para a coluna existente novo_nome_da_tabela O novo nome para a tabela defini o de restri o de tabela A nova restri o de tabela table constraint para a tabela EFAULT ALTER TABLE novo_dono O nome de
289. uncionalidade deste comando na verdade chama este comando mas que pode ser executado a partir da linha de comandos Utiliza o CREATE USER Criar um usu rio sem senha CR EAT US ER jonas Criar um usu rio com senha CR EAT US ER manuel WITH PASSWORD 3w8s0F4 Criar um usu rio com senha cuja conta seja v lida at o fim de 2001 Observe que no primeiro instante de 2002 esta conta n o ser mais v lida CR EAT US ER miriam WITH PASSWORD jw8s0F4 VALID UNTIL Jan 1 2002 Criar uma conta onde o usu rio pode criar bancos de dados CREATE USER manuel WITH PASSWORD jw8s0F4 CREATEDB Compatibilidade SQL92 N o existe o comando CREATE USER no SQLO92 CREATE VIEW Name CREATE VIEW define uma nova vis o Synopsis CREATE VIEW vis o nomes de colunas AS SEI ECT consulta Entradas vis o O nome da vis o a ser criada nomes de colunas Uma rela o opcional de nomes a serem usados para as colunas da vis o Quando fornecidos estes nomes substituem os nomes inferidos a partir da consulta SQL consulta Uma consulta SQL que fornece as colunas e as linhas da vis o Consulte o comando SELECT para obter mais informa es sobre os argumentos v lidos Sa das CREATE Mensagem retornada se a vis o for criada com suc
290. urante a compila o normalmente 5432 Se for especificada outra porta diferente da porta padr o ent o todos os aplicativos cliente devem especificar a mesma porta usando a op o de linha de comando ou a vari vel de ambiente PGPORT Especifica que o processo postmaster deve iniciar no modo silencioso ou seja ser dissociado do terminal do usu rio iniciar seu pr prio grupo de processos e redirecionar sua sa da padr o e erro padr o para dev null O uso desta chave descarta toda a sa da para o log o que provavelmente n o o desejado porque torna muito dif cil a solu o dos problemas Veja abaixo uma maneira mais adequada de iniciar o postmaster em segundo plano nome valor Define o par metro de tempo de execu o designado uma forma mais curta da op o c Duas op es adicionais de linha de comando est o dispon veis para a depura o de problemas que fazem o servidor terminar anormalmente Estas op es controlam o comportamento do postmaster nesta situa o e nenhuma delas foi feita para ser usada durante a opera o normal A estrat gia comum para esta situa o notificar a todos os outros servidores que eles devem terminar e ent o reinicializar a mem ria compartilhada e os sem foros Isto necess rio porque um servidor errante pode ter corrompido algum estado compartilhado antes de terminar Estas op es caso especial s o n O postmaster n o ir reinicializar as estruturas de
291. ve para permitir a defini o de dois operadores que s o o comutador ou o negador um do outro O primeiro operador deve ser definido sem um comutador ou negador conforme apropriado Quando o segundo operador for definido este nomear o primeiro como seu comutador ou negador O primeiro ser atualizado como efeito colateral A partir do PostgreSQL 6 5 isto tamb m funciona para se ter apenas dois operadores referindo um ao outro CREATE OPERATOR As op es HASHES SORT1 e SORTZ2 est o presentes para apoiar o otimizador de consultas na real iza o de jun es O PostgreSQL sempre pode avaliar uma jun o i e processar uma cl usula com duas vari veis tuplas separadas por um operador que retorna um booleano por substitui o inter ativa WONG76 Adicionalmente o PostgreSQL pode usar um algoritmo jun o hash junto com as linhas de SHAP86 entretanto necessita saber se esta estrat gia aplic vel O algoritmo atual de jun o hash correto apenas para operadores que representam testes de igualdade al m disso a igual dade do tipo de dado deve significar igualdade bit a bit da representa o do tipo Por exemplo um tipo de dado que cont m bits n o utilizados que n o fazem diferen a nos testes de igualdade n o pode utilizar jun o hash O sinalizador HASHES indica ao otimizador de consultas que a jun o hash pode ser usada com seguran a com este operador Analogamente os dois operadores de ordena o indi
292. vo e executar como se tivesse sido digitada pelo teclado 50 psql Note Se for desejado ver as linhas na tela enquanto estas s o lidas deve se definir a vari vel ECHO COMO all 1 ou list Lista todos os bancos de dados do servidor assim como seus donos Deve se apensar o caractere ao nome do comando para listar as descri es dos bancos de dados tamb m Se o PostgreSQL foi compilado com suporte codifica o multibyte o esquema de codifica o de cada banco de dados tamb m mostrado lo_export loid nome do arquivo L do banco de dados o objeto grande com OID igual a 1oid e escreve em nome do arquivo Observe que isto sutilmente diferente da fun o do servidor 1o_export que atua com a permiss o do usu rio como o qual o servidor de banco de dados processa e no sistema de arquivos do servidor Tip Use 110_1ist para descobrir os OIDs dos objetos grandes Note Veja a descri o da vari vel LO TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes Vlo import nome do arquivo coment rio Armazena o arquivo em um objeto grande do PostgreSQL Opcionalmente associa o coment rio fornecido com o objeto Exemplo foo gt Nlo import home peter pictures photo xcf uma fotografia minha lo import 152801 A resposta indica que o objeto grande recebeu o identificador de objeto 152801 que deve ser lem brado para acessar o objeto novament
293. w 0 Tup 1000 Vac 3000 Crash 0 UnUsed 0 MinLen 188 MaxLen 188 Re using Free Avail Space 586952 586952 EndEmpty Avail Pages 0 74 Elapsed 0 0 sec A an lise da tabela NOTICE Index ndice Pages 28 Tuples 1000 Deleted 3000 Elapsed 0 0 sec A an lise de um ndice da tabela Descric o O comando VACUUM recupera a rea de armazenamento ocupada pelas tuplas exclu das Na opera o nor mal do PostgreSQL as tuplas que s o exclu das ou que se tornam obsoletas devido a uma atualiza o n o s o fisicamente removidas da tabela elas permanecem presentes at que o comando VACUUM seja execu tado Portanto necess rio executar o VACUUM periodicamente especialmente em tabelas freqiientemente atualizadas Sem nenhum par metro o VACUUM processa todas as tabelas do banco de dados corrente Com um par metro o VACUUM processa somente esta tabela T O comando VACUUM ANALYZE executa o comando VACUUM e depois o comando ANALYZE para cada tabela selecionada Esta uma forma de combina o adequada para os scripts das rotinas de manuten o Consulte o comando ANALYZE para obter mais detalhes sobre o seu processamento Somente o VACUUM sem O FULL simplesmente recupera o espa o e torna o dispon vel para ser reuti lizado Esta forma do comando pode operar em paralelo com a leitura e escrita normal da tabela O VACUUM FULL executa um processamento mais extenso incluindo a movimenta
294. x A diferen a entre as duas que bigbox_ops ajusta as coordenadas da caixa para baixo evitando exce es de ponto flutuante ao executar multiplica o adi o e subtra o de coordenadas com n meros de ponto flutuante muito grande Nota isto era verdade h algum tempo atr s mas atualmente as duas classes de operadores utilizam ponto flutuante e s o efetivamente id nticas A seguinte consulta exibe todas as classes de operadores SELECT am amname AS metodo de acesso opc opcname AS nome do operador opr oprname AS op compara o FRO pg am am pg opclass opc pg amop amop pg operator opr WHERE opc opcamid am oid AND amop amopclaid opc oid AND amop amopopr opr oid R BY m todo de acesso nome do operador op compara o ORD ti Utiliza o Para criar um ndice B t ree para a coluna titulo na tabela filmes CREATE UNIQUE INDEX unq titulo ON filmes titulo Compatibilidade SQL92 O comando CREATE INDEX uma extens o do PostgreSQL linguagem N o existe o comando CREATE INDEX no SQL92 CREATE LANGUAGE Name CREATE LANGUAG Synopsis F a CREATE TRUSTED HANDLER tratador de chamadas Descri o Atrav s do comando CREATE 1 procedural em um banco de dados do PostgreSQL Depois podem ser definidos fun es e procedimentos de gatilhos nesta nova linguagem O usu rio deve p
295. za o Remover a vis o chamada tipos DROP VIEW tipos Compatibilidade SQL92 O SQL92 especifica algumas funcionalidades adicionais para o comando DROP VIEW DROP VIEW vis o RESTRICT CASCADE Entradas RESTRICT Garante que somente uma vis o sem restri es de integridade nem vis es dependentes pode ser removida CASCADE Toda vis o que fa a refer ncia e restri o de integridade tamb m removida Notas Atualmente a remo o de uma vis o referenciada do banco de dados PostgreSQL deve ser feita explici tamente END Name END efetiva a transa o corrente Synopsis END WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das COMMIT Mensagem retornada se a transa o for efetivada com sucesso NOTICE COMMIT no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando END uma extens o do PostgreSQL um sin nimo para o comando COMMIT compat vel com o SQL92 Notas As palavras chave WORK e TRANSACTION s o informativas podendo ser omitidas Use o ROLLBACK para desfazer a transa o END Utiliza o Para tornar todas as modifica es permanentes END WORK Compatibilidade SQL92 O comando END uma extens o do PostgreSQL que fornece uma funcionalidade equivalente ao COM MIT EXPLAIN Name EXPLAIN mostra o pla
Download Pdf Manuals
Related Search
Related Contents
MANUAL DEL USUARIO - Icon Heath & Fitness Enterprise Back Office HIWIN PCI-4P Hardware Manual 1 Tryck på - Vandenborre Copyright © All rights reserved.
Failed to retrieve file