Вы находитесь на странице: 1из 15

Guia de Consulta Rpida

PostgreSQL

Juliano Niederauer

Segunda Edio

Novatec Editora

Copyright 2004 da Novatec Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora. Editor: RUBENS PRATES

ISBN: 85-7522-012-8

NOVATEC EDITORA LTDA.


Rua Cons. Moreira de Barros 1084 Conj. 01 02018-012 So Paulo SP Brasil Tel.: +55 11 6959-6529 Fax: +55 11 6950-8869 E-mail: novatec@novateceditora.com.br Site: www.novateceditora.com.br

Sumrio

Conceitos bsicos ........................................................................... 5 Arquitetura do PostgreSQL ...................................................... 5 PostgreSQL x MySQL .............................................................. 6 Como obter o PostgreSQL ....................................................... 6 Comandos SQL .............................................................................. 8 Tipos de dados do PostgreSQL ................................................... 30 Numricos .............................................................................. 30 Monetrios ............................................................................. 30 String ...................................................................................... 30 Data/Hora ............................................................................... 31 Booleanos .............................................................................. 32 Geomtricos ........................................................................... 32 Endereo de rede .................................................................. 33 Tipos de Join ................................................................................. 33 CROSS JOIN ......................................................................... 33 Qualified JOINs ...................................................................... 33 Operadores ................................................................................... 35 Operadores numricos .......................................................... 35 Operadores lgicos ................................................................ 35 Operadores binrios .............................................................. 35 Operadores relacionais .......................................................... 36 Operador LIKE ....................................................................... 36 Operadores geomtricos ....................................................... 37 Operadores de endereos de rede ........................................ 38 Precedncia de operadores ................................................... 38 Funes ........................................................................................ 39 Funes de agregao .......................................................... 39 Funes de comparao ....................................................... 39 Funes matemticas ............................................................ 40 Funes de string ................................................................... 42 Funes de formatao ......................................................... 44 Funes de data e hora ......................................................... 46 Funes geomtricas ............................................................. 47 Funes de endereos de rede ............................................. 49 Miscelnea ............................................................................. 49 Sintaxe no PostgreSQL ................................................................ 50 Comentrios no cdigo SQL .................................................. 50 Identificadores ........................................................................ 50 Constantes ............................................................................. 51 Palavras reservadas do PostgreSQL .................................... 54 Recursos avanados .................................................................... 55 Utilizando arrays .................................................................... 55 Herana .................................................................................. 57 A Tcnica MVCC .................................................................... 59 Programas clientes do PostgreSQL ............................................. 61 createdb ................................................................................. 61 createlang .............................................................................. 61 createuser .............................................................................. 62 dropdb .................................................................................... 62 droplang ................................................................................. 62 dropuser ................................................................................. 63 ecpg ....................................................................................... 63 pgaccess ................................................................................ 64 pgadmin ................................................................................. 64 pg_config ................................................................................ 64 pg_dump ................................................................................ 65 pg_dumpall ............................................................................. 66 pg_restore .............................................................................. 67 psql ......................................................................................... 68 pgtclsh .................................................................................... 71 pgtksh ..................................................................................... 71 vacuumdb ............................................................................... 71 Aplicaes do servidor PostgreSQL ............................................. 72 initdb ....................................................................................... 72 initlocation .............................................................................. 72 ipcclean .................................................................................. 72 pg_controldata ....................................................................... 72

Sumrio

pg_ctl ...................................................................................... 73 pg_resetxlog ........................................................................... 73 postgres ................................................................................. 73 postmaster ............................................................................. 74 Arquivos e catlogos do PostgreSQL .......................................... 76 O arquivo pg_hba.conf ........................................................... 76 Catlogos do sistema ............................................................ 77 Funes PHP ................................................................................ 84 Informaes adicionais ................................................................. 90 Verso do PostgreSQL utilizada no Guia .............................. 90 Links sobre o PostgreSQL ..................................................... 90 Notao utilizada neste Guia ................................................. 90 Comentrios e sugestes ...................................................... 90 ndice remissivo ............................................................................ 91

