Módulo Um. PostgreSQL - Funcionalidades BásicasB - PDF
Módulo Um. PostgreSQL - Funcionalidades BásicasB
Download "Módulo Um. PostgreSQL - Funcionalidades BásicasB"
Washington Mirandela Galindo
1 Módulo Um Criação de bancos de dados Criação de esquemas, tabelas, visões, índices e clusters. Integridade referencial e integridade de domínios. Funções de agregação, matemáticas, data e hora, manipulação de strings, formatação e endereçamento de rede. Operações especiais entre tabelas união, intersecção e diferença. Visões,funções armazenadas com e sem retorno e triggers. Conexões nativas, ODBC e JDBC. 1
2 Modelo Relacional: Consolidado no mercado SGBDs Open Source PostgreSQL, MySQL, Firebird... SGBDs proprietários Oracle, Sybase, DB2, MS SLQServer, Interbase... Relações Integridade referencial Integridade de domínio 2
3 Modelo Relacional: Relação Tabela Tabela armazena em suas colunas os valores relativos aos atributos das entidades modeladas. Cada domínio é formado por um conjunto de valores possíveis e um tipo de dado para determinado atributo (coluna). Salário Entre 350,00 e ,00 unidades de moeda Tipo numeric(8,2) ou double 3
4 Modelo Relacional: Relação Tabela Extensão Ou População Funcionario Codigo Nome João Maria Ana Salario Intenção ou Esquema 2000 Pedro 1000 Domínio 4
5 Modelo Relacional: Integridade referencial implementa os relacionamentos entre entidades (tabelas) Peça Chave primária Fornecimento Somente são permitidas as entradas para códigos de peças em Fornecimento se os valores existirem em Peça Chave estrangeira 5
6 Modelo Relacional: Integridade de domínio Fornecimento Não são admitidos valores nulos ou valores negativos Tipo - numeric 6
7 Psql interface de linha de comando, terminal interativo psql -U postgres psql dbmapas -U postgres psql h localhost -d dbmapas -U postgres psql h localhost -d dbmapas -U postgres p U usuário -u obriga a solicitação de usuário e senha -h host -d database -p port 7
8 Psql CREATE TABLESPACE dataspace OWNER postgres LOCATION C:/Arquivos deprogramas/postgresql/8.1/data/dados'; CREATE DATABASE banco OWNER postgres TEMPLATE template1 TABLESPACE dataspace; SO createdb -D dataspace -O postgres T template1 banco -U postgres psql banco -U postgres 8
9 Psql Create table cliente ( codcli numeric(4) primary key not null, nome varchar(40), endereco varchar(100), idade date); \q drop database banco; 9
10 SO pg_dump -f dbmapas.sql -C -d -U postgres banco pg_dump help parâmetros para o pg_dump: -f : arquivo de saída -C : comandos para a criação do banco -d : copia dados utilizando comandos INSERT -U : usuário -a : copia somente os dados, sem o esquema
11 PgAdmin III O PgAdmin III é uma interface gráfica do PostgreSQL, através da qual podemos criar os mais diversos tipos de objetos no banco de dados, como tablespaces, bancos de dados, esquemas, tabelas, visões, roles... Além da facilidade para a criação dos objetos, é possível usar ferramentas para edição e execução de comandos SQL, visualização dos dados e propriedades dos objetos. 11
12 PgAdmin III 12
13 PgAdmin III Criação de objetos Databases Schemas Tabelas Índices Integridade referencial Tabelas de sistema 13
14 phppggis Roda no browser É possível criar os seguintes objetos: Databases Schemas Tabelas Visões Seqüências Funções Domínios 14
15 phppggis 15
16 phppggis Roles Usuários Tablespaces Backup de dados e/ou esquema 16
17 phppggis Visualização de mapas 17
18 Psql Criando um banco de dados: create database banco owner postgres template template1 tablespace dataspace; Parâmetros: Owner: proprietário do banco de dados Template: modelo de banco de dados Encoding: método de codificação multibyte Tablespace: área para criação do banco de dados Connecton limit: número limite de conexões 18
19 Psql Criando um banco de dados: create database banco owner postgres template template1 tablespace dataspace; Parâmetros: Owner: proprietário do banco de dados Template: modelo de banco de dados Encoding: método de codificação multibyte Tablespace: área para criação do banco de dados Connecton limit: número limite de conexões psql -d banco -U postgres 19
20 Psql Eliminando um banco de dados: drop database banco; Criação de esquemas: create schema papelaria; Um esquema é formado por um conjunto de objetos de um banco de dados. O usual é atribuir esquemas a usuários específicos. Por exemplo, é possível ter dois usuários com atribuições diferentes sobre os objetos do mesmo banco de dados, cada qual com o seu esquema próprio. create schema authorization usuario; Cria um esquema com o nome usuario e autorização para o usuário o usuário já deve ter sido criado. 20
21 Caso o esquema não seja informado a tabela é criada no esquema public Psql Criação de tabelas: create table usuario.aluno ( cpf numeric (11) not null primary key, rg varchar(20), nome varchar(60), endereco varchar(80), cidade varchar(20), telefone numeric(10), datanasc date, peso numeric(4,2), altura numeric(3,2)); Definição de constraint chave primária 21
22 Caso o esquema não seja informado a tabela é criada no esquema public Psql Criação de tabelas: create table usuario.modalidade ( codmod numeric(4) not null primary key, descmod varchar(20)); create table usuario.turma ( codturma numeric(4) not null primary key, codmod numeric(4), sala varchar(20), constraint fk_modalidade foreign key (codmod) references usuario.modalidade); Definição de constraint chave estrangeira 22
23 Psql Criação de índices: Índices são essenciais aumento de performance no banco de dados create index indsala on usuario.turma(sala); create index indlocal on usuario.local(pais,estado,cidade); É possível indexar uma ou mais colunas de uma tabela. Os índices devem ser determinados a partir de aplicativos de usuários, com base nas consultas mais freqüentes realizadas sobre a tabela. 23
24 Psql Tabelas de sistema Catálogo pg_tables pg_views pg_user pg_roles pg_index pg_type pg_tablespace entre outras. select * from pg_tables; 24
25 pgadminiii Criação de tabelas 25
26 pgadminiii Criação de tabelas 26
27 pgadminiii Criação de tabelas Definição de colunas 27
28 pgadminiii Criação de tabelas Definição de chaves 28
29 pgadminiii Criação de índices 29
30 pgadminiii Criação de índices 30
31 pgadminiii Criação de índices 31
32 pgadminiii Tabelas de sistemas não é possível acessar o catálogo do PostgreSQL, diretamente pelo pgadminiii. 32
33 phppggis Criação de tabelas 33
34 phppggis Criação de tabelas Informe as propriedades da tabela 34
35 phppggis Criação de tabelas SERIAL- auto incremento Character varying varchar 35
36 phppggis Criação de índices 36
37 phppggis Criação de índices Defina as propriedades do índice 37
38 phppggis Tabelas de sistemas Não é possível acessar o catálogo de sistema diretamente pelo phppggis, assim como no PgAdmin III 38
39 Exercícios: Crie um novo banco de dados no PostgreSQL, usando como template o template1. A partir do modelo conceitual desenvolvido no exercício da página 27, crie as tabelas, chaves primárias e estrangeiras necessárias. As tabelas podem ser criadas no esquema public. Não é necessária a criação de um novo esquema. 39
40 Módulo Dois Introdução a SQL DDL, DML e DCL Consultas Operações especiais união, intersecção e diferença Funções de agregação, matemáticas, data e hora, string, formatação, endereçamento de rede. Visões Funções e procedimentos armazenados Triggers Exercícios 40
41 Introdução a SQL SQL - Structure Query Language - Linguagem de consulta estruturada. Desenvolvida para definir, manipular e controlar o acesso a dados de bancos de dados relacionais. Subdivide-se em DDL, DML e DCL. Documentação disponível em: 41
42 Introdução a SQL DDL - Data Definition Language Através deste conjunto de instruções são criados, alterados e eliminados todos os objetos do banco de dados, como tabelas, visões, índices... create table cliente ( codcli numeric(10) primary key, nomecli varchar(40), create view v_cliente as ( select nomecli, from cliente); varchar(100)); alter table cliente add column cpf numeric(11); drop table cliente cascade; 42
43 Introdução a SQL DML - Data Manipulation Language Conjunto de instruções que permitem acessar, inserir, alterar e excluir os dados do banco de dados. Select * from v_cliente; Insert into cliente values ( 1, Machado de Assis, ); Delete from cliente; Delete from cliente where codcli = 100; update cliente set = where codcli = 1; 43
44 Introdução a SQL DCL - Data Control Language Conjunto de instruções usado para controlar o acesso aos dados. Através delas é possível criar usuários, roles, e definir atribuições de sistema ou sobre objetos do banco de dados. create user fulano; create role teste; grant insert, delete, update, select on cliente to teste; grant teste to fulano; 44
45 Introdução a SQL Scripts SQL Os scripts são formados por uma seqüência de instruções DDL, DML, DCL. São chamados a partir de linha de comando do sistema operacional ou São executados através de um editor SQL. 45
46 Introdução a SQL Exemplo de script sql: -- início script CREATE TABLESPACE dataspace OWNER postgres LOCATION 'C:/Arquivos de Programas/PostgreSQL/8.1/data/dados'; CREATE DATABASE banco OWNER postgres TEMPLATE template1 TABLESPACE dataspace; \c banco postgres; (\connect dbname user) create schema projetos; set search_path to projetos;... 46
47 Introdução a SQL Exemplo de script sql: -- continuação script drop table projetos.fornecimento; drop table projetos. peca; drop table projetos.projeto; drop table projetos.fornecedor; create table projetos.peca (Cod_Peca varchar(4) not null, PNome varchar(15), Cor varchar(15), Peso numeric(6,2), Cidade varchar(20), constraint pk_peca primary key (Cod_Peca));... 47
48 Introdução a SQL Exemplo de script sql: -- continuação script INSERT INTO projetos.projeto VALUES ('J4','CONSOLE', 'ATENAS'); INSERT INTO projetos.projeto VALUES ('J5','COLLATOR', 'LONDRES'); INSERT INTO projetos.projeto VALUES ('J6','TERMINAL', 'OSLO'); INSERT INTO projetos.projeto VALUES ('J7','TAPE', 'LONDRES');... INSERT INTO projetos.fornecimento VALUES ('F1','P1','J1',200); INSERT INTO projetos.fornecimento VALUES ('F1','P1','J4',700); INSERT INTO projetos.fornecimento VALUES ('F2','P3','J1',400); INSERT INTO projetos.fornecimento VALUES ('F2','P3','J2',200); INSERT INTO projetos.fornecimento VALUES ('F2','P5','J2',100); 48
49 Introdução a SQL Executando um script: O script dado como exemplo está disponível no material de apoio. Faça o download. Para executar o script pelo psql digite no prompt do SO: psql -f criatab_pos.sql -U postgres ou abra o editor SQL pelo PgAdminIII e abra o arquivo de script. Execute-o. com o banco já criado, vamos a próxima etapa... 49
50 Introdução a SQL Consultas: retornam dados a partir de uma ou mais tabelas do banco de dados. select * from peca; select cod_peca, pnome from peca; select cod_peca, quantidade from fornecimento; select peca.cod_peca, pnome, quantidade from peca, fornecimento where peca.cod_peca = fornecimento.cod_peca; 50
51 Introdução a SQL Junção natural: verifica igualdade de chaves primária e estrangeira entre duas tabelas. select peca.cod_peca, pnome, quantidade from peca, fornecimento where A coluna cod_peca existe na tabela Peca e também na tabela Fornecimento, por isso, é preciso indicar de qual tabela se deseja recuperar o campo. peca.cod_peca = fornecimento.cod_peca; 51
52 Introdução a SQL Sub-consultas: são instruções SQL embutidas dentro de outras instruções. Sua finalidade é recuperar valores de tabelas ou listas de valores, para fins de comparação. A consulta mais externa compara as cidades da tabela peca com a lista criada a partir da consulta mais interna select pnome, cidade from peca where cidade in ( A consulta mais interna retorna uma lista com o nome de todas as cidades de fornecedores. select distinct cidade from fornecedor); 52
53 Introdução a SQL Comando ALTER: altera a estrutura dos objetos criados através do comando create... set search_path to projetos; alter table fornecedor add column varchar(80); alter table peca rename to equipamento; alter table fornecedor drop column ; alter role teste rename to roleproj; alter schema projetos owner to roleproj; alter index indlocal set tablespace pg_default; 53
54 Introdução a SQL Comando DROP: elimina qualquer objeto criado através do comando create... set search_path to projetos; drop table fornecimento; drop table fornecedor cascade; drop index indlocal; drop view v_cliente; drop schema projetos cascade; drop database banco; drop tablespace dataspace; 54
55 Introdução a SQL Comandos: Insert - popula as tabelas INSERT INTO PECA VALUES ('P2','BOLT','VERDE', 17, 'PARIS'); INSERT INTO FORNECEDOR VALUES ('F5', 'ADAMS',30, 'ATENAS'); INSERT INTO PROJETO VALUES ('J1','SORTER', 'PARIS'); INSERT INTO FORNECIMENTO VALUES ('F2','P5','J2',100); 55
56 Introdução a SQL Comandos: Update - atualiza os dados das tabelas UPDATE PECA SET PESO = 20 WHERE COD_PECA = P1 ; UPDATE FORNECIMENTO SET QUANTIDADE = QUANTIDADE ; UPDATE FORNECEDOR SET STATUS = 30 WHERE FNOME = FULANO ; 56
57 Introdução a SQL Comandos: Delete - elimina uma linha ou linhas a partir de um critério estabelecido pelo usuário. DELETE FROM FORNECIMENTO WHERE DATA < 01/01/2006; DELETE FROM PROJETO WHERE CIDADE = ROMA ; DELETE FROM FORNECEDOR; 57
58 Introdução a SQL Operações relacionais: União: retorna todas os valores indicados para as relações envolvidas na operação. SELECT CIDADE FROM FORNECEDOR UNION SELECT CIDADE FROM PECA UNION SELECT CIDADE FROM PROJETO; 58
59 Introdução a SQL Operações relacionais: Intersecção: retorna somente os valores que são comuns as duas relações para os atributos solicitados. SELECT CIDADE FROM FORNECEDOR INTERSECT SELECT CIDADE FROM PECA; 59
60 Introdução a SQL Operações relacionais: Diferença: retorna os valores presentes na primeira relação que não estão na segunda relação. A operação de diferença é a única em que a ordem das relações interfere no resultado. SELECT CIDADE FROM FORNECEDOR EXCEPT SELECT CIDADE FROM PECA; 60
61 Introdução a SQL Operadores: Fonte: 61
62 Introdução a SQL Operadores: select quantidade from fornecimento where quantidade < 300; select quantidade from fornecimento where quantidade <> 300; select quantidade from fornecimento where quantidade = 300; select cidade from peca where cidade = any (select cidade from projeto); select cidade from peca where cidade = some (select cidade from projeto); select cidade from peca where cidade in (select cidade from projeto); select cod_peca, quantidade, (quantidade*0.1) as porcentual from fornecimento where cod_peca = 'P1'; select quantidade from fornecimento where quantidade between 300 and 500; 62
63 Introdução a SQL Operadores: select * from peca where pnome like 'B%'; select * from peca where pnome ilike b%'; select * from projeto where cidade = 'ATENAS' or cidade = 'OSLO'; select * from projeto where cidade ilike 'atenas' or cidade ilike 'oslo'; select cod_peca from peca where peso notnull; select cod_peca from peca where peso isnull; select (numero::integer)*2 from teste; O campo numero foi definido como char e transformado em inteiro para fazer a multiplicação 63
64 Introdução a SQL Operadores - exercício create table teste ( id numeric(20),numero char(10)); insert into teste values (1, 1000 ); insert into teste values (2, 11/21/2006 ); select * from teste; select (numero::integer)/2 from teste where id =1; select (numero::date)+30 from teste where id =2; select (numero::timestamp) from teste where id =2; 64
65 Introdução a SQL Funções de agregação: select count(*) from fornecimento; -> conta linhas select sum(peso) from peca; -> soma dos valores do campo select avg(peso) from peca; -> média dos valores do campo select min(peso) from peca; -> mínimo dos valores do campo 65
66 Introdução a SQL Funções matemáticas: select trunc(78.9); -> inteiro select sqrt(121); -> raiz quadrada select power(2,4); -> exponencial select abs(-23.76); -> absoluto select trunc(peso) from peca; 66
67 Introdução a SQL Funções com strings: select fnome sobrenome from fornecedor; -> concatenação select bit_length(fnome) from fornecedor; -> número de bits select char_length( fulano ); -> número de caracteres select upper( fulano ); -> maiúsculas select lower( FULANO ); -> minúsculas select substring('olivia Palito' from 8); -> string a partir da posição indicada 67
68 Introdução a SQL Funções de manipulação e Execute as três primeiras instruções para fazer os testes!!! formatação de data e hora: alter table fornecimento add column data date; update fornecimento set data = current_timestamp; select * from fornecimento; select to_char(data, 'Day, DD HH12:MI:SS') from fornecimento; -> dia da semana, dia do mês e hora select to_char(data, 'Month') from fornecimento; -> mês select to_char(data, 'DD') from fornecimento; -> dia do mês select to_char(data, 'DDD') from fornecimento; -> dia do ano 68
69 Introdução a SQL Funções de formatação de data e hora: select to_char(data, 'HH12:MI:SS') from fornecimento; select to_date('12/05/2006', 'DD/MM/YYYY'); insert into fornecimento values ('F3','P2','J4',900,to_date('01/01/2006','dd/mm/yyyy')); select to_char(data, HH24:MI:SS') from fornecimento; select to_char(data, 'HH24:MI:SS') from fornecimento; 69
70 Introdução a SQL Funções de endereçamento de rede: select netmask(' '); -> retorna a máscara de rede; select network(' '); -> extrai a parte da rede do endereço select cidr('10.1.2'); -> retorna o número de bits de uma máscara de rede sem identificação de classe select family(' '); -> retorna a família da rede, se ipv4 ou ipv6 select family('3ffe:6a88:85a3::0370:7344'); 70
71 Introdução a SQL Operações especiais: UNIÃO Retorna todos os valores de um ou mais atributos de tipos compatíveis das duas relações. SELECT FNOME, CIDADE FROM PROJETOS.FORNECEDOR UNION SELECT CNOME, CIDADE FROM PROJETOS.CLIENTE; 71
72 Introdução a SQL Operações especiais: DIFERENÇA Retorna os valores de um ou mais atributos de tipos compatíveis que pertencem a primeira relação mas não a segunda. SELECT CIDADE FROM PROJETOS.FORNECEDOR EXCEPT SELECT CIDADE FROM PROJETOS.CLIENTE; 72
73 Introdução a SQL Operações especiais: INTERSECÇÃO Retorna os valores de um ou mais atributos de tipos compatíveis que são comuns as duas relações. SELECT CIDADE FROM PROJETOS.FORNECEDOR INTERSECT SELECT CIDADE FROM PROJETOS.CLIENTE; 73
74 Introdução a SQL Visões: são objetos do banco de dados que tem a finalidade de filtrar dados para o usuário, a partir de uma ou mais tabelas, de forma a garantir a segurança e controle de acesso a estes dados. create view v_cliproj as ( select Cnome, Jnome from projetos.cliente, projetos.cliproj, projetos.projeto where projetos.cliente.cod_cli = projetos.cliproj.cod_cli and projetos.projeto.cod_proj = projetos.cliproj.cod_proj); select * from v_cliproj; 74
75 Introdução a SQL Funções: são utilizadas para obter resultados a partir de um conjunto de dados do banco de dados. Quando armazenadas no banco de dados, aumentam a performance de processamento e diminuem a sobre carga no tráfego de rede, assim como os procedimentos armazenados. Estes por sua vez, são responsáveis pelas transações no banco de dados. Uma transação se caracteriza pela modificação do banco de dados, através de comandos de inserção, exclusão ou alteração de dados. 75
76 Introdução a SQL Funções: CREATE OR REPLACE FUNCTION idade(char) RETURNS integer AS ' DECLARE idade integer; BEGIN select (current_date - datanasc)/365 into idade from aluno where nome = $1; RETURN idade; END; ' LANGUAGE plpgsql; 76
77 Introdução a SQL Funções: CREATE OR REPLACE FUNCTION media(char) RETURNS numeric AS ' DECLARE med numeric; BEGIN select avg(quantidade) into med from fornecimento where cod_fornec = $1; RETURN med; END; ' LANGUAGE plpgsql; 77
78 Introdução a SQL Procedimentos: funções sem retorno CREATE OR REPLACE FUNCTION projetos.aumenta(numeric) returns numeric AS $BODY$ BEGIN update projetos.fornecimento set quantidade = quantidade + $1; return null; END; $BODY$ LANGUAGE 'plpgsql'; SELECT projetos.aumenta(2000); 78
79 Introdução a SQL Triggers: Gatilhos são disparados a partir de um evento no banco de dados, como exclusão, inserção ou atualização. Podem acontecer antes ou depois destes eventos. No PostgreSQL os gatilhos executam procedimentos ou funções sem retorno. 79
80 Introdução a SQL CREATE OR REPLACE FUNCTION backupfor() RETURNS trigger AS $$ BEGIN insert into bakfornec (SELECT * FROM FORNECEDOR); RETURN NULL; END; $$ LANGUAGE plpgsql; CREATE TRIGGER tbackup AFTER DELETE ON fornecedor O gatilho indicado é responsável por executar a função que faz uma cópia das linhas da tabela fornecedor para uma tabela auxiliar, toda vez que uma exclusão é executada. FOR EACH ROW EXECUTE PROCEDURE backupfor(); 80
81 Introdução a SQL - Exercícios 1) Adicione uma coluna a tabela Peça, nomeando-a como valor. 2) Atualize esta tabela adicionando valores a nova coluna. 3) Crie um procedimento que aumente em 3% os valores das peças. 4) Altere o procedimento anterior passando o percentual como parâmetro. 5) Crie uma função que retorne o somatório dos valores das peças. 6) Crie uma visão que retorne os nomes dos projetos e o nome das peças que foram fornecidas para estes projetos. 7) Crie uma visão que retorne os nomes das peças e suas quantidades, somente das peças que tem quantidade inferior a quantidade média fornecida. 81
82 Módulo Três Estrutura de tabelas: Uma tabela é definida a partir de uma classe do PostgreSQL. Assim, para verificar a estrutura de uma tabela, é preciso acessar três tabelas do catálogo do sistema. São elas - pg_class, pg_attribute, pg_type. pg_class armazena as propriedades de classes como tabelas, visões, índices, etc... pg_attribute guarda as propriedades dos attributos/colunas das tabelas e, pg_type descreve os tipos de dados disponíveis no sistema 82
83 Módulo Três Estrutura de tabelas: select relname, attname, typname from pg_class, pg_attribute, pg_type where pg_class.oid=attrelid and pg_type.oid = atttypid and relname = 'pessoa'; 83
84 Módulo Três Estrutura de tabelas: É claro que você pode utilizar uma interface para visualizar as estruturas das tabelas ou outros objetos. 84
85 Módulo Três Agrupamento de tabelas: o agrupamento pode ser entendido de duas formas - através de operações de junção - join, já abordadas no módulo II ou, como tabelas clusterizadas, visando ganho de performance no banco de dados. 85
86 Módulo Três Agrupamento de tabelas: Clusters - um cluster pode ser considerado um agrupamento de tabelas ou ainda uma agrupamento de linhas em uma tabela.deve ser utilizado quando duas tabelas são frequentemente utilizadas em consultas ou visões, no primeiro caso e, para agrupar linhas de uma mesma tabela de possuam o mesmo valor para um índice. 86
87 Módulo Três - Agrupamento de tabelas: O PostgreSQL faz agrupamento de linhas de uma tabela e não agrupamento de tabelas. Neste caso é necessário que o índice já tenha sido criado na tabela. A partir do índice, o comando CLUSTER informa ao gerenciador que as linhas de uma tabela devem ser agrupadas por aquele índice. Quando é feita a consulta sobre a tabela, tendo como parâmetro de busca os valores do índice, a busca obviamente torna-se mais rápida, pois as linhas já estão ordenadas pelo valor do índice. É bom lembrar que o cluster é estático. Isto é, as novas inserções na tabela não são consideradas até que o comando seja executado novamente. 87
88 Módulo Três Agrupamento de tabelas: Considerando que se queira consultar a tabela fornecimentos com mais freqüência passando como parâmetros os valores dos projetos, é importante indexá-la e criar um cluster a partir do índice. 88
89 Módulo Três Agrupamento de tabelas: create index indproj on fornecimentos(cod_proj); cluster indproj on fornecimentos; 89
90 Módulo III Conexões nativas Para acessar o banco de dados, são necessárias interfaces implementadas através de linguagens de programação. Para isso existem algumas formas de conectar a aplicação ao SGBD. Conexão nativa ODBC JDBC ponte ODBC-JDBC 90
91 Módulo III Conexões nativas Conexão nativa: este tipo de conexão é feito através de funcionalidades próprias das linguagens e não tem a intermediação de um driver para acesso ao banco de dados; Exemplo PHP: $conexao = pg_connect('host=localhost port=5432 dbname=postgres user=postgres password=postgres'); 91
92 Módulo III Conexões nativas Exemplo Perl: $dbh = DBI->connect($db, $db_user, $db_pass, { RaiseError => 1, AutoCommit => 0 } ) die "Erro ao conectar ao banco: $DBI::errstr\n"; Exemplo Python: con = PgSQL.connect(host= localhost', database='banco', user= postgres', password= postgres') 92
93 Módulo III ODBC ODBC: é uma tecnologia Microsoft para acessar a diversos bancos de dados. O driver ODBC é fornecido pelo fabricante do SGBD. BD Interface ODBC Base de Dados 93
94 Módulo III ODBC: é através do driver ODBC que a estrutura interna do banco de dados e os tipos de dados são reconhecidos, bem como a conversão dos dados é feita, caso seja necessário. É um especificação para acesso a bancos de dados, com funções para conexão e execução de comandos e transações. 94
95 Módulo III ODBC Instalação do Driver Painel de Controle Configuração 95
96 Módulo III ODBC Configuração 96
97 Módulo III ODBC Teste de conexão ODBC: Acesse o BrOffice.org 97
98 Módulo III ODBC Teste de conexão ODBC: Acesse o BrOffice.org 98
99 Módulo III ODBC Teste de conexão ODBC: Acesse o BrOffice.org 99
100 Módulo III ODBC Teste de conexão ODBC: Acesse o BrOffice.org 100
101 Módulo III ODBC Teste de conexão ODBC: Acesse o BrOffice.org 101
102 Módulo III <? ODBC - Exemplo Php: $conexao = odbc_connect('postgresql30','postgres', 'postgres'); $instrucao ="select cod_cli, cnome from cliente"; $resultado = odbc_exec($conexao,$instrucao); while ($linha = odbc_fetch_array($resultado)) { print "<pre>"; echo $linha[cod_cli],"----", $linha[cnome]; print "<pre>";};?> Digite para a conexão: datasource usuario senha 102
103 Módulo III JDBC Um driver JDBC é uma interface, uma API como ODBC, para acessar bancos de dados usando a linguagem de programação Java. Tem as mesmas funcionalidades de um driver ODBC, como funções de conexão, recuperação de dados, controle de transações, etc... Não precisa ser instalado - o driver é um arquivo jar. Só é necessário mapear a localização do arquivo no disco. 103
104 Módulo III JDBC - Exemplo import java.sql.*; import java.io.*; public class post { public static void main (String args [ ] ) throws SQLException, IOException { System.out.println ("Carregando o driver Jdbc... " ); try { Class.forName("org.postgresql.Driver");} catch(classnotfoundexception e) { System.out.println("O drive nao carrega..."); e.printstacktrace(); return; } 104
105 Módulo III JDBC - Exemplo System.out.println("Conectando..."); // Cria a conexão com o banco de dados String url = "jdbc:postgresql://localhost/teste?user=postgres&password=postgres"; Connection conn = DriverManager.getConnection(url); // Cria uma instrução SQL para consulta dos dados Statement stmt = conn.createstatement(); // Passa como parâmetro a instrução que retorna um conjunto de registros ResultSet rs = stmt.executequery("select cod_cli, cnome from cliente"); 105
106 Módulo III JDBC - Exemplo // lê o conjunto de registros enquanto não for fim de cursor while (rs.next()) { // variáveis que recebem os valores lidos da tabela double c = rs.getdouble("cod_cli"); String n = rs.getstring("cnome"); // retorna na tela os valores armazenados nas variáveis System.out.println(c + " " + n + " " ); } stmt.close(); // fecha o cursor conn.close();// fecha a conexão } 106
107 Módulo III JDBC - Exemplo Não esqueça de incluir o driver JDBC no CLASSPATH. Painel de controle Sistema Guia Avançado Variáveis de Ambiente CLASSPATH=C:\Arquivos de programas\postgresql\8.1\jdbc\postgresql jdbc3.jar CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql.jar 107
108 Módulo III JDBC - Exemplo Eclipse + Plugin + JDBC + PostgreSQL Netbeans + JDBC + PostgreSQL Para este exemplo vamos usar: Eclipse + DBEdit + JDBC + PostgreSQL 108
109 Módulo III JDBC - Exemplo Adicione o plugin do DBEdit ao Eclipse Altere o ambiente da perspectiva Java para a perspectiva do DBEdit 109
110 Módulo III JDBC - Exemplo Crie uma conexão com o banco usando o driver JDBC Configure a conexão com o banco de dados 110
111 Módulo III JDBC - Exemplo Crie uma conexão com o banco usando o driver JDBC Configure a conexão com o banco de dados 111