100% acharam este documento útil (1 voto)
324 visualizações371 páginas

PostgreSQL - Guia Do Programador

Enviado por

abraao rodrigues
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
100% acharam este documento útil (1 voto)
324 visualizações371 páginas

PostgreSQL - Guia Do Programador

Enviado por

abraao rodrigues
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Você está na página 1/ 371
PostgreSQL GUIA DO PROGRAMADOR Py a deta Recoy Q fry eu e L novatec André Milani Agradecimentos.. Sobre o autor: Prefacio Capitulo 1 = Bem-vindo ao PostgreSQL. 110 queé o PostgreSQL?... 1L1 Histéria do PostgreSQL. 112 Licenga de uso 1.2 Utilizagbes recomendadas 7 13 Compatibilidades. 28 14 Caractertsticas 28 141 SGBD relacional com suporte a ACID (transagdes) See 1A2 Replicagio nn 29 143 Cluster (alta disponibilidade) Ft eit Hd Maltiurea ts ascnion.autenencetanenansti cris 14S Seguranga SSLe criptografia, 30 146 SQL. 30 147 Incorporével em aplicagdes gratuitamente 30 148 Capacidade de armazenamento rican 15 Novidades na versio 82 eee Ste te rel 16 Comparacao com outros bancos de dados 2 17 Casos de uso if is aatae 18 O que esperar das proximas versies do PostgreSQL 34 19 Sites relacionados 34 Capitulo 2 Instalando o PostgreSQL. 21 Obtendo uma e6pia do PostgreSQL 22 Instalando PostgreSQL no Windows 2.2.1 Passo 1 — Iniciando o instalador-.. 222 Passo 2 —Lendo as notas de instalagso. 2.23 Passo 3 — Recursos a serem instalados...... 2.24 Passo 4— Criando um servigo do Windows. 2.25 Passo 5 — Cluster. 2.26 Passo 6 — Configuragées de instalagoaqui 227 Passo 7 — Instalando. 23 Criando manualmente o servigo do PostgreSQL no Windows. 231 Passo 1 — Obtendo 0 Windows Resource Kit Tools 232 Passo 2 — Instalando o Windows Resource Kit Tools. 233 Passo 3 — Criando o servigo manualmente. 234 Passo 4 Criando o arquivo -bat de inicializagao. 235 Passo 5 — Configurando o servigo no Windows.. 236 Passo 6 ~ Configurando 0 registro do Windows 24 Migrando a versio do PostgreSQL no Windows 25 Configuragdes inicizis... 251 Comandos de incializagaa e interrupio 252 Localizagio do arquivo de configuragio 26 Instalando o PostgreSQL no Fedora Core (Linus). 261 Passo 1—Acessando um terminal como root 26.2 Passo 2 ~ Instalando o PostgreSQL. 263 Passo 3 ~ Iniciando o servido do PostgreSQL auromaticamente 264 Passo 4 — Comandos de inicializagao e interrupsao, de configuragio 2.66 Passo 6 — Iniciando o cluster de dados do PostgreSQL... 27 Migrando a versio do PostgreSQL no Fedora Core (Linux) . 265 Passo 5 —Localizagao do arqui 28 Instalando o PostgreSQL no Debian (Linux)... 2.81 Passo 1— Acessando um terminal como root. 2.82 Passo 2~ Verifcando a versio disponivel para iastalaga0. 2.83 Passo 3 ~Iniciando o cluster de dados manualmente 284 Passo 4 ~ Comandos de inicializagao e interrupio 285 Passo 5 — Localizagio do arquivo de configuragao 29 Migrando a versa0 do PostgreSQL. no Debian (Linux) Gapitulo3 - Linguagem SAL... 310 queéSQL? 3.2 Tabelas utlizadas neste capitulo 3.21 Tabela TB_FUNCIONARIOS .. 3.22 Tabela TB_CARGOS.... 33 Instrugao SELECT. 331 Patiimetro WHERE 332 Parametro ORDER BY 333 Parimetro JOIN. 334 Pareto AS (alias). 34 Instrugio INSERT. 35 Instrugio UPDATE. 36 Instrugao DELETE, 37 Fungdes SQI-no PostgreSQL 371 Parametro DISTINCT (cegistos distntes) 372 Parimetto LIMIT (primeitos'n' registro). Parimetro COUNT (contador de registos) do Programador 2 B AB 44 44 45 46 a 48, 48 37 ‘Sumario 2 374 Parametro SUM (soma de campos) 70 375 Parametro AVG (média de valores) 7 a 376 Parimetro MAX/MIN (valotes maximo e minimo). a 377 Parimetro GROUP BY. iti 378 Parimetro HAVING eerste B Capitulo 4 « Gerenciando um banco de dados. 4llpsal jt 42 Gerenciando tablespaces. 4211 Criando um tablespace .. 422 Visualizando tablespaces 423 Alrerando um tablespace 424 Excluindo um tablespace 43 Gerenciando um banco de dados. 431 Criando um banco de dados. 432 Visualizando um banco de dados 433 Ativando um banco de dados .. 434 Alterando um banco de dados. 435 Excluindo um banco de dados 44 Gerenciando esquemas.....mnn 44411 Criando um esquema, 442 Visualizando um esquema... 443 Alterando um esquema.. 444 Excluindo um esquema, 45 Gerenciando tabelas. 451 Criando uma tabela 452 Visualizando uma tabela. 453 Alterando uma tabela 454 Excluindo uma tabela.. 455 Esvaziando uma tabela nnn 456 Bloqueando ama tabela(comando LOCK TABLE) 46 Gerenciando indices a 4611 Criando um indice. 462 Visualizando os indices de uma tabela 463 Renomeando um indice 464 Removendo um indice vn 47 Gerenciando visdes 421 Criando uma ¥IS90 wn 472 Visualizando uma visio 473 Alterando uma visto 474 Excluindo uma visio. 48 Gerenciando dominios... 481 Criando um dominio 4.82 Visualizando um dominio. PostgreSQL « Guia do Progrer 483 Alterando um dominio . 484 Excluindo um dominio, 49 Lox, Capitulo 5 » phpPgAdmin. SLO que é o phpPgAdmin 552 Instalando o phpPgAdmin, 521 Passo 1 Obtendo o phpPgAdmin. ss paper 98 52.2 Passo 2 — Alocando 05 arquiv0s.n. oe nen 9B 523 Passo 3 ~ Seguranca. 99 524 Passo 4 — Iniciando 08 $€r¥ig05 ner 99 525 Passo 5~ Arquivo de eonfiguragio 99 526 Passo 6 — Acessando o phpPgAdmin.... soe WO 53 Gerenciando regras (roles). : 104 531 Criando uma nova regta (ole). Eset ssn 104 532 Alterando uma regra (role) ne rn AE SIT 106 533 Removendo uma regra (Ole). : snes OT 54 Gerenciando bancos de dados. i asi 107 SAL Criando um novo banco de dados.... 108 54.2 Alterando o nome e proprietario de um banco de dados. 109 543 Removendo um banco de dados : 109 $544 Concedendo acesso a um banco de dads a 100 544.5 Revogando acesso a um banco de dados save vo 546 Exportando um banco de dads... lid 547 Importando um banco de dados. 116, 55 Gerenciando esquemas. nis : sue LT 55] Criando um esquema .nsunsmnneesnnnnenanne : 18. 55.2 Alterando um esquema eacnnennn 19 553 Removendo um esquema so 5354 Visualizando um esquema. oe snes 120 555 Concedendo acess0s em im ESUEMA wre _ 20 556 Revogando acessos em um esquema Eo pa 56 Gerenciando seqiiéneias «nm 55 pibeotettaaenae 561 Criando uma seqQéncia rn coi 22 562 Alterando uma seqiiéncia iE 4 563 Removendo uma seqQencia uc. i 124 564 Visualizando uma seqiiéncia - er 57 Gerenciando tabelas 25 571 Criando uma tabela... pe - 25 572 Adicionando uma coluna wae elie 18 573 Alterando uma colua sn prea s 18 574 Removendo uma coluna no S575 Removendo uma tabela ve 9 ‘576 Inserindo registros em uma tabela ee correspon ne " Sumario 577 Visualizando registos de uma tabela : eemnaaene lal 578 Alterando registros de uma tabela. Poeietiidiitiaci teed 579 Removendo registtos de uma tabela ..mnes 1B 5710 Concedendo direitos de acesso em uma tabela soe BB 57.11 Revogando direitos de acesso em uma tabela Be 5712 Exportando uma tabela S71 Importando uma tabela .. 58 Gerenciando visdes 581 Criando uma visio. 582 Alterando uma visto 5583 Removendo uma visto 384 Concedendo acesso de leitura em uma visao. 585 Revogando 0 acesso de leitura em uma visd0 cn 2 586 Visualizando uma visto wolf 587 Exportando uma visio.. 13 588 Importando uma visio 13 59 Gerenciando fungées. oi 4 591 Criando uma fungiio A 592 Alterando uma fungao 7 oe 46 593 Removendo uma fungio. 48 594 Concedendo direitos de acesso a funga0 8 595 Revogando direitos de acesso & fungio... snc 596 Invocando uma fungi... 597 Exportando uma fungi0 598 Importando uma fungao. 510 Gerenciando dominios. 5101 Criando um dominio $5102 Alterando um dominio 1s 5103 Removendo um dominio 5104 Visualizando um dominio. 511 Executando comandos SQL... S52 Varidveis do banco de dados. 51 Processos do banco de dados.. 514 Locks do banco de dados Capitula 6 « Segurancae direitos de acesso. 61 Controle de aceSS0 run n i 611 Gerenciando dominios (IPs) para acesso a0 PostgreSQL. fi 6112 Criando um ususrio e/ou regra (comando CREATE USER). 160 613 Alterando um usuério e/ou uma regra (comando ALTER USER). 162 614 Removendo um usurio e/ou regra (comand DROP USER)... 163 6115 Liberando direitos de acesso (comando GRANT) . {616 Revogando direitos de acesso (comando REVOKE) mm 167 7 ___ PostgreSQL» Guia do Program: 662 Seguranga no PostgreSQL... 1 621 suits sem senhas cadastradas se 1s? 6.22 Verificagio de acesso por dominio... perenirinase ae SOR 6.23 Verificagio de acesso com prazo de expitago ane 169 63 Seguranca nas aplicagbes... ces cos 631 Protegio de campos em formultios cee (63.2 Passagem de parimetros via URL nai snniel AL 6633 Validacio de campos em formuli0s nnn 1m (634 Canais SSI. e SSH suoulT 635 Armazenamento de expresses SQL. Elecite ve 636 Armazenamento de senhas em tabelas. - ray 64 Seguranga no servidor TEE seei eee 176 641 FieQall sone ee) 642 Conta administrativa (root) do sistema operacional 77 643 Acesso aos diretérios do PostgreSQL e aos servidores WED neem IT Capitulo 7 « Backups e restores. 179 71 Ferramentas de backup ¢ recuperago no PostgreSQL wnnnmnnnminnnsvnnerrH 7D 72 Politicas de backup. - 180 73 Pré-requisitos para realizar um backup. a 180 7A Pré-requisitos para realizar uma recuperagio 182, 75 Realizando backups utilizando o p_dump. omit 182, 751 Backup completo do servidot. 0 oe 183 752 Backup de um banco de dacdos especific0.nen nme ens 1 753 Backup de uma tabela espectfica.n ann nnn Eh 189 76 Realizando backups com arquivos de sistema ee 189 77 Realizando backups com o pgAdmin II. : 190 78 Realizando backups com o phpPgAdmin : 190 79 Realizando restores com 0 pe_restore (pg_dump) * 190 1791 Restore completo do servidor pa ese IL 792 Restore de um banco de dados especifico 193 793 Restore de uma tabela especifica 194 710 Realizando restores com arquivos de sistema.. ace 4 7AL Realizando restores com o pgAdmin UIL.ennrnen senne 19S 712 Realizando restores utilizando o phpPgAdmin. 95 Capitulo = Fungbes, transagées & triggers. 197 ‘81 Consideragies iniciais sonst somes 97 LI Caracteres delimitadores de string... so 197 812 Metodologia de criagao e manutengio de procedures snes 198 813 Relacionamentos entre fungdes. pads 199 82 Fungoes enois sone 199 82 Criando fumgBe anne : 200 822 Visualizando fungies. i eee 202 1823 Alerando fungoes oe 202 Sumario B 8.24 Excluindo fungdes are ‘am cece te 825 Executando uma fungio... os 204 83 Stored procedures. a 204 84 TransagB 8 serene oa 206 ‘84.1 Teansagdes em tempo real. a Bee let terial 842 Transagies em stored procedtes.. a 208 85 Triggers a 210 851 Tipos de tigger aun 852 Criando um trigger... a £853 Alterando um trigger... ee 854 Excluindo um trigger 2S 855 Habilitando um trigger 25 856 Desabilitando um trigger isn tn sennedl 86 CUISOTES nner Eee sn puesuniiimameaenesea 8 Capitulo 9 = Otimizacao (Tuning)... 91 Otimizagio de consultas, 0 qUe € enn ; 29 92 Indexagio de colunas 20 92.1 Consideragbes importantes sobre indexagd0 wu. event 92.2 Quando utilizar a indexagao ase oremanaecot 225 93 Técnicas de otimizagao. a Bie e226 931 Isolamento de indices . Sees 032 Ordem de uilizasio dos indices (JOINS)... be sD 933 Atualizagao de indices enn a ne 2B 934 Insergio de informagdes : vn 9 935 Comparagio de informagoes 29 936 Evitar 0 uso da clausula IN, 987 Evitar 0 uso de sub-selects 938 Escolha do tipo de dado 939 Estaisticas do servidor (Comando ANALYSE) . 9310 Desfragmentagao c limpeza (Comando VACUUM) .. 93:1 Andlise de expressdes SQL (EXPLAIN) 9312 Normalizacao do banco de dados 94 Configuragdes administrativas. 941 Numero maximo de conexoes simuldneas. 942 Buffers de meméria compartilhados, 943 Meméria de operages wenn 0144 Tearamento de informages desalocadas. 9445 Intervalo de tempo da gravacio dos dados em disco... 230 9446 Realizagio de COMMIT de miltiplas transacoes. so BB 947 Cache. cue sssnnnns 3B 948 Velocidade do disco rigid, 29 949 Neimero méximo de conexdes... . et) 95 Hardware, le oe nacror AD 951 CPU nee 1-240 4 PostgreSQL 952 Meméria sss 953 Discos 954 Rede. ‘Capitulo 10 « PHP. 101 Pré-requisios. 102 Exemplo a ser utilizado. 1021 Passo 1 ~ Criando o banco de dados ea tabela.. 10.22 Passo 2 ~ Criando o formulério HTML, 103 Inserindo registrs... 104 Visualizando os registros 105 Alterando registros 106 Excluindo registras 112 Exemploa set ulizado i 1121 Passo 1 Criando o banco de dados ea tabeln- 11.22 Passo 2 — Criando o formulério HTML 113 Inserindo registros 26: 114 Visualizando registro, 26 115 Alterando registtos, 116 Excluindo registros Capitulo 12 « Java/ss T21 Prié-requisitos, oe 12.2 Exemplo a ser utilizado 12.21 Passo —Criando o banco de dados ea tabela 1222 Passo 2 ~ Criando o formulirio HTML... 123 Inserindo registro... 124 Visualizando registro. 125 Alterando registros 126 Excluindo registros.. Capitulo 13 + NET. BBL Fré-requisios. 13.2 Exemplo a ser utilizado. 1921 Passo L~ Criando.o banco de dadose a bela. 132.2 Passo 2 — Criando 0 projeto e o formulirio no .NET. 123 Passo 3 ~ Definigdes e varveis globas.... 133 Inserindo registos. 134 Visualizando registtos 135 Alterando registros 136 Excluindo registros 137 Cédigo-fonte Forml.cs.. Sumario Apéndice A « Conceitos gerais. Al Dados c informagées. Al Dados ALL2 Informagées ‘AO que é um banco de dados?. ‘A.21 Bancos manuais e auromatizadas A.22 Bancos relacionais A3 Arquitetura de um banco de dads. A31 Tabelas. A32 Registros ... 433 Campos. A34 Chaves, 35 indices A36 Relacionamentos. A4O que é um SGBD? ‘AAI Gerenclamento de 202350. ‘AA2 Integridade de dados AA} Integridade de entidade e referencial. ‘AAA Concorréncia de acesso ‘AAS Linguagens de dados 46 Funcionalidades gerais ‘4.47 Banco de dados do tipo arquivo X SGBDs. AS Normalizagdo de banco de dados A351 Anomalias de inser¢do. A352 Anomalias de ateragio AS3 Anomalias de exclusio A.54 Primeira forma normal. ‘ASS Segunda forma normal. 56 Tercira forma normal A Gerenciamento de transagos. As Atomicidade: A62 Consisténcia... A63 Isolamento A64 Durabilidade . A Papéis em um sistema de banco de dados. ATL Administrador de dados. ‘A72 Administrador de banco de dados A73 Desenwolvedores e programadorts. ‘ATA Usuario final. ‘Apéndice B = Padrées de nomenclatura Apéndice C« Instalando o Apache... Cl Instalando o Apache no Windows. C11 Verificando a existéncia do Apache... 6 ula do Programador C12 Instalando o Apache lia i aa C13 Iniciando o Apache, a 3H Desligando 0 Apache S 345 C2 Instalando o Apache no Fedora Core Eee tee ta C21 Verifcando a exiscéncia do Apache. ce . 345 €22 Instalando 0 Apache snnnnnnnsernn Pseiciet ta stct 23 Iniciando 0 Apache a : a 346 C24 Desligando 0 Apache... es 346 C3 Instalando 0 Apache no Debian. 346 C31 Verificando a existéncia do Apache : 346 C32 Instalando o Apache. 5 = so 7 33 Iniciando o Apache a ; on 3 C34 Destigando 0 Apache.-.nem rite a C4 Localizagio do arquivo httpd.conf . 347 C5 Localizagi do diretéro de publicagio de contetdo 348 C6 Maiores informagBes «nner a 348 Apéndice D = Instalando o PH D1 Verificando a existéncia do PHP. a Diet lca D2 Instalando 0 PHP no Windows 10350 21 Configurando o IS, 351 22 Configurando o Apache 354 3 Instalando o PHP no Fedora Core. ee 355 Dé Instalando 0 PHP no Debian ene 355 DS Maiores informagdes : 356 Apéndice E« Protegendo diretérios em seu servidor HTTP, w35T7 EL Protegendo diretdrios no Apache : er 357 ELL Habilitando o recurso shtacte85 wns a se 3ST E12 Criando o arquivo .htaccess at 2 338 E13 Criando o arquivo de autenticagio (senhas) 1 359 E1A Testando a protesio.. eer i 360 EJS Maiores informag025...0 z ne 360 E2 Protegendo diretérios no Microsoft IIS. csr arene 360 E21 Criando uma conta de usuario. iene E22 Vinculando a conta eriada para acesso a0 ditet6ti0 ere 361 E23 Testando a protecio. am a son 362 E24 Maiores informagdes... 362 Apendice F » Instalando o Microsoft IS... Pi Verificando a existéncia do Microsoft IIS te 363 F2 Instalando 0 Microsoft IS ..0es a csraneunaeeaeel F3 Iniciando 0 Microsoft IS... — acces 2364 F4 Desligando o Microsoft IS... 7 0 365 F5 Maiores informag0es ns: a 365 Sumétio a -Apéndice G « Tipos de dados 367 Gi Informagies importantes... 367 G2 Numéricos, 367 G21 SMALLINT/ INT2 “snl 368 G22 INTEGER / INT /INT4, eaciraineen somes 368 G23 BIGINT / INTB Ba is 369 G24 REAL/ FLOATS... ait 369 G25 DOUBLE PRECISION / FLOATS a pea ED) G26 SERIAL/ SERIAL... a 370 G27 BIGSERIAL / SERIALS : st a7 G28 NUMERIC(p 5) / DESMAL BY a7 G3 Monetirios : ae 372 G31 MONEY 372 G4 Strings (caracteres ¢ textos). 372 Gel CHARACTER(n) / CHAR(a) Sele 3B G42 CHARACTER VARYING(n) / VARCHAR() 0. 38 GAB TEXT ain 3B G5 Datas ¢ horas... : nai a G51 INTERVAL(p) : a scanner ES G52 DATE. oe 376 G53 TIME / TIME without ie zone. rl ssn 8 G54 TIME(a) with time zone / TIMEZT(a) escieancce UP G55 TIMESTAMP [without time zone]... 377 G56 TIMESTAMP(n) with time zone / TIMESTAMPZT(n) 378 G6 Bindtios / Boleanos : ” on IB G61 BYTEA ' a omen nD G62 BIT(n) 379 G63 BIT VARYING(n) /VARBIT( . 379 G64 BOOLEAN / BOOL. 380 G7 Redes, : icc : 380 G71 CIDR. aaeiaey — . 380 GTZ INET ner a : 381 G73 MACADDR. 26 ramon BBL GB Geomtric08 enn Cs cerat 381 G82 PATH, : ee i 382 G82 LSEG a et eat G83 BOX... ee day parti 382 G84 POINT. mene 383 G85 POLYGON ern 383 G86 CIRCLE... 383 G87 LINE. seman BS Apéndice H » Ferramentas auxiliares 385 Indice remissiv0 1 389 capituLo 1 Bem-vindo ao PostgreSQL Caro leitor, seja bem-vindo a0 mundo do PostgreSQL, um excelente banco de da- dos com todas as caracteristicas e propriedades necesséirias para atendet aos mais exigentes padrdes de aplicagdes do mundo da informatica, © objetivo deste livro é capacitaro leitor para que possa utilizar ¢ administrar 0 servidor de banco de dados PostgreSQL da melhor forma possfvel, sabendo utili- zélo da forma correta de acordo com cada situagio, aumentando a seguranga das aplicagSes, otimizando recursos ¢ reduzindo custos com sua integragZo a outras aplicagoes. Neste capitulo inicial ser apresentada uma introducio aa PostgreSQL, passando porstta histéria, licenga de uso, caracteristicas, comparagdes com outros bancos de dados, casos de uso, até o que se espera desta ferramenta futuramente 1.10 que 60 PostgreSQL? (© PostgreSQL é um Sistema Gerenciador de Banco de Dados (SGBD) Relacional, utilizado para armazenar informagdes de solugdes de informstica em todas a de negécios existentes, bem como administrar 0 acesso a estas informaces. [As solugdes de informatica estio presentes em diversas éreas de negécios,desdea prépria tecnologia da informagao, bem como em sreas coma setores aéreo, bancétio, governamental, automobilistico ete: Toda e qualquer aplicagio que armazene dados para uso ou acesso posterior esté integrada com um banco de dados de alguma forma, seja armazenamento na meméria, arquivos de textos, ou armazenamento em cabelas, Esta é uma das propostas do PostgreSQL. 25 Apenas o atmazenamento de informagées nao torna o mecanismo utilizado em um Sistema Gerenciador de Banco de Dados (SGBD). Se todas as informagdes de uma solugio forem armazenadas em um tinico arquivo de texto, qualquer pessoa que tenha acesso de leitura a este arquivo poder consulté-lo por inteiro, endo apenas informagio que desejar, violando, assim, as leis de sigilo envolvidas nas aplicagoes O mesmo ocorte se. pessoa tiver acesso de escrita no arquivo de texto em questo, pois poderd alterar qualquer informagio, mesmo a que nao lhe pertence. Um SGBD deve controlar além do armazenamento dos dados, assim como seu acesso— quer: pode ler cada dado e quem pode alterar cada informagio. Utilizando 0s conceitos mais basicos, o PostgreSQL € uma ferramenta encarre- gada de armazenar dados e gerenciar o acesso de cada informagao de acordo com regras previamente definidas. 1.1.1 Historia do PostgreSQL ‘A ferramenta conhecida atualmente como PostgreSQL teve origem em um projeto chamado de POSTGRES na Universidade Berkeley, na California (EUA), em 1986 ‘Uma equipe orientada pelo professor Michael Stonebraker foi designada para criar ‘o modelo eas tegras de um novo sistema de armazenamento de dados,com 0 apoio de diversos 6rgios, entre eles o Army Research Office (ARO) ¢ 0 National Science Foundation (NSF). A primeira versio de demonstracao do projeto ficou pronta em 1987, ¢ logo em seguida foi apresentada em diversos meios. Em 1989, a primeira versio estavel foi langada, com sucessivos langamentos anuais de novas verses com diversas corre- g5es de bugs. Em meados de 1991, seu cédigo foi adquirido pela empresa Iustra Information Technologies, a qual se fundiu com a Informix, hoje pertencente & TBM, e utilizado como gerenciador de banco de dados em um importante projet cientifico. Vale a pena comentar que a empresa Informix citada era de propriedade do professor Michael Stonebraker, orientador do projeto POSTGRES, equea mesma foi comprada por US$ 1 bilhao pela IBM em 2001. A primeira grande mudanga no projeto POSTGRES ocorreu em 1994, Dev crescente popularidade que a ferramenta estava adquirindo, o projeto foi en: dando origem ao programa Postgres95, que trouxe uma grande vantagem em sua primeira versio: a incorporagio da linguagem SQL, pelos desenvolvedores An Yu e Jolly Chen, substituindo a linguagem PostQUEL anteriormente utilized época também 0 programa foi totalmente compatibilizado com o padr’o ANSI C tornando-o portivel para mais de uma plataforma, entre outras diversas melhorias tornando-o um feone entre os bancos de dados. Capitulo 1 = Bem-vindo ao PostareSQL 2 No ano de 1996, novas melhorias surgiram, ¢ o nome Postgres95 ja estava desa- tualizade, Navamente a denominacao da ferramenta foi mudada, desta vez para 0 nome como a conhecemos hoje: PostgreSQL. Atualmente, oSGBD encontra-se em sua versdo 8,2 estével, contendo todas as principais caracteristicas que um SGBD pode disponibilizar. 12 Licenca de uso ‘Ao contrario da maioria dos softwares livres existentes no mercado, 0 PostgreSQL nao utiliza a licenga GNU para regularizar a sua utilizaco, mas, sim,a licenga BSD (Berkeley Software Distribution). Originada juntamente com o sistema operacional FreeBSD, a licenca BSD obteve reconhecimento e virios outros softwares atualmente também a utilizam gracas & suta liberalidade perante outras licengas de software. Como ¢ possfvel notar, tanto 0 PostgreSQL quanto a licenga BSD tiveram origem no mesmo local, a Universidade de Berkeley, na Califinia. Este € o primeiro fator que faz com que o PostgreSQL utilize esta licenga, pois os interesses iniciais da ferramenta e da licenga tinham algo em comum, Mesmo com o cédigo adquirido ‘mais tarde, sua licenga BSD foi mantida e € utilizada até hoje, sendo atualizada e revisada periodicamente A licenga BSD possui intimeras vantagens sobre a licenga GNU, ou melhor, ins- imeras estrigoes a menos do que as impostas pela outra licenga. Isto torna 0 cédigo ‘muito mais acessivel para diversos tipos de utilizagdes, incluindo a livee utilizagao da ferramenta até mesmo para fins comerciais. Por varias vezes jé foi indagado 0 porqué de a licenga BSD nao ser migrada para GNU no caso do PostgreSQL, c a resposta mais ouvida foi a que a empresa mante- nedora do PostgreSQL gosta e prefere manter as coisas como esta, 1.2 Utilizages recomendadas 0 PostgreSQL encontra-se em uma versio perfeitamente estavel e confidvel, com 03 principais recursos existentes nos bancos de dados pagos disponiveis no mercado. Suas capacidades so para suprir as necessidades de pequenas, médias e grandes aplicagoes. © PostgreSQL nao tem limite de tamanho para seus bancos de dados, sendo a «inica limitacao para tal critério o hardware disponivel pelo computador em que 0 PostgreSQL est armazenando suas informagdes. Sua limitagao dé-se em nivel de __ PostgreSQL Guia do Programador tabela, com um limite maximo de 32TB por tabela, Além do mais, € possivel ter registros (linhas) com atéL6TB, campos com até 1GB, tabelas com até 1.600 campos € indices ilimitados para aceleragao da busca dos resultados. Acstabilidade do PostgreSQL também é um de seus recursos mais interessantes, pois foi projetado para executar no método 24/7 (24 horas por dia, sete dias na se- mana). Em outras palavras, executar indefinidamente. Assim, este banco de dados tem sido bastante utilizado também na internet, seja em sites, portais, lojas virtuais on solugdes em informética 1.3 Compatibilidades A seguir, algumas informagdes gerais sobre a compatibilidade do PostgreSQLno que se diz respeito a sistemas operacionais que o suportam, linguagens de programagio, plataformas de desenvolvimento e versio de SQL utilizada Para os programadores ¢ desenvolvedores hd bibliotecas e drivers de conextio para o PostgreSQL para as principais plataformas e linguagens utilizadas, poden. do-se citar as seguintes: C/C++, Java/JSP, PHP, ASR, .NET, Perl, Python, Ruby Tel driver ODBC, entre outros. Sobre ambientes de instalacdo, o PostgreSQL é uma ferramenta extremamente portavel, disponibilizando instalagdes para diversos sistemas operacionais, como, por exemplo. + Linux (Fedora Core, Debian, SuSE, RedHat), + Unix (BSD, Solaris, HP-UX, AIX). + Max OS X Server. = Windows (2000, 2003, XP). Emse tratando de compatibilidade coma linguagem SQL, 0 PostgreSQL ja conta com varios recursos implementados da versio ANSI SQL 2008, sendo o primeiro banco de dados a implementar algumas das mais recentes definigdes na historia do SQL como Gin e DTrace. 1.4 Caracteristicas A seguir, algumas das principais caracterfsticas ¢ recursos existentes no PostgreSQL. Capitulo « Bem-vindo a0 PostgreSQL 2» 1.4.1 SGBD relacional com suporte a ACID (transagdes) © PostgreSQL é um SGBD relacional completo, com suporte a operagdes ACID (Atomicidade, Consisténcia, Isolamento ¢ Durabilidade). Cada uma destas pro- priedades garante uma parte da qualidade dos servigos disponibilizados pelos bancos de dados. No que se diz respeito & integridade referencial, o PostgreSQL possui e valida este tipo de operacio em seus relacionamentos armazenados em tabelas. Tanto 05 conceitos das propriedades ACID quanto de Integridade Referencial estio dispo- niveis para leitura no Apéndice A. 1.4.2 Replicacao [Assim como os demais bancos de dados, 0 PostgreSQL oferece os recursos neces- ssirios para realizar a replicagao entre servidores. A vantagem sobre outros bancos de dados é que sua licenga abre este recurso para uso gratuito até para aplicagoes comerciais, diferentemente de outras licengas de software livre wtilizadas por outros bancos de dados, 1.4.3 Cluster (alta disponibilidade) Visando expandir sua capacidade para mais de um servidor (hardware) decorrente das limitagtes de processamento, é possivel configurar o PostgreSQL para que atue ‘como um cluster de informagées, Autilizagdo de cluster envolve 0 uso de dois ou mais computadores, interliga- dos e sincronizados entre si, para que ambos possam atender as demandas vindas dos usudrios da aplicagZo ou banco de dados em questo, na teoria dobrando a capacidade de utilizagao. 1.4.4 Multithreads 0 PostgreSQL gerencia varias conexdes com 0 banco de dados de uma tinica vez, por meio do recurso de multithread oferecido pelos sistemas operacionais. Desta forma, mais de uma pessoa pode acessar a mesma informagao sem ocasionar atrasos ou filas de acesso. ‘Algumas operagdes forcam 0 uso de filas de acesso aos dados, principalmente aquelas em que mais de um uswério esté tentando realizar um acesso de gravacto nos mesmos dados, O PostgreSQL administra estas situagdes para que os dados no sejam corrompidos. 30 __ PostgreSQL = Guia do Programador 1.4.5 Seguranga SSL e criptografia (© suporte nativo a SSL jé est embutido no PostgreSQL, possibilitando criar cone- es seguras a partir destes canais, tanto para tralegar informagoes de login quanto aquelas consideradas sigilosas. Ainda, 0 PostgreSQL fornece extensibilidade para utilizagao de algoritmos de ctiptografia como 0 SHA] € 0 MDS (jé nativo em suas tiltimas versoes). 1.4.6 SQL Bascado nos padrées estabelecidos pelo ANSI SQL, o PostgreSQL adota este critério nna implementago de suas funcionalidades, ‘As mais recentes melhorias do PostgreSQL basearam-se na versio ANSI SQL. 2003, e novos recursos continuam senda desenvolvidos, sendo grande parte de suas funcionalidades em conformidade com as verses 92 ¢ 99 do ANSI SQL. Vale a pena destacar a impossibilidade de algum banco de dados conseguir implementar imediatamente uma nova versao ANSI SQL tao logo a mesma seja langada. Uma outra importante observagao é que o PostgreSQL foi pioneiro na implantagdo de alguns recursos (Gin e DTrace), na frente de todos os demais bancos de dados. 1.4.7 Incorporavel em aplicacées gratuitamente Por utilizar a licenga de uso BSD, o PostgreSQL pode livremente ser incorporado pot aplicagéies pessoais e/ou comerciais, sem nenhum custo para o desenvolvedor ou fornecedor do software em questa. ‘Muitas micro e pequenas empresas, assim como algumas médias e grandes orge- nizagdes, tém migrado suas plataformas de desenvolvimento para o software livre, até mesmo as corporagdes do ramo de tecnologia da informagio, Assim, € possivel conciliar 0 alto poder de processamento do PostgreSQL e seu custo inexistente de licengas para desenvolver softwares aos seus clientes 1.4.8 Capacidade de armazenamento (© PostgreSQL suporta de forma eficiente ¢ confidvel grandes tamanhos de informa- goes em suas tabelas, algumas, inclusive, maiores do que a capacidade de tamanho de arquivo fornecida por certos sistemas operacionais. Cpl 1 «Bervindo ao PostgrQL. 3 Um breve resumo de sua capacidade de armazenamento pode ser conferido a seguir: = Tamanho maximo de um banco de dados ~ ilimitado. = Tamanho maximo de uma tabela — 32 TB. + Tamanho maximo de uma linha ~16 TB. + Tamanho maximo de um campo~1GB. + Tamanho maximo de linhas por tabela ~ ilimitado. = Tamanho maximo de colunas por tabela ~ de 250 a 1600, dependendo dos tipos de dados utilizados. + Tamanho maximo de indices por tabela — ilimitado. 1.5 Novidades na versao 8.2 ‘Acada nova versio, PostgreSQL conta com a implementagao de novas melhorias ¢ funcionalidades, melhorando ainda mais a sua qualidade. Dentre as principais, novidades langadas na versio 82, destacamos: + Maior controle na criagio e exclusio de objetos + Sintaxe SQL com multivalores para o parémetro VALUE, otimizando as ope- rages. + Novas otimizagdes para vérias operagdes SQL. + Melhoramentos nos vetores (arrays) de dados, incluindo o valor nut? para estes, + Aumento da performance do algoritmo de ordenagao de dados. + Criagio de indices sem o bloqueio de operagdes + Novas funcionalidades de monitoramento, log e tuning de SQL. + Maior flexibilidade na definigao de heranga no relacionamento entre tabelas. © comando cory 10 pode ser realizado a partir de um comando SELECT. 32 PostgreSQL. » Guia do Pragramador 1.6 Comparacao com outros bancos de dados ‘A.comparacio entre as diferentes alternativas de bancos de dados éimportante para saber quais recursos iro oferecer melhores resultados para cada projeto, ou para a empresa, no caso de corporagées que optam por um tinico servidor de banco de dados, de forma a escolher a que melhor atenda & maioria dos projetos - ou os mais importantes. Nao faz parte do escopo deste livro detalhar as etapas da escolha de um banco de dados, pois assume-se que, para oleitor, esta decisio jé tenha sido tomada pelo PostgreSQL Contudo, cabe a este tépico indicar as principais vantagens que © PostgreSQI. pode oferecer, bem como suas limitagbes e sugestdes de solugbes para as mesmas. Os primeiros bancos a serem comparados com o PostgreSQL sto as outras al- ternativas em sofeware livre para bancos de dados. Denire as opgdes mais populares e utilizadas, podemos citar o MySQL o FirebirdSQL. Trata-se de trés opgdes que podem ser excelentes para o seu projeto. Existe uma preferéncia para PostgreSQL € MySQL quando ha uma necessidade maior de estabilidade (anos de mercado), pois ambos esto entre os mais utilizados, sendo ainda que estes dois bancos de dados oferecem mais funcionalidades decorrente do seu tempo de existéncia ¢ desenvolvimento, Para algumas operagdes, o MySQL pode apresentar um resultado melhor. Na maioria das operagdes para o usuério final de uma aplicagio, esta diferenga de tempo é praticamente imperceptivel, Nas operagdes de carregamento do banco ou processamento em lote de informagGes, quando se trata de milhdes de registros, que esta diferenca pode se tornar visivel. Neste caso, o melhor seria comparat as operagées em questo utilizando os dois bancos de dados para avaliar os resulta- dos, ressaltando que tal diferenga 6 apareceré para operagdes que envolvam uma enorme quantidade de informagoes. Outro fator importante na comparago entre os bancos de dados livres so suas licengas. Neste ponto é que 0 PostgreSQL se destaca, pois ele apresenta a licenga mais flexivel, permitindo que o mesmo seja integrado em aplicagdes comerciais sem restrigdo, sem a necessidade de manter 0 cédigo de sua aplicagdo aberto ou outros pré-requisitos, Apesar de muitas pessoas comentaram que 0 MySQL também é assim, quem conhece ambas as licengas sabe que © MySQL nao pode ser utilizado em aplicagdes comerciais sem que algumas condigbes sejam atendidas. Capitulo 1 » Bem-vindo ao PostgreSQL 33 Na comparagio do PostgreSQL com outros bancos de dados pagos, podemos citar o Microsoft SQL-Server e o Oracle. Ja ultrapassando a questo do prego, que no existe para o PostgreSQL, abordaremos a das funcionalidades. Os trés bancos de dados possuem os principais recursos como replicagao, uso de transagées ACID, seguranga ¢ ferramentas para administragio. Existe uma cendéncia de uso para 0 PostgreSQLe Microsoft SQL-Server em termos de praticidade de uso (a porcentagem demercado que utiliza Oracle nos servidores de hospedagem mais utilizadosno Brasil 6 praticamente nula, porém sua popularidade aumenta no mercado privado de TI). Existe ainda um preconceito contra o uso de software livre em algumas empresas, principalmente pelo fato de que os programas pagos possuem contratos com estas empresas, podendo a mesma culpar o fornecedor e ser ressarcida de alguma forma, caso algum problema vena a ocorrer na ferramenta em si. Ao mesmo tempo, as ferramentas livres esto to estéveis quanto as alternativas pagas, até pelo fato de seu cédigo ser revisado por dezenas de colaboradores ao redor do mundo, e nao restrito a uma equipe de poucos funcionérios. Por este motivo, o software livre esti cada vez mais tomando o espaco das ferramentas pagas. Vale a pena lembrar que © papel do DBA (Administrador de Banco de Dados) € fundamental para a boa execugio de qualquer servidor de banca de dados. ‘importante: Ao se compararem dois ou mais bancos de dados,€ importante levar em conta os aspectos técnicas que cada aplicagao ou servidor necessita, Nao slo todos ‘9s casos em que as aplicagdes uilizario tabelas de tamanho superior a centenas de terabytes, ou que usilizardo milhées de colunas em uma tinica tabela, Portanto, € necessitio avaliar todas as vantagens e desvantagens das alternativas existentes 10 mercado antes de decidir qual a melhor para o seu caso. 1.7 Casos de uso entre 0s principais casos de uso divulgados pelo site do PostgreSQL, pode-se citar oda BASF (Divisio de Produtos para Agricultura na América do Norte).Aempresa ‘em questo atinge vendas no valor de USS 29 bilhdes anuais, com aproximadamente 92000 empregaclos ao redor do mundo. © objetivo da BASF era vender seus produtos na internet, transformando-se na lider em seu segmento. Para isto, criou um projeto de vendas on-line que utiliza © PostgreSQL. como banco de dados. © projero tem a capacidade de atender até 25000 usuarios simuleineos, com tempo de resposta para os usuérios finais entre 3.25 segundos (levando-se em conta ainda outras tecnologias que utilizam tempo como o servidor web) 34 Neste sentido, foi crinda toda aestrutura com hardwarese softwares configurados visando a otimizagao de recursos, e 0 PostgreSQL escolhido pela BASF em decor- réncia sua licenga livre, em sua tecnologia superior, manutengio e suporte. Dentre 5 requisitos técnicos do projeto, estava o uso de banco de dados relacional com suportea transagdes ACID, sstored procedures, triggers (gatilhos) e replicaco, entre outros. © projeto foi concluido com todas as necessidades atendidas. Vale a pena citar que entre as demais opgdes estudadas pela BASF encontravam-se Microsoft SQL-Server, Oracle, MySQL, Firebird, IBM Universal Database e SAP DB Existem varios casos de uso descritos na pagina do PostgreSQL. Para conhecer outros grandes ususrios desta ferramenta, acesse: + Estudos de caso hetp://aam. postgresql .org/about casestudies + Usuarios: hetp://awn.postoresal .org/about/users 1,8 0 que esperar das proximas versdes do PostgreSQL Basicamente, os principais objetivos das proximas versdes do PostgreSQL estao em cada vez estar mais padronizado de acordo com as mais recentes regras divulgadas pelo ANSI SQL, implementando novas funcionalidades, além de melhorar a per- formance a cada nova versio, visando aproveitar ao maximo 0 que cada hardware ce sistema operacional podem oferecer. 1.9 Sites relacionados «Site ofidal http://www. postgresql org «Site de ajuda (foruns, lista de discussao, canais IRQ) ieap://amn. postgresq]org/support = Site do PostgreSQL Brasil (Comunidade Brasileira) hetp://im.postgresq].org.br + Site com informaces da Licenga de uso BSD fattp://nm-opensource.org/Ticenses/bsd-Ticense. php | capftuto 2 | Instalando o _ PostgreSQL © Capitulo 2 aborda todos os passos necessérios para ter 0 PostgreSQL. correta- mente instalado e funcionando em seu computador. Varios sistemas operacionais serio tratados (Microsoft Windows e Linux Fedora Core / Debian), sendo que os conhecimentos aqui apresentados ainda podem ser utilizados para outros sistemas operacionais ou distribuigdes que nao forem citados. ‘Alm dos passos necessérios para a instalagao do PostgreSQL, também serao abordadas todas as etapas necessérias para realizar o procedimento de migrago de versio, no caso de seu computador jé possuir uma verso mais antiga do PostgreSQL do que a utilizada neste livro. 2.1 Obtendo uma copia do PostgreSQL O primeiro passo necessério para instalar o PostgreSQL ¢ obtengaa de uma eépia do instalador da ferramenta. O procedimento que este livro utilizar para instalar co banco de dados requer 0 download do arquivo de instalagao do PostgreSQL so- ‘mente para o sistema operacional Microsoft Windows (independente da versio), Para as distribuigdes Linux aqui apresentadas nao & necessério realizar 0 download do arquivo anteriorente citado, pois estas distribuigdes tém um procedimento de instalaglo que jé realiza o download das arquivos necessérios automaticamente. Para realizar o download do arquivo de instalagio do PostgreSQL, acesse 0 seu site oficial (wew-postgresql org). Em seguida, localize 0 boto Domisaés € acesse-o, Este link levard a conexao para um FTP, onde deverd ser procurado o diretério win32 e,em seguida, 0 arquivo postoresal-x.zip, sendo x a versio mais atual do PostgreSQL 35 PostgreSQL. = Guia do Pr Importante: Poderso existir rés versbes deste arquivo. A primeira termina com no-installer.zip, que so os arquivos compactados apenas. A segunda termina com =a.2p,0 qual representa uma versio do arquivo de instalagio na lingua japonesa por ‘kimo a versfo sem estes atriburos no final, apenas com o .zip, que deve ser uilizada para os préximos passos da instlagio. Caso esteja realizando o procedimento de migracao, procure o tépico respectivoa seguir, sendo o tépico 24 para a plataforma Windows, t6pico 27 para adistribuigdo Linux Fedora Core, ¢ t6pico 29 para a distribuigao Linux Debian, A versio do PostgreSQL utilizada por este livro €a 824. 2.2 Instalando o PostgreSQL no Windows ‘Apés realizar o download dos arquivos de instalagio do PostgreSQL, € necessério descompactar os arquivos em alguma pasta temporaria. Para tanto, utilize o descom- pactador de sua preferéncia, Na pasta tempordria deverao existir quatro arquivos no final deste processo. Se durante o processo de instalagio do PostgreSQL no Microsoft Windows surgirem duividas referentes ao sistema operacional em questo, utilize os sites a seguir para esclarecé-las 1 Site oficial do Microsoft Windows eto: //am microsoft. con/vindows + Site de suporte a0 usuério Microsoft Windows hetp://am.mcrosofe. con/windows /support Site de FAQ sobre a instalacao do PostgreSQL no Microsoft Windows hnetp://aginstalTer.projects.postgresq].org/faq/FA.windows. html 2.2.1 Passo 1 — Iniciando o instalador Apés descompactar os arquivos de instalacao, o primeiro passo € executar 0 arquivo principal da instalacdo, No diretério temporario onde os arquivos descompactados estdo, execute 0 arquivo pestgresa]-8.2.nsi Como é possivel observar, a extensio do arquivo € si, 0 que representa ser um arquivo jé com um instalador para Windows embutido. Tal formato de instalagio é muito prético, pois, além de alocar os arquivos nos lugares corretos, ja tealiza outras configuragies de sistema operacional. Capitulo 2» Instelando o PostareSQL 7 A primeira tela que iri surgir dé boas-vindas 20 usudrio e solicita que seja sele- cionado 0 idioma utilizado no decorrer do processo de instalagao, como mostra a Figura 2.1. £ recomendado que seja mantida a lingua inglesa, padrio este que serd usado por este livro. Figura 2.1 ~ Tela de boas-vindas, Apés selecionar o idioma, pressione o botdo NBT. Na préxima tela info aparecer informages de texto esclarecendo que os demais programas Windows que estiverem em execugio devem ter seus trabalhos salvos fechados, como medida de seguranga, Realize as instrugées solicitadas e em seguida pressione novamente o botio HE. 2.2.2 Passo 2— Lendo as notas de instalacao A terceira tela exibe informagées da instalagao do PostgreSQL no ambiente Microsoft ‘Windows, Apés ler as informagées, pressione o boto NAT para continuar a instalagia. 2.2.3 Passo 3 — Recursos a serem instalados Agquarta tela do processo de instalago do PostgreSQL exibe todos os recursos que podem ser habiliradas durante este processo, como mostra a Figura 22. Esta tela é necesséria, pois, além do servidor de bancos de dados, outras ferramentas principais, e/ou auxiliares podem ser adicionadas, 38 PostgreSQL » Gula do Pragramador Inctallation options al rauesat TA] Pages att miners! Sad Sahn sore | ste ee ard ofers Natealanguoge ut = Panis Spahl Esters Pilar 4 Sent a Tica reais ME ono 2B sJTesuedacs ca, itnae Sot nttutce Pl faecol thoaileguosieace. pod |e] SoM on your aad ive, | Figura 2.2 ~ Tela de recursos o serem insialados, Neste passo, é recomendado nao remover nenhum recurso j habilitado para ser instalado, pois todos poderio ser necessétios posteriormente. Caso deseje © tenha algum conhecimento prévio dos demais recursos nio-habilitados para serem instalados, marque os que julgar necessérios. 2.2.4 Passo 4 Criando um servico do Windows A quinta tela de instalagio oferece a possibilidade de instalar o PostgreSQL como um servigo do Windows, conforme mostra a Figura 23. Neste caso, a execugao do. PostgreSQL pode iniciar automaticamente junto com o sistema operacional, além de rodar em background, ou seja, sem janelas em sua barra de tarefas Alguns parimetros podem ser configurados nesta tela. O primeito (Service mane) diz respeito a0 nome do servigo que serd criado. O Account nane é 0 nome da conta de uusudrio que seré utilizada para iniciar o servigo do PostgreSQL. Caso a conta ainda nfo exista, basta digitar 0 nome de uma conta nova que o instalador ira instalar automaticamente. Para a criagao da conta, ou para informar qual serd utilizada, € necessério também comunicar 0 dominio da conta (Aecount éonain),além de digitar duas vezes a senha para autenticacio destas informagdes, ou criagao da senha da conta nova, se for 0 caso Service configuration Biinntal as 2 xerice Sewcerame [PornSlDatbarsSewr@2 Accoutmme fois SSCS eso és cc Coa “he ion acm th acu bat te PonaeSOL dab at ee ‘sem ceedon scsi Healer sands fj Era an wsnet ha a [pata or vothe paren tohave ore alogeranted ee | Figura 2.3 — Tela de criacdo de servico do Windows. Por questdes de seguranea, o PostgreSQL nao inicializa a partir de uma conta de usudrio administrativo do sistema operacional. E necessario, entio, que 0 ususrio {que esteja sendo criado, ou ja existente, nfo faca parte do grupo de administraga0 no dominio e/ou computador em questo. Execomendado instalar o PostgreSQLcomo um servigo do Windows. Caso con- trério, poderd ser criado um servigo para o PostgreSQL. futuramente, seguindo os passos descritos no tépico 23. Apés preencher as informag&es desta tela, pressione © boto WE para prosseguir. 2.2.5 Passo 5 - Cluster ‘A quinta tela solicita informagoes para a criagdo do diretério de dados do PostgreSQI_e para configurar alguns parametras iniciais, como mostra @ Figura 24. E recomendado criar este recurso, tendo em vista que o mesmo é necessario para ‘0 armazenamento das informagbes dos bancos de dados e, sem sua criagio, nto sera possivel inicializar o PostgreSQL, a menos que outro diret6rio de dados seja informado posteriormente. Ao habilitar a criagdo do recurso do diretério de dados no computador local, algumas informages sfo solicitadas ¢ devem ser preenchidas com atengio. A primeira delas ¢ a Pat unter, que representa a porta em que o servidor PostgreSQL. estard gerenciando as conexSes aos bancos de dados. 40 PostgreSQL » Guia do Programador Initioe database cluster Ita dts cane Potmmbe [5G trees )Accatetrecton na ane rtp cabot Tele et sat suc soe, epawndsiass OT Sete sare cr he ‘ies Sa Figura 2.4 — Configuragées inicais. Em seguida,a op¢do Addresses indica se o servidor PostgreSQL aceitard conexdes de origens em todos os enderecos de IPs, ou somente em enderegos locais (localhost). Esta é uma configuragio de seguranga propria do PostgreSQL que pode set alterada posteriormente ‘As proximas duas informacées Locale € Encoding dizem respeito & maneira como. 0s dados serdo tratados ¢ armazenados nos bancos de dados por opgio padrio. A primeira informagio é sobre aspectos culturais dos dados, como, por exemplo, for- ‘matagio numérica, moeda e outros. A op¢ao inicial disponibilizada pelo PostgreSQL €a utilizagio do padrio ISO C, mas esta informacao pode ser alterada para a da ssua regio. [40 Encoding €a forma e o tamanko que os caracteres sero tratados pelo servidor. E posstvel utilizar a opcao SoL_ASCII, fornecida inicialmente, ou a opgi0 UTE-8 com amplo suporte a caracteres especiais, ou ainda a LATIM para o idioma portugués do Brasil. Por tiltime, sio solicitados o nome do superusuario (Superuser nane)e sta senha (Password) para criagdo da conta de ususrio com direitos totais ao servidor PostgreSQL. Por meio deste usuario os primeitos passos poderao ser dados no banco de dados, como, por exemplo, conceder acesso a outros ususirios e criar bancos de dados. 2.2.6 Passo 6 ~ Configuracées de instalacaoaqui Apés configurar a inicializagao do cluster de dados do PostgreSQL surgiré na tela a opgao de habilitar algumas linguagens para tratamento de procedures. Recomenda- Capitulo 2 «Instalando o PostgreSQL a“ se manteras opgdes marcadas por padro nesta etapa, a menos que o usurio tena comhecimentos necessérios para alterar ¢ incluir novas informagGes neste passo. Ainda, surgiré mais uma tela solicitando os médulos extras que deverdo ser instalados com 0 PostgreSQL. Caso 0 usudrio nao esteja familiarizado com ne- nhum destes médulos, recomenda-se manter as opgdes que estiverem marcadas por padrio. 2.2.7 Passo 7 - Instalando [A proxima tela da instalago exibe um aviso de que o processo est pronto para instalar os recursos que foram selecionados, de acordo com as configuragies reali- zadas nas telas anteriores, Para prosseguir, pressione o bot NEM. 0 proceso de instalagio tera inicio e serd acompanhado de uma barra de pro- sgresso, além de informagdes dos arquivos que esto sendo instalados a cada mo- mento, No caso de haver algum erro durante este processo é recomendado anotar a rmensagem de erro, ¢ se possivel, uma estimativa de quantos porcentos da instalacéo jd foi realizado, para buscar ajuda em foruns ou sites oficiais, No final desta fase iré parecer uma nova tela informando que o PostgreSQL foi instalado com sucesso em seu ambiente, bastando pressionar o botio FNS para encerrar a instalagao. Ao encerrar 0 procedimento de instalagao do PostgreSQL em seu computador, devers ser realizado um teste para verse o servidor de bancos de dado esti rodando normalmente. Em alguns computadores com Windows, em sua maioria na verséo XP, a0 tentar iniciar o servigo do PostgreSQL no painel de controle, um erro exibido na tela. A mensagem em si ndo é bem a de um erro, mas sim, de um aviso do sistema, comentando de que logo que foi iniciada, a tarefa do PostgreSQL. foi interrompida pois no estava utilizando uma carga minima de CPU. Para verificar se o PostgreSQL. esté funcionando em seu computador, acesse 0 ppainel de controle (Sart > Cnt Pare!) e, em seguida, a opcio Adinisratve Teo ¢ por Gilkimo no {cone Series. Esta tela itd exibir todos os servigos cadastrados em seu Windows, Localize a linha referente ao servigo criado pelo PostgreSQL, cujo provével nome sera PostgreSQL Database Server &2 caso nao tena sido alterado durante o pro- cesso de instalagéo. Selecione o servigo em questo ¢ tente inicid-lo ou reinicié-lo, caso jé esteja iniciado, como mostra a Figura 25. 2 do Programador Sitar Geoerenteca oe Figura 2.5 — Iniciondo o servigo do PostareSl. Seo servigo iniciar normalmente, tente sair ¢ entrar novamente na tela de Servi- gos do Windows, para verificar se o servigo nfo interrompeu sozinho. Se uma tela similar ada Figura 26 aparecer, é certeza de haver problemas com a inicializaga0 do servigo do PostgreSQL. o) EOE ee ceca ae) Figura 2.6 ~ Problemas na iniciolizagéo do servico do PostareSQL. Neste caso seré necessario criar manualmente o servico para inicializagio do PostgreSQL, procedimento simples e rapido de ser feito, o qual seré descrito no tépico a seguir. 2.3 Criando manualmente o servico do PostgreSQL no Windows E possivel criar manualmente um servigo que execute o PostgreSQL em seu compu- tador. Para isso, um arquivo se faz necessdrio: 0 Windows Resource Kit Tools. Este conjunto de ferramentas para Windows possui recursos de criagao de servigos, por {sco o mesmo se faz necessério. Capitulo 2 « Instalando o PostgreSQL 3 2.3.1 Passo 1 — Obtendo o Windows Resource Kit Tools arquivo instalador desta ferramenta encontra-se no site oficial da Microsoft, e pode ser acessado diretamente pelo link a seguir: nttp://imm, microsoft. con/downToads/details.aspx?Fanilyid-90467A69-S7FF-4AET-96EE- 818C470CFFDSaispTaylang-en Se houver dificuldades com a digitago da URLanteriormente citada, € possivel encontrara pagina deste recurso por meio do Google, acessando o seu site (wm. google. cen.br) ¢ solicitando uma busca sobre as palavras chaves “Windows Resource Kit Tools” Dentre os resultados, utilize o que tiver como fonte o site oficial da Microsoft (dominio ricrosoft.cos). E possivel comparar o site localizado com a tela que est demonstrada na Figura 27. Windows Server 2003 Resource Kit Tools, aecioson: Figura 2.7 — Site da ferramenta Windows Resource Kit Tools. Realize o download deste recurso, salvando-o em alguma pasta temporétia em seu computador. 2.3.2 Passo 2 — Instalando 0 Windows Resource Kit Tools Para instalar o Windows Resource Kit Tools em seu computador é simples: execute 0 arquivo que foi obtido no tépico anterior e, endo atentamente ¢ estando de acordo com as informagdes fornecicas nas telas, avance sua instalago até o final. PostgreSQL » Guia do Programador Nao hé necessidade de alterar as configuragdes que aparecerem durante 0 pro- ccesso de instalagio do Windows Resource Kit Tools. “© Importante: Anore o local onde este recurso seri inscalada, pois o mesmo se fard necessirio nas préximas etapas 2.3.3 Passo 3 — Criando o servico manualmente ‘Com o Windows Resource Kit Tools instalado em seu computador, inicie uma janela do MS-DOS (Start > Run... > “end” ). O prdximo passo € executar o comando de criagio de servigo, Para isso, localize o arquivo Too!s\srvany.exe dentro da pasta onde 0 Windows Resource Kit Tools foi instalado. Se o caminho utilizado na instalacao foi o padrio, o arquivo deve encontrar-se no seguinte diretério: (CAProgran Files\Windows Resource Kits\Too]s\srvary.exe importante: Se o sea Windows for em portugués, substitua no caminho anteriorente citado a pasta Progran Files por Arquivos de Progeanas Apés localizar 0 arquivo em questo, volte para a janela do MS-DOS e execute © seguinte comando: ‘nstsrv pgranual "C:\progran Files\indows Resource Kits\Tools\srvany exe" No comando demonstrado, o nome pgranua! foi definido como o nome do servi- G0 que o PostgreSQL utilizard, e em seguida o caminho do arquivo anteriormente localizado.A uilizagao deste arquivo ainda nao ¢ 0 resultado final do procedimento de criagao de servigo no Windows, contudo, neste momento ja existird um servic chamado poranual em sua tela de servigos dentro do painel de controle, aguardando a execucio das proximas etapas 2.3.4 Passo 4 ~Criando o arquivo .bat deinicializacao Ames de continuar 2 configuragio do servigo de inicializagao do PostgreSQL em seu computador, € necessario criar 0 arquivo bat de inicializagao do servidor em questio. © funcionamento da criagao manual de um servigo para o PostgreSQL engloba o seguinte funcionamento: O servigo do Windows executard o arquivo .bat configurado, sendo que nele ser definido a inicializagao do PostgreSQL. Escolha uma pasta de sua prefernciae crie um arquivo chamado stare. bat. Arma- zene a localizagio deste arquivo, Sera utlizado o seguinte caminho neste exemplo: C:\startpg.bat Capitulo 2 « Instalando 0 PostgreSQL 6 Em seguida, abra este arquivo em modo de edigio (pode ser no Notepad do Windows) insira 0 seguinte cédigo dentro dele: "Cy\Progran FiTes\PostgreSQL\8.2\bin\pg_ct exe" start -D "C:\\éata\" No cédigo descrito no arquivo startge.bat & necessério tomar 0 cuidado para identificar o correto local do arquivo pg.ctl.exe como primeiro argumento do at- quivo, Este arquivo encontra-se dentro da pasta 82hin onde o seu PostgreSQL foi instalado, O Glkimo pardmetro deste comando € a localizago da pasta de dados que ser utilizada pelo PostgreSQI.. Indique o caminho da mesma, a qual foi criada no passo 5 da instalagao do servidor e, por padrao, deve estar localizada no seguinte diretério: A\Progran Nles\PostgreSOL\8.2\data Caso a instalagéo do PostgreSQL esteja localizada em outro diretério, altere 0 ca- minho de acordo com as suas necessidades para localizar a pasta daa corretamente, Salve o arquivo antes de prosseguir com a instalagio manual do servigo do PostgreSQL. 2.3.5 Passo 5 — Configurando o servigo no Windows Acesse o médulo de servigos dentro do painel de controle do Windows (Sart > Con! Panel > Adsinisratve Tools > Sen). Localize o servigo criado anteriormente, cujo nome deve ser pgranual, Efetue um duplo clique sobre este servigo para habilitar a visualizagao de suas propriedades, ou utilize o botdo direito do mouse sobre o mesmo, ¢ em seguida o botio esquer- do sobre o item Prperits. Em sua primeira tela, verifique e habilite se necessario a opcdo Startup ype para Autnmic, fazendo com que o servigo seja iniciado sempre que o computador em questao for ligado. ‘Acesse a aba log On e, em seguida, configure o servigo para utilizar uma conta exisvente em seu computador, com sua respectiva senha. Um exemplo desta conti guracio pode ser vista na Figura 28. Caso niio existe uma conta de usuario criada em seu computador que possa ini- cializar o servigo do PostgreSQL, ser4 necessdrio criar uma por meio da ferramenta Sart > Conte Pael > User count, criando uma nova conta sem poderes administrativos, em seguida, definindo uma senha de acesso para a mesma. 46 _osteSQL« Gua do Pogador roa 50> [Een | Copa = (Olea Spe account Peed ‘Youean rr ate i ier haute rls ed or Hadnee Pe seve] ese Enaiee bo irate) (iat Figura 2.8 — Configuracdo do servico, 2.3.6 Passo 6 — Configurando o registro do Windows: O tiltimo passo € configurar no registro do Windows a associagdo do servigo pgranual com 0 arquivo .bat criado chamado de startog.bat. Para isto inicie 0 gerenciador de registro do Windows, por meio do comando kegeds32, como mostra a linha a seguir: Start -> Run... -> "regedts2" Key com o botao. esquerdo do mouse. Este comando iré criar uma pasta dentro do diret6rio atual, Nomeie a nava pasta ‘com o valor Paraneters ¢ pressione a tecla . Acesse o novo diretério criado, e dentro dele serio criados dois novos arquivos (arquivos, e nfo diret6rios). Para ctiar um arquivo, clique com 0 botao direito sobre a tela direita do gerenciados de 7 registros e acesse a opsao New > Sting ae com o bot2o esquerdo do mouse. No final do processo, o gerenciador de registros dever apresentar uma hierarquia como a apresentada na Figura 29, De Es ow Faw ‘Ga pos Ga perme 2G pana ‘Gen Baracnses Figure 2.9 — Hierarquic des arquivos no gerenciador de regisros. © primeiro arquivo nomeie com o valor Application ¢ 0 segundo com o nome Apobirectory, Para ambos 0s arquivos ser necessério valoré-los. Para isso, efetue uum duplo clique sobre © primeito arquivo (Application) e preencha seu valor com 0 caminho da localizagao do arquivo .bat criado anteriormente. Neste exemplo, preencha com o seguinte valor: Co\startog. bat Em seguida, edite o valor do arquivo appbirectory e preencha apenas com 0 dire- trio da localizagao do arquivo startps.bat, no caso, apenas com o seguinte valor: c Feche o gerenciador de registros e, por meio do médulo de servigos dentro do painel de controle, tente iniciar 0 servigo criado com o nome de pgranual. © mesmo deveré rodar normalmente, colocando o PostgreSQL no ar. 2.4 Migrando a versao do PostgreSQL no Windows ‘A migragio entre verses do PostgreSQL no Windows ainda é uma novidade, ten- do em vista que somente a partir da verstio 8 que o aplicativo foi disponibilizado nativamente para instalago nesta plataforma. Antes da versio 8, era possivel utilizar 0 PostgreSQL no Windows, a partir da utilizagio de um emulador de ambientes Linux instalado no computador em ques- tGo, Por este motivo, o meio de migragio mais recomendado para este e diversos outros casos, 6 0 backup completo do servidor atual e suas bases de dados, e seu posterior restore na nova versio instalada da ferramenta 4B PostoteSQl + Guia do Progremador No caso de um backup seguido de um restore, recomenda-se realizar o backup total antes da instalago da nova versio, por uma questo de seguranga dependen- do das verses utiizadas. Uma vez realizado 0 backup, o servico do servidor atual no deve ser mantido, para evitar com que nenhuma informacio do servidor seja alterada, © proximo passo da migragao € a instalagao da nova versio na sequéncia, criar um super usuario no novo ambiente e importar os dados do backup. Além dos bancos de dados, podem ser que configuragdes do antigo servidor sejam necessérias, de serem importadas, as quais ficam localizadas no arquivo de configuracao. Todo © cuidado é necessério pois o arquivo de configuracio da nova versio niio deve ser excluido, mas sim, ter as informagbes necessérias adicionadas em seu contetido. Dependendo da versio a ser instalada, € possivel execurar o arquivo de instala- Go a partir do programa upgrade, bat que acompanha a instalaco do PostgreSQL. para o Windows. Para maiores informagées sobre backups ¢ restores leia o Capitulo 7, Para saber a localizagio do arquivo de configuragio de seu PostgreSQL, leia 0 tépico 252 no caso da plataforma Windows, t6pico 2.65 para Fedora Core ou 285 para Debian. 2.5 Configuracées iniciais ‘A partir deste momento o PostgreSQL estar pronto para scr executado. Algumas informagées podem ser diteis, como por exemplo os comando de inicializagao € interrupeo do servidor, bem como a localizago de seus arquivos de configuraghes, como abordam os t6picos a seguir. 2.5.1 Comandos de inicializacao e interrupcao De acordo com as recomendagées feitas neste capitulo, o PostgreSQL devers pre- ferencialmente estar instalado como um servigo do Windows, ou configurado ma: rnnalmente como um, Para inicializar ou encerrar o servico do PostgreSQL, acesse © gerenciador de servigos do Windows, por meio do caminho: Start > Conta Panel > Aéinstratve Tol > Services Em seguida, selecione o servigo do PostgreSQL e utilize os botdes de iniciar e interromper para realizar as suas ages. Capitulo 2 « Instalando 0 Pos 49 2.5.2 Localizacdo do arquivo de configuracéo Basicamente existem trés arquivos de configuracdes principais do PostgreSQL, que 0: pg_hba.conf,pq_ident conte postgrese) conf. No Windows, a localizacao padrao do arquivo de configurasao é a seguinte: C:\Prooran files\PostoreSQQ\8.2\data Caso 0 PostgreSQL tenha sido instalado em outro diretério em seu computador, localize o diretério data dentro da pasta onde o servidor foi instalado. Estes arquivos também podem ser acessados a partir do menu Iniciar do Windows, uma vez que atalhos para os mesmos sio disponibilizados dentro da pasta do PatpeSQl > Court fies 2.6 Instalando o PostgreSQL no Fedora Core (Linux) A instalagao no Fedora Core pode ser um processo mais fécil e répido do que a instalagao no Windows. © livro abordaré a versio 6 do Fedora Core, contudo, 0 processo de instalagao descrito a seguir poderd ser Seguido para usuarios de algumas ‘verses mais antigas do sistema operacional. Assume-se também que o computador em questiio possui acesso a internet. Caso tenha dtividas ou problemas especificos com o Fedore Core utilize os links seguir para obter acesso a foruns de discussie, listas de e-mails e canais IRC para procurar ajuda: 1 Site ofidial da Fedora Core http://w. fedoraproject.org Site oficial de ajuda do Fedora Core: hetp://mn. Fedoraproject.org/wiki /Comunicate 2.6.1 Passo 1 — Acessando um terminal como root O primeiro passo para obter acesso total de instalacdo no Linux € acessar um ter minal (Apliatons > Acasores > Tein!) como usuario root, Caso o sew usudrio utilizado para 0 processo de instalagio nao possua tais direitos, serg necessério digitar a seguinte linha de comando: 50 PostgreSQL» Guia do Programador Este comando solicitard a senha do administrador do sistema (root), sendo complementado pelo argumento "=" (hifen), 0 qual habilitaré também as variaveis do usuario root para utilizacao (varivel sPath em especial poderd ser necessaria), 2.6.2 Passo 2 - Instalando 0 PostgreSQL Ainstalagdo do PostgreSQL fara uso do utilitério yinexistente no Fedora Core para auxiliar na instalagao de programas e pacotes, baixando da internet diretamente todo 0 contetido necessdrio em suas tiltimas versées. Além disto, este programa realiza a instalagio de todas as dependéncias de bibliotecas € pacotes que possam surgir durante 0 processo. Para instalar 0 PostgreSQL dois programas sio necessaios. E possivel instali-los de uma vez 6 por meio do seguinte comando: van install postgrese] postaresal-server Dic: Seao executaro comando anteriormente citado aparecer uma mensagen ctando «que o programa yum esté sendo utilizado ou atualizada, € possvel encerrar o seu processo de update por meio do comand service yun-upéates¢ stop. Ao cancelar 0 servigo de atualizasZ0 do comando yum, execute novamente 0 comande deinstalagio do PostgreSQL. Baseado em seus pardmetros, 0 comando yun busca na internet uma lista de pacotes e pendéncias que serao necessérias efetuar o download para completar integralmente a instalagio do programa em questi, E posstvel obter mais infor- ‘magoes sobre 0 comando yun acessando arquivos de ajuda, por meio do comando san yun digitado no proprio terminal, ‘Apés um tempo (o qual ird variar de acordo com a sua conexio com a internet), o linux saber quais arquivos deverio ser efetuados os downloads, inclusive paco- tes com pendéncias de atualizagies necessérias. Uma lista detalhada com todos 08 arquivos, exibindo seus nomes ¢ tamanho total para download seré exibida, junto com uma solicitagio para prosseguir ou nfo, Havendo ou no pendéncias, confirme a continuagao do processo digitando ¥ seguido da tecla quando isso ocorrer. processo tera continuagao, Pode ser que algum outro pacote seja necessério instalar durante este processo. Se isto ocorrer, sera exibido na tela informagoes do pacote em questo, novamente com uma solicitagdo para prosseguir. E possivel automatizar 0 comando yun para assumir a resposta yes para todas as perguntas durante o processo de instalago, adicionando o parametro -y em sua execucao, Capitulo 2» nstalando 0 PostgreSQL 51 Assim que todos os downloads necessérios forem realizados, automaticamente © comando yun instalaré e configurard o PostgreSQL em seu computador. No final de sua execucdo, uma mensagem de sucesso aparecer em seu terminal, indicando © término desta etapa 2.6.3 Passo 3 — Iniciando o servido do PostgreSQL automaticamente Apés instalar o PostgreSQL no Fedora Core € possivel habilitar que o PostgreSQL. seja ligado toda vez que o sistema operacional for iniciado. Para realizar tal ago, utilize o seguinte comando: ctkconig postgresal or Para os primeiros acessos no PostgreSQL o padrio é existir acesso para as conexdes locais (localhost / 127.0.0.1). Para conexio a partir de outros enderegos, € necessério adicionar novas entradas no arquivo pg_tha.coaf. Sempre que o arquivo de configuragio for alterado, recomenda-se reiniciar o servigo do PostgreSQL para que as alteragoes tenham efeito. 2.6.4 Passo 4 - Comandos de inicializacao e interrupgao A seguir, serio apresentados os comando de inicializagio ¢ interrupgio do PostgreSQL. Lembre-se de que € necessério estar com os privilégios de adminis- trador (root) para iniciar ou interromper o servidor. Para iniciar o servigo do PostgreSQL no Fedora Core, via terminal: service postgresql start Para interromper o servico do PostgreSQL no Fedora Core, via terminal: service postaresal stop Para iniciar a ferramenta psel no Fedora Core, via terminal: sal 2.6.5 Passo 5 — Localizacao do arquivo de configuracao Os arquivos pg.hoa.conf, pg ident.cont © postgresa) conf, responsiveis por diversas configuragdes do servidor PostgreSQL, podem ser localizados no diret6rio /var/ 1ib/pgsal/data/. Note também que por padrio este € 0 diretério de dados criado ¢ utilizado pelo servidor PostgreSQL. pea HEE he EERE EEE PostgreSQL» Guia do Pragramador 2.6.6 Passo 6 — Iniciando o cluster de dados do PostgreSQL Antes de iniciar a interago com o PostgreSQL é necessério definir o local onde © cluster de dados do servidor ser armazenada. E neste cluster de dados que todas as informagées gerenciadas pelos bancos de dados serao armazenadas. Nao € recomendado que o cluster permaneca em diretérios do usuario root do Fedora Core, Por este motivo, é sugerido a criago de um outro usutio (que pode ser o postgres, que jd é criado durante 0 comando yur na instalacao do PostgreSQL) que uma pasta seja alocada para tal usudrio, Para criaro cluster de dados, execute ‘0s seguintes comandos em seu terminal no Fedora Core: 4 Tavoque 0 usuirio root do Fedora Core # Adicione o usuario postgres (caso 0 usuario j& tenha sido criado, o Fedora Core auduser postgres # Gri o Giretério pgsql dentro de /usr/local rkdir fast /local/pgsal # Coie 0 diretério data dentro de fusr/local/pgsq] nkdir /usr/local/pasal/data # Atribua 0 diretério criado para 0 usuirio postgras ‘choan postgres /usr/local/ogsql/data # Imvoque © acesso do terminal para o usuério postgres su ~ postares 4 Crie 0 cluster de dados no diretirio espectficado init -D /usr/local/pgsql data postnaster -D /usr/local/pgsql/data > TogHle 2 > a & 4 rie un banco de dados apenas para testar se o cluster esta funcionando createdb teste # Acesse 0 banco de dados de teste pela prineira vez utilizando 0 psql sa) teste Apés realizar todos estes passos o PostgreSQL estard instalado e configurado para realizar suas primeiras atividades como servidor de banco de dados em seu Fedora Core. Instalando 0 PostgreSQL 53 2.7 Migrando a versao do PostgreSQL no Fedora Core (Linux) © proceso de migracio de versao do PostgreSQL no Fedora Core, implica neces- sariamente em 0 computador em questio estar utilizando uma versao antiga do Fedora Core, pois a versio 6 deste sistema operacional jé vem com o PostgreSQL & De acordo com a opinio de diversos usuérios avancados em Fedora Core, &alta- mente recomendado migrara versio do sistema operacional para a mais atual estével disponivel, consequentemente atualizando de forma automatica o PostgreSQL para a versio mais recente. Porém caso 0 usudrio deseje, é possivel migrar de versio tealizando um backup completo dos dados da versao atual, e em seguida instalando a nova versio e re- alizar o restore destas informagies, ressaltando de que outras informagoes como configuragdes de servidor também devem ser armazenadas para posteriormente serem adicionadas novamente. Para saber mais sobre estes procedimentos leia o Capitulo 7 sobre backups e restores + Importante: E sempre recomendavel realizar backup de seus dados e informages armazenados no PostgreSQL antes de realizat este tipo de procedimenta, Para iss, leia 0 Capitulo 7 sobre backups e restores 2.8 Instalando 0 PostgreSQL no Debian (Linux) A instalago no Debian também pode ser realizada de forma simples por meio de alguns programas auxiliares que gerenciam o processo de instalaga. Este livto abor- daté a versio 4 do Debian, contudo, o processo de instalacio descrito a seguir poderd ser seguido para usudrios de algumas verses mais antigas do sistema operacional. Assume-se também que 0 computador em questo possui acesso a internet. Caso tenha dividas ou problemas especificos com 0 Debian, utilize 0s links a seguir para obter acesso a foruns de discussio, listas de e-mails e canais IRC para procurar ajuda: = Site oficial do Debian http: //on.debian.org + Site oficial de ajuda do Debian exp: //iu. debian org/support 4 PostgreSQL. «Gula do Proamador 2.8.1 Passo 1 — Acessando um terminal como root primeito passo para obter acesso total de instalagio no Linux é acessar um termi- nal como usudrio root, Caso o sen usuario utilizado para o processo de instalacao no possuia tais direitos, serd necessério digitar a seguinte linha de comando: Este comando solicitara a senha do administrador do sistema (root), sendo complementado pelo argumento *-" (hifen), o qual habilitard também as variveis, do usuiirio root para utilizagio. 2.8.2 Passo 2 — Verificando a versao disponivel para instalacao Antes de darmos inicio ao procedimento de instalacdo no Debian, ¢importante che- carquala versio do software que serd instalada, Particularmente para o PostgreSQL, na data de publicagao deste livro, o Debian ainda nao disponibilizava o PostgreSQL. 8 como uma versio padriio de instalacao. Portanto, € necessario executar um pro- cesso para verificar qual a versio seré instalada. Digite o comando a seguir para verificar qual versio do PostgreSQL 0 Debian id instalar em seu computador: apt-cache policy postgresql ‘Um dos parimetros de retorno deste comando é 0 valor de Candidate, que informa qualo pacote € candidato instalagao. Se a versao informada neste campo for acima da versio 8, continue o processo de instalago. Caso contrario, é possivel utilizar coutras fontes de dados na intemet que localize a versio mais recente do PostgreSQL, como por exemplo utilizar o servigo de backports (um site bastante dil pode ser ‘http://www. backports .org). Configurando o seu Debian para utilizar backports ou nfo, os préximos passos da instalagio so os mesmos para ambas as situacoes. Utilize o comando apt-get para instalar 0 Postgresql em seu computador: apt-get install postgresel Este comando é similar ao programa yun apresentado no tépico 2.62, sua funga0 & de gerenciar o processo de instalacZo, baixando da internet todas as bibliotecas ¢ outras pendéncias que possam haver em seu computador, para completar com sucesso a instalago. Algumas confirmagGes sero exibidas na tela, as quais devem set lidas atentamente e respondidas com ¥ quando for questinado sobre baixar pacotes da internet, Capitulo 2« Instalando o PostoreSQL 55 Neste momento o PostgreSQL estara instalado em seu Debian, restando algu- ‘mas configurag6es iniciais a serem realizadas, Para testar seu PostgreSQL utilize os seguintes comandos em eu terminal: su postares created SOFTBLUE sq] SOFTBLUE ‘Aprimeira linha ir acessar o terminal com o usuario postgres, 0 qual foi criado pelo comando apt-get enquanto seu PostgreSQL era instalado, Em seguida, um comando cria um banco de dados qualquer, no caso, um banco ficticio chamado SOFTBLUE. Por tiltimo, é acessado banco SOFTBLLE utlizando um programa cliente do PostgreSQL que € 0 psql. Neste momento o seu PostgreSQL estara disponivel para utilizago, podendo 0 leitor pular o pr6ximo passo descrito neste capitulo, no caso, 0 passo 4. 2.8.3 Passo 3 — Iniciando 0 cluster de dados manualmente Caso tenha instalado a versio 8 ou superior manualmente é necessério iniciar corretamente o cluster de dados do PostgreSQL. Para isto, execute os comandos a segu 4 Acessa o terminal como root # Cria um diretério para o usuério postgres rkdir /usr/local/postares 4# Cria 0 diretorio de dados para o usuério postures iksir /use/Tocal /postares/data, 4 Atribui o Giretorio en questo para o usuario postgres choun postgres:pastares /usr/local/postgres/data 4 Retorna o acesso para o usuiria posteres su = postgres ‘# Inicia p cluster de dados por nefo do comando inftdb ‘nitde -0 /usr/local/postores/data A partir deste momento o seu PostgreSQL estar configurado e pronto para iniciar suas atividades. ida tssnin steals nian asnasaioaAtlnaianemasnmae 322 200R0SUE 2 Cc 2.8.4 Passo 4 — Comandos de inicializacao e interrupcao A seguir, 03 comando de inicializagio ¢ interrupgio do PostgreSQL para uso no Debian. Lembre-se de que pode ser necessério estar com os privilégios de adminis- tador (root) para iniciar ou interromper o PostgreSQL. ¢ que o mesmo deve estar disponivel como um servigo em sua estacao, Para iniciar 0 servigo do PostgreSQL Server no Debian: Jetcfini.d/postaresa) start Para interromper o servigo do PostgreSQL Server no Debian: Jetclinitd/postaresel stop Para iniciar a ferramenta PostgreSQL Client no Debian: sal ‘Vale a pena lembrar que o comando apt-get, dependendo das configuragdes do seu Debian, pode configurar para que o PostgreSQL seja inicializado automaticamente ao iniciar o sistema e interrompé-lo da maneira correta ao desligar o sistema. 2.8.5 Passo 5 — Localizagéo do arquivo de configuracio Os arquivos pe_hha.conf, pg-ident.conf ¢ postgresal.conf, responsaveis por diversas configuragies do servidor PostgreSQL, podem ser localizados no diretsrio /var/1ib/ gostgresal/8.2/main/. Dependendo de como o PostgreSQL foi instalado no Debian, 0 diret6rio destes arquivos de configuragio pode variar, caso tenha sido informado outro enderego para armazené-los. Note também que, por padrii este é0 diretério de dados criado e utilizado pelo servidor PostgreSQL. Caso tena usado o cécigo apresentado no t6pico 284, 0 sen diretério de dados serd /usr/local/pscgres/data 2.9 Migrando a versao do PostgreSQL no Debian (Linux) processo de migragao de versao do PostgreSQL no Debian requera execugio dos _mesmos passos descritos no t6pico 27. O préprio instalador do apt-get encarrega-se de analisar se existe uma versao anterior do PostgreSQL em seu computador ~ ¢ atualiaé-la, caso necessrio. % Importante: F sempre recomendivel realizar backup de seus dados e informagbes armazenados no PostgreSQL antes de realizar este tipo de procedimento, Para tanto, leiao wopico 231 da instalaga0 no Windows, ou entio diretamente o Capitulo 7 sobre backups e restores. ¢ capitulo 3 Linguagem SQL Este capitulo aborda a sintaxe ea linguagem SQL, que ¢ utilizada para manipulagao de dados nos principais bancos de dados disponiteis no mercado. Apés. leitura do capitulo e execugao dos exercicios aqui recomendados, o leitor estaré apto a desen- volver suas primeiras expresses SQL e teri capacidade de pesquisar e conhecer os fundamentos avangados da linguagem. Para os leitores que jé dominam a linguagem, podem passar para o capitulo seguinte. Jé para os leitores que desconhecem totalmente a linguagem SQL, é re- comendada também a leitura do Apéndice A, que aborda os conceitos gerais de banoos de dados antes de prosseguir neste capitulo. 3.10 que é SQL? Asigla SQL abrevia a expresso Structure Query Language (em portugués, Linguagem Estruturada de Consulta), nome dado a linguagem responsdvel pela interagao com 0s dados armazenados na maioria dos bancos relacionais. As ferramentas de manipulagio grafica de dados (pgAdmin, por exemplo) utili- zam a linguagem SQL para interagir com o banco de dados. Os terminais de texto também fazem uso de tal recurso, Veja os recursos disponibilizados por esta linguagem: = Consultas: Possibilidade de capturar do banco de dados informagées armaze- nadas para utilizagio em aplicativos, ou meramente informativas. 57 58 + Atualizacées: Torna possivel a atualizacio 4 baneo de dados a partir de sistemas que po A atualizagio pode ser entendida de t= exclustio de dados. tos e ordenagies: Tratando-se de formaas’ retornados em uma consulta sejam ordenados © mente campo),além de também disponibi! formatagio de resultados (campos numéricos Alguns dos principais comandos SQL sero descritos ms 3.2 Tabelas utilizadas neste capitulo [A seguir esto disponiveis para consulta as tabela cexemplificagdo das instrugdes que serao abordadas. O das tabelas, bem como da insergdo de suas informags no site da editora Novatec: hetp://mm.novatec.con.br 3.2.1 Tabela TB_FUNCIONARIOS Estrutura (CREATE SEQUENCE SEC_FUNCIONARIOS INCRENEXT 1 START 2; (CREATE. TABLE TB_FUONCIONARTOS ID int PRIMARY KEY DEFAJLT Newtva'SEQ_FUNCIONARIOS") NOME VAROIAR(64) NOT NULL, FESCOLARIDADE VARCHAR(32) NOT WL, (ARGO VAROWR(AB) NOT NULL, SALAREO FLOATS NOT HULL % Dados BD MME ——ESCOLARIDADE CARO 1 André Pés-Graduado Aralista de Wegécias 2 Claudio estre Analista de Sistemas x 3 Luis Graduado——AraTista de Sistemas Capitulo 3 « Linguagem SQL 59 4 Alfredo Pbs-Craduado Analista de 8 2300 5) Augusto Doutor Adwinistrador de Banco de Dados 2600 6 Ricardo Gradvado rasta de Sistemas 000 T Thals — Graduado nal ista de Marketing co 8 Pecro — Graduado———Progranador 00 9 Flivia Mestre nalista de Sistenas 2300 3.2.2 Tabela TB_CARGOS Estrutura (CREATE SEQUENCE SEQ_CARGDS INCREMENT 4 START 1 CREATE TABLE TB.cARCOS c 1D int PRIMARY KEY DEFAULT MextVa(°SEM_CARCDS"), ‘CARED VARCHAR(HB) NOT NULL, DEPARTANENTO VAROHARC#8) NOT NULL Dados 1 caRD DpaRTAMEXTO 1 Analista de Negécios Tecnologia da Infornacio 2 AnaTista de Sistemas Tecnologia da Infornacio 3. Aralista de 8 Tecnologia a Infornacio 4 Administrador de Banco de Dados Tecnologia da Tefornaczo 5 AnaTista de Marketing Marketing 6 Progranador Tecnologia da Infornacio 7 Contador (Contabiidede 8 Adviniserador Contabi dade 9) designer Marketing 3.3 Instrucdo SELECT A instrugdo mais importante no SQL € o SELECT, pois, é 2 partir dele, que sera pos- ivel visualizar os resultados das aplicagdes das demais instrugdes como inser, alteragio e remogao de contetidos. © comando seLecr € utilizado na realizag3o de consultas a0 banco de dados, retornando sempre os dados solicitados em formato de tabelas. 60 Asintaxe mais basica do comando SELECT é: SELECT campo FROM tabela Exemplo: PosigreSQL Gula do Progiamador Para ilustrar, serd utilizada a tabela T&_FUNCLONARIOS abordada no t6pico anterior. Supondo a necessidade de obter os nomes dos funcionarios dessa tabela, a seguinte expresso SQL poderia ser utilizada: SELECT NOME RCH TB_FUNCTONARIOS Resultado: Nome nd Clauio luis aifredo augusta Ricardo Thats Pedro Flavia ‘Ainda, é possivel solicitar mais de um campo para serexibido no resultado,como mostra a expresstio SQL a seguir: SELECT MIME, CARCO FROM TB_FUNCIONARIOS; Resultado: Nowe DEPARTANENTO André Analista de Negicios Claudio analista de Sistonas Luis analista de Sistenas Aifredo —tnalista de 81 Augusto Advimistrador de Banco de Dados Ricardo Analista de Sistemas Thais Analista de Marketing Pedee —Pragranador Flavia Analista de Sistems Copitula 3 + Linguagem SOL 61 Se desejar,¢ possivel incluir quantos campos forem necessarios na consulta, desde que todos existam na tabela, Caso queira visualizar todos os campos, é possivel utilizar 0 caractere "" (asterisco) para informar que todos os campos devem ser retornados, como mostra a expresso SQL a seguir: SELECT * FROM TR_FLNCIOWRIOS; Resultad TD NOME —ESCOLARIDADE CARGO ‘SALARIO 1 André Pés-Graduado Analista de Negécios 1000 2 Claudio Mestre analista de Sistenas 2000 3 Luis Graduado——_Aralista de Sistenas 700 4 Alfredo Pés-Gradvato Analista de BY 2300 5 Augusto Doutor Adninistrador de Banco de Datos 2600 5 Ricardo Graduado —_Aralista de Sistenas 1000 7 Thais Graduado ——naista de Marketing 100 8 Pedro Graduado ——Progranador 00 9 Flivia Mestre oalista de Sistemas 2300 3.3.1 Parémetro WHERE ‘Opardmetro Whe é um argumento opcional da instrugao SELECT ede outras instrugdes {que serdo vistas mais adiante, Seu objetivo ¢filtrar 0 conjunto de resultados para que somente os registtos que atendam a determinadas condigbes sejam visualizados, Geralmente as condigbes de uma expresso que utiliza WERE testam uma com- paragio de valores entre um campo da tabela de um valor predeterminado ou até mesmo de outra tabela [A sintaxe da instruglo SELECT utilizando o parametro wie é SELECT camo FIOM taeTa WERE condicies Exemplo: Supondo que o objetivo € visualizar apenas os registros cuja escolaridade seja igual a Gradiado é possivel utilizar o par’metco weRE da seguinte maneira SELECT * FRON TB_FUNCIONARIOS WHERE ESCOLARIDAD (Gradua; 62 PostgreSQL » Guia do Programador Resultado: TD MME ——ESCOLARIDADE CARGO SALARIO 3 Luis Graduado —-—Analista de Sistemas 700 6 Ricardo Graduado —Analista de Sistemas 1000 7 Thais Graduado ——Analista de Marketing 1100 8 Pedro Graduado ——Progranador 900 Também ¢ possfvel inserir mais condigées, filtrando ainda mais o resultado, como mostra o exemplo a seguir, utilizando duas condigdes para exibir os registros cuja escolaridade seja Graduado e que o cargo seja diferente de Analista de Sistemas: SELECT * FROM TR_FUNCIONARIOS WHERE ESCOLARIDADE = ‘Graduado" AND CARGO ‘analista de Sistemas"; Resultado, TD NOME ESCOLARIDADE CARGO SALARIO 7 Thais Graduado ——analista de Marketing 1100, 8 Pedro Graduado ——_Prograrador 900 3.3.2 Parametro ORDER BY © pardmetro oR0ek BY éutilizado para ordenar os registros de uma consulta de acor- do com um campo ou critério utilizado, Sua utilizagio torna pratia a visualizagio crescente ou decrescente de dados, além de otimizar a captura do primeito (menor valor) ou tltimo (maior valor) registro de uma consulta qualquer; Sintaxe: Para utilizar 0 pardmetro onOeR BY, use a sintaxe descrita a seguir. SELECT canpo FROM tabela ORDER BY critério [ASCIDESC] Caso a expressilo SQL esteja utilizando outros pardmetros como WERE ou HAVING, recomenda-se que o parimetro ORDER BY scja empregado por tiltimo em sua expresso. correspondente. valor ne5¢ exibido no final da sintaxe tora possfvel a ordenacao decrescente da consulta em questo. Caso nfo seja utilizado, a ordenagio serd crescente, sendo possivel usar o parimetro asc para garantir tal condigaa, Capitulo 3 « Linguagem SOL Exemplo: 63 Com base na lista de funcionérios, para exibi-la em ordem crescente do nome dos dos mesmos, a seguinte expresso SQL deve ser utilizada: SELECT # FROM TB_FUNCTONARIOS ORDER. BY NOME; Resultado: 1D Ome Aifredo nde Augusto clauio Flavia luis Pedro Ricardo Thais ESCOLARTOADE Pés-Cradvado Plés-Graduato eutor Nestre estre Graduado Graduate Graduado Graduado con Analista de AnaTista de Negicios Adninistrador de Banco de Dados Analista de Sistemas analista de Sistemas Analista de Sistemas Progranador analista de Sistemas analista de Marketing SALARIO 2300 1000 2600 2000 2300 700 oo 2000 uo ‘Uma outra utilizagio deste parimetto é a ordenagio decrescente, Supondo de- sejar ordenar a mesma tabela a partir dos salarios mais altos para os mais baixos, a seguinte expresso SQL deve ser usada: SELECT * FROM TR_FUNCTONARIOS ORDER BY SALARIO DESC; Resultado: 1D NOME 5 Augusto alfredo Flavia Causio Thais Andee Ricardo Pedeo a wis ESCOLARIDADE Doutor Pos-Graduado Hestre Hestre Graduado Pis-Graduado Graduado Graduado radiado oaco SALARrO Adninistrador ge fanco de Dados 2600 analista de 81 Analista de Ststanas ‘analista de Sistenas Analista de Marketing Analista de Negbcios analista de Sistemas Progranador pnalista de Sistenas 2300 2300 2000 2100 21000 1000 00 700 PostgreSQl + Guia do Programad ‘Um dos comandos mais importantes no SQL 60 JOIN e suas variagdes,o qual torna pos- sivel unir duas ou mais tabelas a partir de campos correspondentes entre as mesmas. Este tipo de comando € necessario principalmente em consultas realizadas em bancos de dados normalizados, pois so construidos de forma a otimizar recursos de espaco no servidor. Algumas informagdes de registros encontram-se em tabelas separadas. Sintaxe: SELECT canpo FROM tabeTal JOIN tabela2 ON tabeTal.canpo = tabele2.canpo (WERE conics] Exemplo: Com base nas tabelas apresentadas no t6pico 32, € possivel notar que a infor magéo a qual departamento cada funciondrio esté ligado é obtick a partir do rela- cionamento do campo Aco entre as tabelas TE_FUNCIONARIOS € TS_CARGOS. Para mostrar esta informagio de departamento em uma consulta SQL, sera necessério utilizar o comando WER J0IN, como mostra a expressdo SQL a seguir: SELECT NONE, DEPARTAMENTO FROM T#_FINCTONARIOS {0IN TR_CARGOS 0 TE_PINCIONAREOS.CARCD ~ TB_CARCOS. CARGO; Resultado: NOME ——_ePARTANENTO Pndré Tecnologia da Tefornacéo Claudia Tecnotogia a Infornazo wis Tecnologia da Informacto Ricardo Tecnologia da Informacéo Flavia Tecnologia da Informacéo Alfredo Tecnologia da Taformaczo Auguste Tecnologia da Teformacdo Thais Yarketing Pedro Tecnologia da Informacdo Note que € necessério informar qual campo de cada tabela é responsavel pelo relacionamento entre ambas, Outro fator importante é que os campos nao precisam ter os mesmos nomes, desde que tecnicamente possuam a mesma informagio que possa servir de relacionamento. 3.3.4 Parametro AS (alias) Durante a utilizagio de um comando SQL, em casos de utilizar campos cujos ‘homes sejam muito longos, ou por outros motivos, € possivel atribuir um apelido (alias) para um campo especifico para uso na expressfio SQL na visualizagao dos resultados. Este comando pode ser utilizado em qualquer consulta SQl. Sintaxe SELECT canpo AS alias FROM tabela [MHERE condiées] Exemplo: Com base na consulta SQL realizada no t6pico anterior, ser repetida a mesma consulta, utilizando alguns alias para os campos NOME ¢ DEPARTAMENTO. Note também. no exemplo a seguir que foram usados um comando ORDER BY € 0 ALIAS de um campo como paraimetro, ¢ nao o nome original do campo. SELECT NOME AS FNCINARIO, DEPARTAMENTO AS AREA FROM TR_FINCIOUAIOS TAMER JOIN Ta_CARCDS (0 TB_FINCINAREO.CARGD = TBCACOS.CARGD ORDER Funcionarfo: Resultado: FUNCIOWARIO. ARES Alfredo ——_Teenologia de Infornacio Andee Tecnologia da Informacéo Augusto Teenologia da Infornacio Clivéio Tecnologia da Informacio Flavia ‘Tecnologia da Inform lus “Tecnologia da Informacion Pedro Tecnologia da Infornacio Ricardo Tecnologia da Inforacio Thais Morketing 3.4 Instrugéo INSERT A instrug&o INSERT é utilizada para incluir dados em uma tabela Sintaxe: INSERT INTO tabela (campo [, campo2, ...]}] VALUES (vatort [, valor2, ...1) importante ressaltar que a utilizagio da sintaxe do comando 1NSexr requer al- guns cuidados especiais. Recomenda-se que, sempre que possfvel,odos os campos da, tabela sejam descritos, identificados e valorados para evitar conflito de informagbes, isto porque é possivel incluir registros sem informar valores de campos que usem valores padtlo criados nas tabelas. Contudo, hd casos em que esta recomendacio Supondo a necessidade de inclusto de um registro na tabela Te functonnzns de ‘uma pessoa chamada Jéferson, cuja escolaridade seja pos-graduado, cargo analista de marketing e salério de R$ 230000, a seguinte expresso SQL deve ser utilizada {TNSERT ITO TR_FUNCTONARTOS (NCH, ESCOLARIDADE, CARGD, SALARLO) VALUES ("JeFerson’, 'Ps-Graduado', ‘AnaTista de Marketing’, 2300); Note que o campo 10 da tabela nao foi descrito nem mesmo valorado. Isto ocorre porque o campo em questo é do tipo auto-incremento, ouseja, seu valor serd gerado pelo sistema pata ser o préximo cédigo da tabela Ts FUNCIONRIOS E possivel identificar 0 campo ID com um valor que se deseja inserir, mesmo este campo sendo gerado automaticamente. Deve-se tomar cuidado ao realizar esta ago, pois se 0 ntimero sugerido jé existir em algum registro, ocorrerd um erro de duplicidade de chave priméria no momento da tentativa de inclusdo desta nova in- formagio. Além disto, ao utilizar manualmente um ntimero que nao estd duplicado, deve-se ficar atento para o fato de que o gerador automético do campo ID possa um dia alcangar 0 nimero utilizado, e gerar erro de duplicidade futuramente. 3.5 Instrucao UPDATE ‘Ainstrugdo UATE é utilizada para alterar dados de registros armazenados no banco de dados, Seu uso pode estar combinado com o parimetro WERE para filerar quais registros sero alterados. Sintaxe: DATE taba SET campo = velor[, cape? = vaTer2, «(WERE conddes) Exemplo: Supondo a necessidade de alterar o nome de um funciondrio caso tenha sido escrito incorretamente, é posstvel realizar essa operagio utilizando o eédigo registro referente 20 funcionrio como filero de alteragao (parimetro WERE), como mostra a expresso SQLa seguir Capitulo 3» Linguagem SQL a UPDATE TB_FINCIONARIOS SET NOME = “Lute WERE ID = Este exemplo exibe a alteragao do nome “Luis” (coma letra 8’) para “Luiz” (com a letra ‘Z’). © pardmetro were filtra para que a realizagao dessa alterago seja efetuada so- mente no registro cujo ID seja igual a 3. Caso contrétio, se nio fosse utilizado tal pardmetro, todos os registros da tabela teriam o nome alterado para Luiz, indepen- dentemente de qual nome estivesse registrado. A.utilizagao do comando vepaté sem o pardmetro wERe pode ser titil em casos de resetar um determinado campo para todos os registros da tabela 3.6 Instrucéo DELETE Para excluir um ou mais registros de uma tabela, o comando DELETE deve ser utiliza- do, Assim como o comando UPDATE, o pardmetro WERE deve ser utlizado para filtrar quais registros sero excluidos. A ndo-utilizagio do parémetro implica a remogio de todos os registros da tabela Sintaxe DELETE FROM tabeTa [MERE condicdes] Exemplo: Supondo a necessidade de excluir o registro do funcionério Cléudio, cujo ID €2,a seguinte expresso SQL poderia ser utilizada: DELETE FROM TB_FUNCIONARIOS WHERE ID = E possivel também excluir o registro em questo utilizando o nome do funcioné- rio como filtro. Contudo, como a coluna NiME nao € chave priméria, podendo haver repetigdes de seu valor no decorrer da tabela, tal operagao nao é recomendada, Para fins ilustrativos, a expresso em questdo ser apresentada a seguir: DELETE FROM TR_FUNCIONARIOS WHERE NONE = ‘Claudio! 3.7 Funcées SQL no PostgreSQL Além das instrugdes e parimetros basicos vistos anteriormente, alguns comandos importantes do SQL podem ser uilizados para otimizar opetagdes em resultados, «ais como a soma de valores, célculo de média, entre outras operagdes que sero abordadas a seguir, 68 PostgreSQL» Guia do Programador 3.7.1 Parametro DISTINCT (registros distintos) © comando orstinct pode ser utilizado para evitar que valores repetidos sejam visualizados em uma consulta. Sintaxe: SELECT DISTINCT campo FROK tabeTa Exemplo: Com base na tabela Ta. FINCIONRIOS descrita no tépico 321, suponha a nevessidade da visualizagao de todas as escolaridades existentes no sistema, Para esse resultado, no ha necessidade de repetir escolaridades previamente listadas; neste caso, 0 Us0 do parimetro DISTINCT é a solugio, como mostra a expresso SQL a seguir: SELECT DISTINCT ESCOLARTDADE FROM TB_FUNCONARIS; Resultado: SCOLARIDADE Ps Mestre Graduado Graduado Dostor 3.7.2 Parametro LIMIT (primeiros‘n’registros) Appartir de uma consulta, € possivel visualizar os primeios n registros retornados, assim como os tkimos n registros. Este tipo de operagao otimiza recursos para realizat tatefas como mostrar os cinco livros mais vendidos de uma livraria, bem como 0s trés piores tempos em uma corrida, Qutra utilidade deste comando é a paginagao de resultados. Em diversas aplicagdes quando acessamos um volume muito grande de resultados, estes 40 visualizados por meio de paginas, cada uma contendo um mimero pequeno de resultados, Isto otimiza o trfego em rede e os recursos do servidor, trazendo de 10 em 10 resultados, ou mais. Contudo, para esta operacio, o valor de X na sintaxe a seguir deverd ser controlado via programagio, pois representa a partir de qual registro o resultado deve ser exibida Sintaxe: SELECT campo FROM tabela LINIT X OFFSET ¥ ftulo 3 » Linguagem SQL cy O valor de xna expressio indica quantos registros devem ser exibidos a partir da posigao ¥, que, por sua ver, indica quantos registros devem ser ignorados (pulados) 4 partir do primeiro registro do resultado, Exemplo: Supondo que se queira visualizar os trés primeiros nomes em ordem alfabética dda tabela Te_FINCIONARIOS, a seguinte expresso SQL deverd ser utilizada ‘SELECT NOME FROM TB_FUNCIONARIOS CRDER BY NOME LIMIT 3 OFFSET 05, Resultado: Nowe Alfredo ode Augusto No caso da necessidade de obter 0s tiltimos trés nomes, o argumento D&S¢ deverd ser utilizado junto ao pardmetro otbER BY, para inverter o resultado, como mostra a expresso SQLa seguir: SELECT NOME FRON TB_FUNCIONARIOS ORDER BY NOME DESC LIMIT 3 OFFSET 0; Resultado! Nowe Thais Ricardo Pedro 3,7,3 Parametro COUNT (contador de registros) © parimetro cousr exeenta a contagem de registros de uma tabela, padendo ser utilizado com um filtro para condicionar quais registros serao contados ou nao. Sintaxe: SELECT COUNT(canpa) FROH tabea (MERE condicdes] Exemplo: Para saber quantos registros esto armazenados na tabela T8.FINCIONAROS, utilize ‘a seguinte expresso SQL: SELECT COUNT(#) FROM TB_FUNCTONARIOS; 70 PostgreSQL» Guia do Programador Resultado: cane) 9 E possivel utilizar este comando com outros parametros, entre eles o wee, para filtrar ‘uma conta de registros Supondo a necessidade de contarquantos funcionsrios recebem uum saldrio maior que R$ 100000, a seguinte expresso SQL pode set usada: SELECT COUNT(=) FROM Te_FUNCIONARIOS WHERE SALARIO > 1000 Resultado: coum) 5 3.7.4 Parametro SUM (soma de campos) (0 parmetro sim realiza a soma de valores de campos especificos sobre os registros de uma consulta, podendo ser estes filtrados ou niio pelo pardmetro WERE ou outros. Sintaxe: SELECT SuM(canpo) FROM tabeTa [MERE condiées] Exemplo: Coma utilizagio desta operagiio, é possivel somar os valores de todos os funcio- ndrios cadastrados na tabela TS_FUNCIONRTOS como mostra a expresso SQLa seguir: SELECT SUN(SALARIO) FRON TB_FUNCTONARIOS; Resultado: SUNCSALARIO) 13900 Além disto, é possivel filtrar os registros a serem utilizados na soma, Supondo que se queira saber quanto € gasto com os saliios dos funciondrios que recebem mais que R$ 1000.00, basta incluir um argumento WHERE e condicionar os registtos a serem utilizados na soma, como mostra a expresso SQL. a seguir: SELECT SIM(SALARIO) FOU TB_FUNCIONARIOS WHERE SALARIO > 1000; Resultado: SUNGSALARIO) 10300 apo 3 Unguagem SQ a 3.7.5 Parametro AVG (média de valores) ‘Além da contagem e soma de registros, existe uma operago que calcula a média de valores em uma consulta SQL. Sintaxe: SELECT AVE(canpo) FROM cabela (WHERE condicées] Exemplo: Para saber qual € 0 salirio médio dos funcionarios cadastrados na tabela TB.FUNCIONARIDS, basta utilizar a seguinte expressdo SQL: SELECT AVG(SALARTO) FROM TB_FUNCICNARIOS; Resultado: AVGCSALARIO) sas. aeannasea ‘Assim como 0s parametros anteriores, € posstvel filtrar os registros que serio utilizados para calcular o valor médio de alguma tabela. Supondo que se queira saber o salério médio dos funcionarios que recebem acima de R$ 10000, a seguinte ‘expressiio SQL deve ser utilizada: SELECT AVG(SALARIO) FROM TRLRINCIONARTOS WHERE SALARIO > 1000; Resultado: AVGCSALARIO) 2060 3.7.6 Parémetro MAX/MIN (valores maximo e minimo) Outros dois parimettos bastante utilizados no SQL so para obtengio do valor mais alto (maximo) e mais baixo (minimo) de uma coluna. Sintaxe: SELECT MAXCcanoo) FROM tabela [WHERE condicées] SELECT NINGcanpe) FRON abel (HERE condicdes) Rn PostgreSQL « Guia do Programador Exemplo: Por meio deste comando, é possivel obter o salario mais alto registrado na tabela ‘TR_FUNCTONARTOS, como mostra a expresso SQL a seguir: SELECT RAXCSALARIO) FROW TB_FUNCTONARIOS; Resultado: aK(SALARION 200 Assim como € poss(vel obter 0 saltio mais baixo, conforme mostra a expressio SQLa seguir: SELECT MIN(SALARTO) FROM 73_FUNCIONARTOS; Resultado: ansaLattoy 7 ‘Ademais, ambas as operagdes podem filtrar os registros a serem utilizados con- forme amostra para a obtengao do valor maximo ou minimo. Se quisesse saber © salério mais alto entre os funcionérios que recebem menos de RS 100000, bastaria utilizar a expresso SQLa seguir: SELECT Wk(SALARIO) FROM TB_FUNCIONARIOS WHERE SALARIO < 1000; Resultado nax(saLani0 300 3.7.7 Parametro GROUP BY A clausula R00? 8y tem funcionalidades de realizar operagdes (COUNT, SU, AVG, WAX Nit) bascadas em agrupamentos de valores de um campo especifico. Em outras palavras, caso necessério calcular a média de salirio de cada cargo registrado na cabela TE_ANCTOWRIOS, em vex de realizar uma expresso SQL de média (#46) para cada cargo manualmente, é possivel automatizar esta consulta por meio do par’- metro ROU? 3 Sintaxe: SELECT operagdo FROM tabeTa GROUP BY canpo peng SO Exemplo: ‘Com base no caso citado no inicio deste tépico, a expresséo SQL que calcula a média do salrio de cada cargo dos funcionsrios registrados na tabela TB FUNCIONARIOS 6a seguinte: SELECT CARGO, AVG(SALARZO) FROM TB_FUNCIONARIOS GROUP BY CARD; Resultado: canco AVG(SALARIO) Adninistrador de Banco de Dados 2600, pnalista de at 2300 Analista de Marketing 00 snalista de Negécios 3000 analista de Sistenas 3500 Progranador 00 Note que foi incluido 0 campo Rd como retorno de consulta logo no inicio a expresso. Tal inclusio tornard mais bem-organizado o conjunto de registros retornados por esta consulta, exibindo o nome do cargo antes da média salarial 3.7.8 Parametro HAVING O argumento HAVING é muito similar ao parametro weRe.E utilizado para filtrar quais registtos devem ser abordados na consulta em questi. A diferenca é que a clausula HAVING € a que deve ser utilizada ao se usar o argumento GROUP 8, pois seu filtro ba- seia-se em operagées agrupadas disponibilizadas por este comanda. Sintaxe SELECT overago FROM tabels GROUP BY cango HAVING condicses Exemplo: Supondo a mesma necessidade do t6pico anterior, de obter 0 salirio médio de cada cargo dos funciondrios cadastrados na tabela TB_FUNCIONARIDS, porém exibir apenas 0s cargos cujos salarios médios sejam abaixo de R$ 1000,00, deve-se utilizar 2 seguinte expresso SQL: SELECT CARGO, AVG(SHLARED) FROM TBLFLNCIONARIOS GROUP BY CARGO HAVING AVG(SALARID) > 20005, 74 Resultado: asco Dévimistrador de Banco de Dados nalista de BF nalista de Marketing dnalista de Sistenas PostgreSQL » Guia do Programador AVGSALARTO) 2600 2300 00 1500 capituLo 4 Gerenciando um | banco de dados Gerenciar um banco de dados é uma tarefa que, dependendo da complexidade dos bancos em questdo e das ferramentas utilizadas, pode ser ficil ou extremamente complesa, Existem diversas ferramentas que realizam esta ponte entre 0 usuario admi- nistrador e 0 PostgreSQL, algumas delas, inclusive, abordadas neste livro, porém é importante saber 0 que cada comando destas ferramentas realiza em cada ago. Por este motivo, primeiro serd apresentado o psql, queé 0 cliente mais comum wtiizado para esta fungao entre os disponiveis. Outra vantagem do psql é que o mesmo pode ser obtido para todas as plataformas em que o PostgreSQL pode ser executado. ‘Apés conhecer os comandos e interagir com psql, outras formas de adminis- tragao do PostgreSQL serao abordadas neste livro, O leitor deve ficar ciente de que se alguma ferramenta grifica limitar suas agdes em algum momento, o mesmo poder recorter a0 psql para ter liberdade toral na escrita de seus comandos & sintaxes SQL. Para os leitores que desejarem, o Apéndice B aborda padres de nomenclatura para os objetos de um banco de dados, recurso que pode ser util para trabalhos em equipe 4.1 psql ‘Antes de iniciar a abordagem do psq] neste capitulo, uma breve introdugio a fer- ramenta se faz necesséria © psql é 0 programa-cliente que acompanha o PostgreSQL em suas instalagdo padrdo, além da forma mais simples e répida de realizar os primeiros acessos no 75 16 ____PostyreSQL » Guia do Programador servidor. E uma ferramenta que opera em modo texto, o que atualmente € uma desvantagem diante de outras opgbes no que diz respeito & praticidade. Contudo, 0 modo mais abrangente, pois permite que todo ¢ qualquer comando SQL seja completamente manipulado e altervel pelo usuario, Muitas outras ferramentas de administragao do PostgreSQL utilizam uma co- nexio similar ao do psql para executarem suas ages, utilizando a interface grifica apenas para interagir com o usuario, Nestes casos, correo inverso das caractersticas do psql: ganha-se com praticidade do uso do mouse, mas perde-se um pouco de liberdade com a falta de acesso ao comando SQL que sera executado, A decistio de qual ferramenta deve ser utlizada para administrar 0 PostgreSQL. € do leitor e da pessoa que administra o servidor. Muitas vezes mais de uma ferra- menta se faz necesséria, pois,em grande parte das atividades, as ferramentas graficas Go as mais recomendadas, enquanto em outros momentos, como exportagao de dados e/ou casos especificos de seguranga, © psql pode ser uma alternativa mais, interessante, Os préximos tépicos apresentam diversas ag6es de administragio de banco de dados utilizando o psql. A maioria destas atividades também ser abordada com 0 uso da ferramenta phpPgAdmin (grafica e web) no Capitulo 5. Para obter ajuda no proprio terminal do psql € possivel utilizar os seguintes comandos Comando —_ Descigio \n Lista as opgdes de ajuda para a sintaxe SQL. \? Lista as opgbes de ajuda para os comandos do pq 4.2 Gerenciando tablespaces Antes de conhecer os comandos que criam e gerenciam bancos de dados no PostgreSQL, é importante conhecer 0 conceito de tablespaces e como gerencié-las em seu servidor. 0s tablespaces slo definigtes de locais para armazenamento ligico das infor- ‘mages do servidor. Em outras palavras, trata-se de diretérios existentes em seu. sistema operacional. Eles existem para que seja posstvel armazenar informagbes do servidor em locais distintos, o que pode ocorrer pelos mais diversos motives: politicas de backup, utlizagao de mais de um disco rigido, organizagao etc. Capitulo 4» Gerenciando um banco de dedos 7 Os préximos t6picos demonstrario como gerenciar tablespaces no PostgreSQL. Contudo,a sua utilizagao propriamente dita poderd ser vista mais adiante, nos t picos de criagio de banco de dados e criagio de tabelas, que sio os comandos que permitem utilizar tablespaces como argumentos em suas sintaxes. 4.2.1 Criando um tablespace Para criar uma tablespace utilize a sintaxe a seguir CREATE TABLESPACE. none LOCATION "TocaTizag Na sintaxe apresentada, é necessério informar 0 nome do tablespace que esta sendo criado na variével nove e informar, na variavel Tectizario, o enderego légico (ditetério) onde os objetos que utilizario este tablespace devem ser armazenados. ‘Allém disto,€ necessario que o ditet6rio em questo esteja vazio para que o comando tena sucesso em sua execuctio, e que este usuirio tenha direitos de utilizagao no sistema operacional. 4.2.2 Visualizando tablespaces Para visualizar todos os tablespaces disponiveis ¢ cadastrados em seu servidor, utilize o comando a seguir: \eb Por meio deste comando, todos as tablespaces disponiveis serdo listados na tela Os tablespaces que iniciam por pa_ so internos do PostgreSQL e nao devem ser excluidos. 4.2.3 Alterando um tablespace Sto duas as informagies possiveis de serem alteradas em um tablespace: nome do tablespace e nome do seu proprietario. Por questies internas do PostgreSQL, nao € possivel alterar 0 enderego lgico de um tablespace. Se esta for a necessidade, o processo deve ser de exclusio e re- criagao do mesmo, com sua respectiva politica de backup e restore, caso haja outras informagBes armazenadas. Para alterar o nome de um tablespace utilize a sintaxe a seguir: [ALTER TABLESPACE none RENAME TO novo. none; 78 ___PostgeSQl» Guia do Programador Para alterar o nome do proprietério de um tablespace utilize a sintaxe a seguir: ALTER TABLESPACE none OER TO row propriesério: Em ambos os casos, é necessirio indicar o nome do tablespace em questo na variavel none, No caso de alterago do nome, deve-se informar © novo nome do tablespace na variavel nove_sone, € no caso de alteracdo de proprietério, o nome do ‘mesmo em novo preprietrfo 4.2.4 Excluindo um tablespace Para excluir um tablespace utilize a sintaxe apresentada a seguir CROP TABLESPACE none; Nao é possivel excluir um tablespace que nio esteja vazio, Neste caso, também, 1ndo € possivel utilizar a opeo CASCADE para exclus-lo mesmo com os objetos existentes como ocorre em algumas outras operaces. E necessdrio esvaziar todo o diret6rio do tablespace c, em seguida, exclulo por meio do comando DROP TABLESPACE 4.3 Gerenciando um banco de dados 0 objeto mais basico em um SGBD 6 o banco de dados, pois qualquer outro objeto que venha a ser criado posteriormente como tabelas, vis6es e procedures, todos estardo de alguma forma diretamente ligados com dados armazenados em algum local, sendo “local” algum banco de dades. Criar um banco de dados é apenas a ponta do iceberg. Um banco de dados deve ser criado de forma otimizada para economizar recursos de hardware e para atender de forma répida e eficiente o seu nso, deve ser seguro para que as informagdes sejam utilizadas somente por pessoas autorizadas, deve ser consistente e nfo deve falhar. Conhecer todas estas necessidades ¢ gerencid-las é 0 que diferencia um desenvol- vedor de um DBA. Neste capitulo serao apresentados os comandos basicos sobre gerenciamento de um banco de dados, enquanto nos prdximos sero abordadas as ‘questdes relativas 4 otimizagao e seguranga. 4.3.1 Criando um banco de dados Para criar um banco de dados é necessério utilizar 0 comando CREATE DATABASE ¢,ne- cessariamente, possuir tal direito de acesso (role CREATEDB no PostgreSQL). A sintaxe deste comando é simples, como desmontram as linhas a seguir: (CREATE DATABASE ane [argunentos);

Você também pode gostar