Conceitos bsicos

Conceitos bsicos
O PostgreSQL um SGBD (Sistema Gerenciador de Bancos de Dados) relacional e orientado a objetos. um software de livre distribuio e tem seu cdigo-fonte aberto. Oferece suporte linguagem SQL (Structured Query Language) de acordo com os padres SQL92/SQL99, alm de outras caractersticas modernas. Em termos de recursos, pode ser comparado aos melhores bancos de dados comerciais existentes, sendo inclusive superior em alguns aspectos. O PostgreSQL introduziu conceitos do modelo objeto-relacional que hoje esto disponveis em alguns bancos de dados comerciais. O desenvolvimento do PostgreSQL teve incio no ano de 1985, no departamento de Cincia da Computao da Universidade da Califrnia, em Berkeley. Hoje mantido pela Internet por um grupo de desenvolvedores. Os termos PostgreSQL e Postgres sero usados no decorrer deste guia, ambos para referenciar esse SGBD, visto que o nome do projeto inicial era Postgres.

Arquitetura do PostgreSQL
Antes de comear a utilizar o PostgreSQL, importante que haja a compreenso de sua arquitetura bsica. Quando aberta uma sesso do Postgres, trs processos (programas em execuo) trabalham de forma cooperativa: um processo daemon (postmaster); a aplicao do cliente (por exemplo, o programa psql); um ou mais servidores de banco de dados (o prprio processo postgres). Um nico processo postmaster gerencia os bancos de dados existentes em uma mquina. As aplicaes do cliente (chamadas de frontend) que desejam acessar determinado banco de dados fazem chamadas a uma biblioteca (chamada LIBPQ). A biblioteca envia a requisio do usurio pela rede para o processo postmaster, que cria um novo processo-servidor (chamado de backend) e conecta o processo-cliente ao servidor criado. A partir da, os processos-cliente e servidor (frontend e backend) se comunicam sem a interveno do postmaster. A figura 1 mostra como ocorre uma conexo.

Figura 1 Estabelecimento de uma conexo.

Conceitos bsicos
Portanto o postmaster o gerenciador de conexes do PostgreSQL. Esse processo estar sempre em execuo, esperando por requisies.

PostgreSQL x MySQL
So dois excelentes SGBDs, ambos gratuitos. O MySQL est disponvel sob a GPL (licena pblica GNU), alm de possuir uma licena convencional, para quem no quiser estar limitado aos termos da GPL. J o PostgreSQL est disponvel sob a flexvel licena BSD. O MySQL mais utilizado no desenvolvimento de aplicaes onde a velocidade importante, enquanto que o PostgreSQL se destaca por ser mais robusto e possuir muito mais recursos. Esses recursos tornam o PostgreSQL um pouco mais qualificado do que o MySQL. Nas ltimas verses do MySQL, os desenvolvedores acrescentaram diversos recursos que j existiam no PostgreSQL, como transaes (confirmao ou cancelamento de operaes realizadas), triggers (gatilhos), stored procedures (procedimentos armazenados), views (vises), lock de linha (bloqueio em nvel de linha) e constraints (clusulas de integridade). No entanto, o PostgreSQL continua sendo mais eficiente em vrios aspectos. Possui um sofisticado mecanismo de bloqueio (MVCC), suporta tamanhos ilimitados de linhas, bancos de dados e tabelas (at 16TB), aceita vrios tipos de subconsultas, possui mais tipos de dados e conta com um bom mecanismo de failsafe (segurana contra falhas, como por exemplo no desligamento repentino do sistema). Como j foi dito no incio desse tpico, a vantagem do MySQL a velocidade de acesso. Para bases de dados muito grandes, o MySQL faz um acesso mais rpido que o PostgreSQL. Portanto se seu site possuir um banco de dados muito grande, vale a pena analisar a possibilidade de usar o MySQL. Para base de dados menores, no h diferena na velocidade de acesso entre os dois SGBDs.

Como obter o PostgreSQL


