Escolar Documentos
Profissional Documentos
Cultura Documentos
Post SQL
Post SQL
Mdulo Um
Modelo Relacional:
Consolidado no mercado
SGBDs Open Source PostgreSQL,
MySQL, Firebird ...
SGBDs proprietrios Oracle, Sybase,
DB2, MS SLQServer, Interbase ...
Relaes
Integridade referencial
Integridade de domnio
2
Modelo Relacional:
Relao Tabela
Tabela armazena em suas colunas os valores
relativos aos atributos das entidades
modeladas.
Cada domnio formado por um conjunto de
valores possveis e um tipo de dado para
determinado atributo (coluna).
Salrio
Entre 350,00 e 10.000,00 unidades de moeda
Tipo numeric(8,2) ou double
Modelo Relacional:
Relao Tabela
Funcionario
Extenso
Ou
Populao
Codigo
Nome
Salario
1000
Joo
900
1001
Maria
800
1002
Ana
600
2000
Pedro
1000
Inteno
ou
Esquema
Domnio
4
Modelo Relacional:
Integridade referencial
implementa os
relacionamentos entre
entidades (tabelas)
Pea
Chave primria
Fornecimento
Somente so permitidas as
entradas para cdigos de
peas em Fornecimento se
os valores existirem
em Pea
Chave estrangeira
5
Modelo Relacional:
Integridade de domnio
Fornecimento
No so admitidos
valores nulos ou
valores negativos
Tipo - numeric
Psql
CREATE TABLESPACE dataspace OWNER postgres
LOCATION C:/Arquivos deProgramas/PostgreSQL/8.1/data/dados';
SO
createdb -D dataspace -O postgres T template1 banco -U postgres
Psql
Create table cliente (
codcli numeric(4) primary key not null,
nome varchar(40),
endereco varchar(100),
idade date);
\q
SO
pg_dump -f dbmapas.sql -C -d -U postgres banco
pg_dump help
parmetros para o pg_dump:
-f : arquivo de sada
-C : comandos para a criao do banco
-d : copia dados utilizando comandos INSERT
-U : usurio
-a : copia somente os dados, sem o esquema
- ...
10
PgAdmin III
11
PgAdmin III
12
PgAdmin III
Criao de objetos
Databases
Schemas
Tabelas
ndices
Integridade referencial
Tabelas de sistema
13
phpPgGIS
Roda no browser
possvel criar os seguintes objetos:
Databases
Schemas
Tabelas
Vises
Seqncias
Funes
Domnios
14
phpPgGIS
15
phpPgGIS
Roles
Usurios
Tablespaces
Backup de dados e/ou esquema
16
phpPgGIS
Visualizao
de mapas
17
Psql
Criando um banco de dados:
create database banco owner postgres template template1
tablespace dataspace;
Parmetros:
Owner: proprietrio do banco de dados
Template: modelo de banco de dados
Encoding: mtodo de codificao multibyte
Tablespace: rea para criao do banco de dados
Connecton limit: nmero limite de conexes
18
Psql
Criando um banco de dados:
create database banco owner postgres template template1
tablespace dataspace;
Parmetros:
Owner: proprietrio do banco de dados
Template: modelo de banco de dados
Encoding: mtodo de codificao multibyte
Tablespace: rea para criao do banco de dados
Connecton limit: nmero limite de conexes
Psql
Eliminando um banco de dados:
drop database banco;
Criao de esquemas:
create schema papelaria;
Um esquema formado por um conjunto de objetos de um
banco de dados. O usual atribuir esquemas a usurios
especficos. Por exemplo, possvel ter dois usurios com
atribuies diferentes sobre os objetos do mesmo banco de
dados, cada qual com o seu esquema prprio.
Psql
Criao de tabelas:
create table usuario.aluno (
cpf numeric (11) not null primary key,
rg varchar(20),
nome varchar(60),
Definio de
constraint
chave primria
endereco varchar(80),
cidade varchar(20),
telefone numeric(10),
datanasc date,
peso numeric(4,2),
altura numeric(3,2));
21
Psql
Criao 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,
Definio de
constraint
chave
estrangeira
codmod numeric(4),
sala varchar(20),
constraint fk_modalidade foreign key (codmod)
references usuario.modalidade);
22
Psql
Criao de ndices:
ndices so essenciais
aumento de performance
no banco de dados
23
Psql
Tabelas de sistema Catlogo
pg_tables
pg_views
pg_user
pg_roles
pg_index
pg_type
pg_tablespace entre outras.
select * from pg_tables;
24
pgAdminIII
Criao de tabelas
25
pgAdminIII
Criao de tabelas
26
pgAdminIII
Criao de tabelas
Definio de colunas
27
pgAdminIII
Criao de tabelas
Definio de chaves
28
pgAdminIII
Criao de ndices
29
pgAdminIII
Criao de ndices
30
pgAdminIII
Criao de ndices
31
pgAdminIII
Tabelas de sistemas
no possvel acessar o catlogo do PostgreSQL, diretamente
pelo pgAdminIII.
32
phpPgGIS
Criao de tabelas
33
phpPgGIS
Criao de tabelas
Informe as
propriedades
da tabela
34
phpPgGIS
Criao de tabelas
35
phpPgGIS
Criao de ndices
36
phpPgGIS
Defina as
propriedades do
ndice
Criao de ndices
37
No possvel acessar o
catlogo de sistema
diretamente pelo
phpPgGIS, assim como no
PgAdmin III
38
39
Mdulo Dois
Introduo a SQL
Consultas
Vises
Triggers
Exerccios
40
Introduo 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.
Documentao disponvel em:
http://www.postgresql.org/docs/
41
Introduo a SQL
DDL - Data Definition Language
Atravs deste conjunto de instrues so criados,
alterados e eliminados todos os objetos do banco de
dados, como tabelas, vises, ndices ...
create table cliente (
nomecli varchar(40),
from cliente);
email varchar(100));
alter table cliente
42
Introduo a SQL
DML - Data Manipulation Language
Conjunto de instrues 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, assis@gmail.com);
Delete from cliente;
Delete from cliente where
codcli = 100;
43
Introduo a SQL
DCL - Data Control Language
Conjunto de instrues usado para controlar o acesso
aos dados. Atravs delas possvel criar usurios,
roles, e definir atribuies de sistema ou sobre
objetos do banco de dados.
Introduo a SQL
Scripts SQL
Os scripts so formados por uma seqncia de
instrues DDL, DML, DCL.
So chamados a partir de linha de comando do
sistema operacional
ou
So executados atravs de um editor SQL.
45
Introduo a SQL
-- incio 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
Introduo a SQL
-- continuao 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
Introduo a SQL
-- continuao script
48
Introduo a SQL
Executando um script:
O script dado como exemplo est disponvel no
material de apoio. Faa 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 prxima etapa ...
49
Introduo 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;
Introduo a SQL
Juno natural: verifica igualdade de chaves
primria e estrangeira entre duas tabelas.
A coluna cod_peca existe na tabela
Peca e tambm na tabela
Fornecimento, por isso, preciso
indicar de qual tabela se deseja
recuperar o campo.
Introduo a SQL
Sub-consultas: so instrues SQL embutidas
dentro de outras instrues. Sua finalidade
recuperar valores de tabelas ou listas de
valores, para fins de comparao.
A consulta mais externa
compara as cidades da tabela
peca com a lista criada a
partir da consulta mais
interna
A consulta mais
interna retorna uma
lista com o nome de
todas as cidades de
fornecedores.
Introduo a SQL
Comando ALTER: altera a estrutura dos objetos
criados atravs do comando create ...
set search_path to projetos;
alter table fornecedor add column email varchar(80);
alter table peca rename to equipamento;
alter table fornecedor drop column email;
alter role teste rename to roleproj;
alter schema projetos owner to roleproj;
alter index indlocal set tablespace pg_default;
53
Introduo a SQL
Comando DROP: elimina qualquer objeto criado
atravs 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
Introduo 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
Introduo a SQL
Comandos:
Update - atualiza os dados das tabelas
UPDATE PECA SET PESO = 20 WHERE COD_PECA = P1;
UPDATE FORNECIMENTO SET QUANTIDADE = QUANTIDADE +
1000;
UPDATE FORNECEDOR SET STATUS = 30 WHERE FNOME =
FULANO;
56
Introduo a SQL
Comandos:
Delete - elimina uma linha ou linhas a partir
de um critrio estabelecido pelo usurio.
DELETE FROM FORNECIMENTO WHERE DATA < 01/01/2006;
DELETE FROM PROJETO WHERE CIDADE = ROMA;
DELETE FROM FORNECEDOR;
57
Introduo a SQL
Operaes relacionais:
Unio: retorna todas os valores indicados para
as relaes envolvidas na operao.
SELECT CIDADE FROM FORNECEDOR
UNION
SELECT CIDADE FROM PECA
UNION
SELECT CIDADE FROM PROJETO;
58
Introduo a SQL
Operaes relacionais:
Interseco: retorna somente os valores que
so comuns as duas relaes para os atributos
solicitados.
SELECT CIDADE FROM FORNECEDOR
INTERSECT
SELECT CIDADE FROM PECA;
59
Introduo a SQL
Operaes relacionais:
Diferena: retorna os valores presentes na
primeira relao que no esto na segunda
relao. A operao de diferena a nica em
que a ordem das relaes interfere no
resultado.
SELECT CIDADE FROM FORNECEDOR
EXCEPT
SELECT CIDADE FROM PECA;
60
Introduo a SQL
Operadores:
Fonte: www.postgresql.org
61
Introduo a SQL
Operadores:
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);
62
Introduo a SQL
Operadores:
select * from projeto where cidade ilike 'atenas' or cidade ilike 'oslo';
Introduo a SQL
Operadores - exerccio
64
Introduo a SQL
Funes de agregao:
65
Introduo a SQL
Funes matemticas:
66
Introduo a SQL
67
Introduo a SQL
Execute as trs
primeiras instrues
para fazer os testes!!!
Funes de manipulao e
Introduo a SQL
69
Introduo a SQL
select family('3ffe:6a88:85a3::0370:7344');
70
Introduo a SQL
Operaes especiais:
UNIO
71
Introduo a SQL
Operaes especiais:
DIFERENA
72
Introduo a SQL
Operaes especiais:
INTERSECO
73
Introduo a SQL
74
Introduo a SQL
Introduo a SQL
Funes:
Introduo a SQL
Funes:
Introduo a SQL
78
Introduo a SQL
79
Introduo a SQL
CREATE OR REPLACE FUNCTION backupfor() RETURNS trigger AS
$$
BEGIN
insert into bakfornec (SELECT * FROM FORNECEDOR);
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
80
81
Mdulo Trs
Estrutura de tabelas:
Uma tabela definida a partir de uma classe do
PostgreSQL. Assim, para verificar a estrutura de
uma tabela, preciso acessar trs tabelas do
catlogo do sistema. So elas - pg_class,
pg_attribute, pg_type.
pg_class armazena as propriedades de classes como tabelas,
vises, ndices, etc ...
pg_attribute guarda as propriedades dos attributos/colunas das
tabelas e,
pg_type descreve os tipos de dados disponveis no sistema
82
Mdulo Trs
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
Mdulo Trs
Estrutura de tabelas:
claro que voc pode
utilizar uma interface para
visualizar as estruturas
das tabelas ou outros
objetos.
84
Mdulo Trs
Agrupamento de tabelas:
o agrupamento pode ser entendido
de duas formas - atravs de
operaes de juno - join, j
abordadas no mdulo II ou, como
tabelas clusterizadas, visando ganho
de performance no banco de dados.
85
Mdulo Trs
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 so frequentemente
utilizadas em consultas ou vises, no primeiro caso
e, para agrupar linhas de uma mesma tabela de
possuam o mesmo valor para um ndice.
86
87
Mdulo Trs
Agrupamento de tabelas:
88
Mdulo Trs
Agrupamento de tabelas:
89
Mdulo III
Conexes nativas
Para acessar o banco de dados, so necessrias
interfaces implementadas atravs de linguagens de
programao. Para isso existem algumas formas de
conectar a aplicao ao SGBD.
Conexo nativa
ODBC
JDBC
ponte ODBC-JDBC
90
Mdulo III
Conexes nativas
Conexo nativa: este tipo de conexo feito
atravs de funcionalidades prprias das
linguagens e no tem a intermediao 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
Mdulo III
Conexes 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
Mdulo III
ODBC
BD
Interface
ODBC
Base de Dados
93
Mdulo III
ODBC: atravs do driver ODBC que a
estrutura interna do banco de dados e os tipos
de dados so reconhecidos, bem como a
converso dos dados feita, caso seja
necessrio. um especificao para acesso a
bancos de dados, com funes para conexo e
execuo de comandos e transaes.
94
Mdulo III
ODBC
Instalao do Driver
Painel de Controle
Configurao
95
Mdulo III
ODBC
Configurao
96
Mdulo III
ODBC
97
Mdulo III
ODBC
98
Mdulo III
ODBC
99
Mdulo III
ODBC
100
Mdulo III
ODBC
101
Mdulo 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>";};
?>
102
Mdulo III
JDBC
Um driver JDBC uma interface, uma API como
ODBC, para acessar bancos de dados usando a
linguagem de programao Java.
Tem as mesmas funcionalidades de um driver
ODBC, como funes de conexo, recuperao de
dados, controle de transaes, etc ...
No precisa ser instalado - o driver um arquivo
jar. S necessrio mapear a localizao do
arquivo no disco.
103
Mdulo 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
Mdulo III
JDBC - Exemplo
System.out.println("Conectando ....");
// Cria a conexo com o banco de dados
String url =
"jdbc:postgresql://localhost/teste?user=postgres&password=postgres";
Connection conn = DriverManager.getConnection(url);
// Cria uma instruo SQL para consulta dos dados
Statement stmt = conn.createStatement();
// Passa como parmetro a instruo que retorna um conjunto de registros
ResultSet rs = stmt.executeQuery("select cod_cli, cnome from cliente");
105
Mdulo III
JDBC - Exemplo
// l o conjunto de registros enquanto no for fim de cursor
while (rs.next()) {
// variveis 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 variveis
System.out.println(c + " " + n + " " );
}
stmt.close(); // fecha o cursor
conn.close();// fecha a conexo
}
106
Mdulo III
JDBC - Exemplo
Painel de controle
Sistema
No esquea de
incluir
o driver JDBC
no CLASSPATH.
Guia Avanado
Variveis de Ambiente
CLASSPATH=C:\Arquivos de programas\PostgreSQL\8.1\jdbc\postgresql-8.1-404.jdbc3.jar
CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql.jar
107
Mdulo III
JDBC - Exemplo
Eclipse + Plugin + JDBC + PostgreSQL
Netbeans + JDBC + PostgreSQL
Para este exemplo vamos usar:
Eclipse + DBEdit + JDBC + PostgreSQL
108
Mdulo III
JDBC - Exemplo
Adicione o plugin do DBEdit ao Eclipse
Altere o ambiente da perspectiva Java para a
perspectiva do DBEdit
109
Mdulo III
JDBC - Exemplo
Crie uma conexo com o banco usando o driver JDBC
Configure a conexo com o banco de dados
110
Mdulo III
JDBC - Exemplo
Crie uma conexo com o banco usando o driver JDBC
Configure a conexo com o banco de dados
111
Mdulo III
JDBC - Exemplo
Adicione uma tabela ao projeto de banco de dados
112
Mdulo III
JDBC - Exemplo
Adicione uma tabela ao projeto de banco de dados
113
Mdulo III
JDBC - Exemplo
BrOffice.org + JDBC + PostgreSQL
114
Mdulo III
JDBC - Exemplo
BrOffice.org +
JDBC +
PostgreSQL
115