O PostgreSQL est disponvel para download em qualquer um dos mirrors (cpias do servidor principal) apresentados em seu site oficial, no endereo http://www.postgresql.org. O download pode ser feito tanto por HTTP como por FTP. Esse site apresenta links para mirrors localizados em diversos pases, inclusive no Brasil. Para obter sempre as informaes mais atualizadas, consulte periodicamente o site oficial do PostgreSQL, no qual voc encontrar: ltima verso do PostgreSQL para download via HTTP ou FTP; Informaes gerais; ltimas notcias sobre o PostgreSQL; FAQ (Frequently Asked Questions, ou seja, perguntas mais freqentes); Documentao para download; Documentao interativa;

Conceitos bsicos

Indicao de livros sobre PostgreSQL; Listas de discusso; Links para artigos e outras publicaes sobre o PostgreSQL. Muitas distribuies do sistema operacional Linux, como por exemplo, o Red Hat ou o Conectiva Linux, j incluem o PostgreSQL entre seus pacotes, e nesse caso voc no precisar acessar o site para fazer o download. Basta selecionar, no momento da instalao do Linux, o pacote do PostgreSQL, e o programa de instalao far sua instalao e configurao automaticamente. No entanto, se voc quiser ter sempre a verso mais atualizada do PostgreSQL, fique atento s atualizaes publicadas no site oficial.

Comandos SQL

Comandos SQL
ABORT Aborta a transao corrente, descartando todas as atualizaes feitas desde o incio da transao. equivalente ao comando ROLLBACK.
TRANSACTION] ABORT [WORK | TRANSACTION WORK

ALTER AGGREGATE Altera a definio de uma funo agregada. Nessa verso, a nica funcionalidade a mudana do nome da funo.
ALTER AGGREGATE nome (tipo) RENAME TO novo_nome

ALTER CONVERSION Altera a definio de uma converso. Nessa verso, a nica funcionalidade a mudana do nome da converso.
ALTER CONVERSION nome RENAME TO novo_nome

ALTER DATABASE Altera um banco de dados. Pode ser usado de trs formas. As duas primeiras alteram o valor de uma varivel de configurao, enquanto a terceira usada para alterar o nome do banco de dados.
TO ALTER DATABASE nome SET parmetro {TO | =} {valor | DEFAULT} DEFAULT ALTER DATABASE nome RESET parmetro ALTER DATABASE nome RENAME TO novo_nome

ALTER DOMAIN Altera a definio de um domnio. Pode ser usado para adicionar ou remover clusulas de integridade (contraints), definir um valor padro ou alterar o proprietrio do domnio.
ALTER DOMAIN nome {SET DEFAULT expresso | DROP DEFAULT DEFAULT} SET ALTER DOMAIN nome {SET | DROP NOT NULL DROP} SET ALTER DOMAIN nome ADD clusula_integridade ALTER DOMAIN nome RESTRICT DROP CONSTRAINT clusula_integridade [RESTRICT | CASCADE] CASCADE ALTER DOMAIN nome OWNER TO novo_proprietrio

ALTER FUNCTION Altera a definio de uma funo. Nessa verso, a nica funcionalidade a mudana do nome da funo.
ALTER FUNCTION nome ([tipo [,...]]) RENAME TO novo_nome

ALTER GROUP Adiciona ou remove usurios a um grupo. Os usurios devem existir, pois este comando no cria ou exclui usurios, ele apenas controla quais usurios faro parte do grupo. Tambm pode ser usado pelo superusurio para renomear um grupo.
ALTER GROUP nome_grupo ADD USER usurio [,... ] ALTER GROUP nome_grupo DROP USER usurio [,... ] ALTER GROUP nome_grupo RENAME TO novo_nome

ALTER LANGUAGE Altera a definio de uma linguagem procedural. Nessa verso, a nica funcionalidade a mudana do nome da linguagem.
ALTER LANGUAGE nome RENAME TO novo_nome

Comandos SQL

ALTER OPERATOR CLASS Altera a definio do operador de uma classe. Nessa verso, a nica funcionalidade a mudana do nome do operador.
ALTER OPERATOR CLASS nome USING mtodo_ndice RENAME TO novo_nome

ALTER SCHEMA Altera a definio de um esquema. Para executar esse comando voc deve ser proprietrio do esquema e possuir o privilgio CREATE no banco de dados.
ALTER SCHEMA nome RENAME TO novo_nome

ALTER SEQUENCE Altera a definio de um gerador de seqncia. Os parmetros no especificados nesse comando continuam com o mesmo valor.
BY] ALTER SEQUENCE nome [INCREMENT [BY incremento] INCREMENT BY [MINVALUE valor_min | NO MINVALUE MINVALUE] MINVALUE [MAXVALUE valor_max | NO MAXVALUE MAXVALUE] MAXVALUE [RESTART [WITH incio] [CACHE cache] [[NO CYCLE WITH] NO] RESTART WITH CACHE NO CYCLE]

ALTER TABLE Modifica propriedades de uma tabela. Possui diversas sintaxes, permitindo adicionar ou remover colunas e clusulas de integridade de uma tabela, definir o modo de aramazenamento dos dados, alterar o proprietrio, etc. Voc deve ser o dono (owner) da tabela para poder alter-la.
ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] ADD [COLUMN coluna tipo [clusula_integridade [...]] COLUMN ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] CASCADE] DROP [COLUMN coluna [ RESTRICT | CASCADE COLUMN ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] ALTER [COLUMN coluna COLUMN {SET DEFAULT expresso | DROP DEFAULT DEFAULT} SET ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] DROP} ALTER [COLUMN coluna { SET | DROP NOT NULL COLUMN ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] ALTER [COLUMN coluna SET STATISTICS inteiro COLUMN ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] ALTER [COLUMN coluna COLUMN MAIN} SET STORAGE {PLAIN | EXTERNAL | EXTENDED | MAIN PLAIN ONLY] ALTER TABLE [ONLY tabela [*] ONLY * SET WITHOUT OIDS ONLY] ALTER TABLE [ONLY tabela [*] ONLY * COLUMN] RENAME [COLUMN coluna TO nova_coluna COLUMN ALTER TABLE tabela RENAME TO novo_nome_tabela ALTER TABLE [ONLY tabela [*] ONLY * ONLY] ADD clusula_integridade ONLY] ALTER TABLE [ONLY tabela [*] ONLY * DROP CONSTRAINT clusula_integridade [RESTRICT | CASCADE ] RESTRICT ALTER TABLE tabela OWNER TO novo_proprietrio ALTER TABLE tabela CLUSTER ON nome_ndice

ALTER TRIGGER Altera a definio de um gatilho (trigger). Para executar esse comando, voc deve ser o proprietrio da tabela para a qual o gatilho ativado.
ALTER TRIGGER nome ON tabela RENAME TO novo_nome

10

Comandos SQL

ALTER USER Modifica informaes da conta do usurio. Usurios comuns podem alterar apenas sua prpria senha, enquanto o superusurio do banco de dados pode alterar as senhas e privilgios de todos os usurios.
WITH] ALTER USER usurio [[WITH opo [... ]] WITH

O parmetro "opo" pode ser:


ENCRYPTED [ENCRYPTED | UNENCRYPTED ] PASSWORD 'senha' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | VALID UNTIL 'tempo'

Outras sintaxes possveis:


ALTER USER nome RENAME TO novo_nome DEFAULT} ALTER USER nome SET parmetro {TO | =} {value | DEFAULT TO value ALTER USER nome RESET parmetro

Parmetro

Descrio

usurio O username do usurio cujos dados sero alterados. senha A nova senha a ser usada nessa conta. ENCRYPTED, UNENCRYPTED Definem se a senha ser armazenada criptografada (encrypted) no arquivo pg_shadow. CREATEDB, NOCREATEDB Definem se o usurio est habilitado a criar bancos de dados. Se CREATEDB for especificado, o usurio poder criar seus prprios bancos de dados. CREATEUSER, NOCREATEUSER Definem se o usurio est habilitado a criar novos usurios. tempo A data (opcionalmente a hora) que a senha expirar.

ANALYZE Obtm estatsticas sobre um banco de dados. Os resultados so armazenados na tabela pg_statistic, e posteriormente so utilizados pelo sistema no plano de execuo das consultas.
VERBOSE] ANALYZE [VERBOSE [tabela [(coluna [,...])]] VERBOSE

BEGIN Inicia uma transao. O Postgres, por padro, realiza o autocommit, isto , cada comando considerado uma transao, que confirmada de forma implcita. O comando BEGIN inicia uma transao em que vrios comandos podem ser executados, para posteriormente serem confirmados ou descartados.
TRANSACTION] BEGIN [WORK | TRANSACTION WORK

Parmetro
WORK, TRANSACTION

Descrio
So palavras opcionais e no produzem nenhum efeito.

CHECKPOINT Insere um checkpoint no log da transao. O checkpoint define at onde os arquivos de dados devem ser atualizados.
CHECKPOINT

CLOSE Fecha um cursor declarado pelo comando DECLARE, liberando os recursos associados a ele.
CLOSE nome_cursor

CLUSTER Envia um aviso de clustering ao servidor. Assim a tabela fisicamente reordenada, baseada na informao do ndice.
CLUSTER ndice ON tabela CLUSTER tabela CLUSTER

Comandos SQL

11

COMMENT Adiciona um comentrio a um objeto. Se um objeto comentado for excludo, os comentrios referentes a ele tambm sero.
COMMENT ON { TABLE nome_objeto | COLUMN tabela.coluna | AGGREGATE nome_agreg (tipo_agreg) | CONSTRAINT clusula_integridade ON tabela | DATABASE nome_objeto | DOMAIN nome_objeto | FUNCTION nome_funo (tipo_arg1, tipo_arg2, ...) | INDEX nome_objeto | OPERATOR op (tipo_op_esq, tipo_op_dir) | RULE nome_regra ON tabela | SCHEMA nome_objeto | SEQUENCE nome_objeto | TRIGGER nome_trigger ON tabela | TYPE nome_objeto | VIEW nome_objeto } IS 'comentrio'

Parmetro

Descrio

nome_objeto, tabela, coluna, nome_agreg, nome_funo, op, nome_trigger O nome do objeto a ser comentado. comentrio O texto do comentrio.

COMMIT Confirma a transao atual, fazendo com que as mudanas feitas possam ser vistas por quem consultar a base de dados.
TRANSACTION] COMMIT [WORK | TRANSACTION WORK

Parmetro
WORK, TRANSACTION

Descrio
So palavras opcionais e no produzem nenhum efeito.

COPY Copia dados entre arquivos e tabelas. Para ler ou gravar dados em um arquivo necessrio que o usurio possua as devidas permisses de leitura e escrita.
STDIN} FROM COPY tabela [(coluna [,...])]FROM {'arquivo'| STDIN [[WITH [BINARY [OIDS WITH] BINARY BINARY] OIDS OIDS] WITH [DELIMITER [AS 'delimitador'] AS] DELIMITER AS [NULL [AS 'string_nula']] AS] NULL AS STDOUT} COPY tabela [(coluna [, ...])] TO {'arquivo' | STDOUT [[WITH [BINARY OIDS WITH] BINARY OIDS] BINARY][OIDS WITH [DELIMITER [AS 'delimitador'] AS] DELIMITER AS [NULL [AS 'string_nula']] AS] NULL AS

Parmetro
tabela coluna arquivo BINARY OIDS STDIN STDOUT delimitador string_nula

Descrio
Nome de uma tabela existente. Nome da coluna a ser obtida. Caminho absoluto para o arquivo de entrada ou de sada. Fora todos os dados a serem armazenados ou lidos no formato binrio. As opes DELIMITERS e WITH NULL so irrelevantes para o formato binrio. Copia o identificador do objeto (OID) para cada linha. Define que a entrada vem da aplicao cliente. Define que a sada vai para a aplicao cliente. O caractere que separa os campos em uma linha do arquivo. A string que representa o valor NULL.

CREATE AGGREGATE Define uma nova funo de agregao. Este comando torna possvel o acrscimo de novas funcionalidades por parte dos usurios.

12

Comandos SQL
CREATE AGGREGATE nome ( BASETYPE = tipo_entrada, SFUNC = funcao_estado, STYPE = tipo_estado [,FINALFUNC = funo_final] FINALFUNC [,INITCOND = condio_inicial]) INITCOND

Parmetro
nome tipo_entrada funo_estado

Descrio
Nome da funo de agregao a ser criada. Tipo do dado de entrada com o qual essa funo opera. Se for usado o valor ANY, o valor de entrada no ser analisado. O nome da funo de transio de estado que ser chamada para cada dado de entrada. Recebe o valor do estado corrente e o dado de entrada corrente, e retorna o prximo valor do estado. O tipo de dados para o valor do estado agregado. O nome da funo final chamada para calcular o resultado doagregadoapstodasasentradasteremsidofornecidas. Se essa funo no for especificada, o valor do estado final usado como resultado do agregado, e o tipo de sada tipo_estado. A configurao inicial para o valor do estado. Deve ser uma constante em uma forma aceita pelo tipo tipo_estado. Se no for especificada, o valor do estado inicia em NULL.

tipo_estado funo_final

condio_inicial

CREATE CAST Define um novo cast. Um cast define como deve ser executada a converso entre dois tipos de dados.
CREATE CAST (tipo_origem AS tipo_destino) WITH FUNCTION nome_funo (tipo_arg) [AS ASSIGNMENT | AS IMPLICIT IMPLICIT] AS CREATE CAST (tipo_origem AS tipo_destino) IMPLICIT] WITHOUT FUNCTION [AS ASSIGNMENT | AS IMPLICIT AS

CREATE CONSTRAINT TRIGGER Cria um trigger para suportar integridade de dados. usado nos comandos de criao e alterao de tabelas.
CREATE CONSTRAINT TRIGGER nome AFTER eventos ON relao constraint atributos FOR EACH ROW EXECUTE PROCEDURE funo (args)

Parmetro
nome eventos relao constraint atributos funo (args)

Descrio
O nome do trigger constraint. As categorias de evento para as quais o trigger deve ser disparado. Nome da tabela relacionada com o trigger. Especificao da constraint. Atributos da constraint. Funo a ser chamada como parte do processamento do trigger.

CREATE CONVERSION Define uma nova converso. As converses podem ser usadas na funo convert para especificar um determinado tipo de codificao.
DEFAULT] CREATE [DEFAULT CONVERSION nome DEFAULT FOR codif_origem TO codif_destino FROM nome_funo

CREATE DATABASE Cria um novo banco de dados. Opcionalmente, pode-se especificar um local (caminho) onde os dados sero armazenados. Se for especificado, por exemplo, /var/lib/pgsql, os dados sero gravados nesse diretrio. O usurio que executar esse comando se tornar o dono (owner) do banco de dados.

Comandos SQL
CREATE DATABASE nome [WITH [OWNER [=] proprietrio] WITH OWNER [LOCATION = caminho] LOCATION [TEMPLATE = modelo ] TEMPLATE [ENCODING = codificao]] ENCODING

13

Parmetro
nome proprietrio caminho modelo codificao

Descrio
O nome do banco de dados a ser criado. Usurio que ser o proprietrio do banco de dados. A localizao do sistema de arquivos onde ser armazenado o banco de dados. Nome do modelo a partir do qual ser criado o banco de dados. Se no for especificado, ser usado o modelo-padro (template1). Mtodo de codificao que ser usado no banco de dados. Pode ser especificado por um string (como, por exemplo, SQL_ASCII), ou por um nmero inteiro codificado. Se no for especificado, ser usado o mtodo-padro.

CREATE DOMAIN Define um novo domnio, que consiste em um tipo de dado personalizado criado a partir de um tipo j existente. Com um domnio podemos definir regras e fazer validaes de dados sobre determinadas colunas em uma tabela.
AS] CREATE DOMAIN nome [AS tipo_dado AS [DEFAULT expresso][ constraint [...]] DEFAULT

O parmetro constraint pode ser:


CONSTRAINT [CONSTRAINT clusula_integridade] {NOT NULL | NULL | CHECK (expresso)} NOT

CREATE FUNCTION Define uma nova funo. Posteriormente, essa funo poder ser usada por outros comandos, como, por exemplo, o CREATE TYPE.
CREATE [OR REPLACE FUNCTION nome ([tipo_arg OR REPLACE] RETURNS tipo_ret {LANGUAGE nome_ling | IMMUTABLE | STABLE LANGUAGE | CALLED ON NULL INPUT | RETURNS NULL ON | STRICT | [EXTERNAL SECURITY INVOKER | EXTERNAL] EXTERNAL SECURITY DEFINER | AS 'definio' | AS 'arq_obj', 'link_simbol'} ... [WITH (atributo [,...])] WITH [,...]]) | VOLATILE NULL INPUT [EXTERNAL EXTERNAL] EXTERNAL

Parmetro
nome tipo_arg

Descrio

O nome da funo a ser criada. Os tipos de dados dos argumentos da funo (se houver). Os tipos de entrada devem ser bsicos, complexos ou opacos (argumentos que no so do tipo SQL). tipo_ret O tipo do dado que a funo retorna. Deve ser especificado como um tipo bsico, complexo, setof (indica que a funo retorna um conjunto de itens) ou opaco. atributo Parte de uma informao opcional usada para otimizao. definio Uma definio (em string) da funo. Pode ser o nome de uma funo interna, o caminho para um arquivo-objeto, uma consulta SQL ou texto em linguagem procedural. arq_obj , link_simbol Usado para criar links dinamicamente. s vezes o nome da funo na linguagem C no possui o mesmo nome da funo SQL. O parmetro arq_obj o nome do arquivo contendo o objeto que pode ser carregado dinamicamente, e link_symbol o link simblico do objeto, que o nome da funo no cdigo-fonte da linguagem C. nome_ling Nome da linguagem usada. Pode ser sql, C, internal ou plname (para linguagem procedural).

14

Comandos SQL

CREATE GROUP Cria um novo grupo. Um grupo uma maneira de unir logicamente determinados usurios do banco de dados.
CREATE GROUP nome USER [WITH [SYSID gid ][USER usurio [,...]]] WITH SYSID

Parmetro
nome gid

Descrio
O nome do grupo. A identificao do grupo (group id) no Postgres. Pode ser usada a clusula SYSID para escolher a identificao do novo grupo. Se no for especificado, o maior nmero de grupo atribudo incrementado e usado como padro. Lista de usurios a serem includos no grupo. Esses usurios devem existir.

usurio

CREATE INDEX Cria um ndice secundrio. Os ndices so utilizados para melhorar o desempenho do banco de dados, possibilitando que as consultas sejam executadas mais rapidamente.
UNIQUE] CREATE [UNIQUE INDEX nome ON tabela UNIQUE [USING mtodo] ({coluna | (expresso)} [op_classe] USING [, ...]) [WHERE predicado ] WHERE

Parmetro
UNIQUE

Descrio
No permite a duplicao de valores na tabela quando o ndicecriadoecadavezquenovosdadossoacrescentados. Inseres ou atualizaes de dados que geram entradas duplicadas causaro um erro. O nome do ndice a ser criado. O nome da tabela a ser indexada. O nome do mtodo de acesso a ser usado pelo ndice. Os mtodos disponveis no Postgres so btree, hash, rtree e gist. O padro BTREE. Nome de uma coluna da tabela. Expresso baseada em uma ou mais colunas da tabela. Um operador de classe associado. Clusula de integridade para definir uma indexao parcial.

nome tabela mtodo coluna expresso op_classe predicado

CREATE LANGUAGE Define uma nova linguagem para funes. Posteriormente podero ser criadas funes e triggers com o uso dessa linguagem.
TRUSTED] PROCEDURAL PROCEDURAL] CREATE [TRUSTED [PROCEDURAL LANGUAGE nome_ling TRUSTED VALIDATOR HANDLER funo_manip [VALIDATOR funo_valid ]

Parmetro
TRUSTED

Descrio
Especifica se a funo de manipulao da linguagem segura, isto , se haver restries de acesso para um usurio no privilegiado. Se essa palavra-chave for omitida aoregistrarumalinguagem,somenteosusurioscomprivilgio de superusurio do Postgres podero usar essa linguagem para criar funes. O nome (sensvel a letras maisculas e minsculas) da nova linguagem procedural. O nome dessa linguagem no pode anular uma das linguagens predefinidas do Postgres. Nome de uma funo previamente registrada que ser chamada para executar os procedimentos PL. Nome de uma funo j registrada, que ser chamada para validar a criao de uma funo nessa linguagem.

nome_ling funo_manip funo_valid

CREATE OPERATOR Define um novo operador, ou seja, permite que o usurio defina um smbolo para representar determinada operao.

Comandos SQL
CREATE OPERATOR nome (PROCEDURE = nome_func PROCEDURE [, LEFTARG = tipo1] [, RIGHTARG = tipo2] [, COMMUTATOR = com_op] [, NEGATOR = neg_op] [, RESTRICT = func_res] [, JOIN = func_join] [, HASHES [, MERGES [, SORT1 = esq_op_sort] HASHES] MERGES] [, SORT2 = dir_op_sort] [, LTCMP = op_menor_que] [, GTCMP = op_maior_que])

15

Parmetro
nome

Descrio

Nome do operador que ser definido. Pode conter os caracteres + - * / < > = ~ ! @ # % ^ & | ? $. nome_func A funo usada para implementar este operador. tipo1 O tipo do argumento da esquerda do operador (se existir). Esta opo deve ser omitida para um operador unrio que no requer o argumento da esquerda. tipo2 O tipo do argumento da direita do operador (se existir). Esta opo deve ser omitida para um operador unrio que no requer o argumento da direita. com_op O comutador deste operador. neg_op O negador deste operador. func_res A funo de restrio para este operador. func_join A funo de unio para este operador. HASHES Indica que este operador pode suportar uma unio (join) do tipo hash. MERGES Indica que este operador pode suportar uma unio (join) do tipo merge. esq_op_sort Se este operador pode suportar uma juno, este argumento o operador que classifica o tipo de dados esquerda. dir_op_sort Se este operador pode suportar uma juno, este argumento o operador que classifica o tipo de dados direita. op_menor_que Operador "menor que" que compara os tipos de dados de entrada do operador, caso ele suporte um merge join. op_maoir_que Operador "maior que" que compara os tipos de dados de entrada do operador, caso ele suporte um merge join.

CREATE OPERATOR CLASS Define um novo operador de classe, que permite definir como um determinado tipo de dado pode ser usado com um ndice.
DEFAULT] DEFAULT CREATE OPERATOR CLASS nome [DEFAULT FOR TYPE tipo_dado USING mtodo_ndice AS {OPERATOR nm_estratgia operador OPERATOR [(tipo_op, tipo_op)] [RECHECK RECHECK] RECHECK | FUNCTION nm_suporte nome_func (tipo_arg [,...]) | STORAGE tipo_armaz } [, ...]

Parmetro
nome tipo_dado mtodo_ndice nm_estratgia operador tipo_op RECHECK nm_suporte nome_func tipo_arg tipo_armaz

Descrio
Nome do operador de classe a ser criado. Tipo de dado para o qual o operador ser criado. Nome do mtodo de ndice a ser usado no operador. Nmero de estratgia do mtodo de ndice para um operador associado com o operador de classe. Nome de um operador associado com o operador de classe. Tipo de dado do operando. Indica se as linhas retornadas usando o ndice devem ser checadas novamente, para verificar se elas satisfazem a clusula de qualificao que envolve esse operador. Nmero do procedimento de suporte do mtodo de ndice, para uma funo associada com o operador de classe. Nome de uma funo que o procedimento de suporte do mtodo de ndice para o operador de classe. Tipo de dado dos parmetros da funo. Permite definir o tipo de dado a ser armazenado no ndice (que normalmente mesmo tipo de dado da coluna).

Вам также может понравиться