Banco de Dados
PostgreSQL
TIPOS DE DADO
DATA DEFINITION LANGUAGE
•
•
•
•
•
Database - Create, Alter, Drop
Schema - Create, Alter, Drop
Tablespace - Create, Alter Drop
Table - Create, Alter, Drop
Index - Create, Alter, Drop
Principais comandos DDL
DATABASE
CREATE DATABASE nome
[ [ WITH ] [ OWNER [=]
dono_do_banco_de_dados ]
[ TEMPLATE [=] modelo ]
[ ENCODING [=] codificação ]
[ TABLESPACE [=] espaço_de_tabelas ] ]
O comando
CREATE
DATABASE cria
um banco de dados
no PostgreSQL.
Exemplos
• Para criar um banco de dados:
• CREATE DATABASE lusiadas;
• Para criar o banco de dados vendas pertencendo ao
usuário usuvendas com o espaço de tabelas padrão
espvendas:
• CREATE DATABASE vendas OWNER
usuvendas TABLESPACE espvendas;
• Para criar o banco de dados musica com suporte a
conjunto de caracteres ISO-8859-1:
• CREATE DATABASE musica ENCODING
'LATIN1';
ALTER DATABASE nome SET parâmetro {
TO | = } { valor | DEFAULT }
ALTER DATABASE nome RESET parâmetro
ALTER DATABASE nome RENAME TO
novo_nome
ALTER DATABASE nome OWNER TO
novo_dono
O comando ALTER DATABASE
altera os atributos de um banco de
dados.
Exemplo
Para desabilitar a varredura de índices no banco
de dados teste por padrão:
• ALTER DATABASE teste SET
enable_indexscan TO off;
DROP DATABASE nome
O comando DROP DATABASE remove um
banco de dados.
O comando DROP DATABASE não pode ser
desfeito. Utilize com cuidado!
Exemplo
Para apagar o banco de dados empresas:
• DROP DATABASE empresas;
SCHEMA
CREATE SCHEMA nome_do_esquema [ AUTHORIZATION
nome_do_usuário ] [ elemento_do_esquema [ ...
]]
CREATE SCHEMA AUTHORIZATION nome_do_usuário [
elemento_do_esquema [ ... ] ]
O comando CREATE SCHEMA cria um
esquema no banco de dados corrente
Exemplos
• Criar um esquema:
• CREATE SCHEMA meu_esquema;
• Criar um esquema para o usuário antonio; o esquema
também se chamará antonio:
• CREATE SCHEMA AUTHORIZATION antonio;
ALTER SCHEMA nome RENAME TO novo_nome
ALTER SCHEMA nome OWNER TO novo_dono
O comando ALTER SCHEMA altera a
definição de um esquema.
Exemplos
• Alterar nome de um schema
• ALTER SCHEMA rh RENAME TO recursoshumanos;
DROP SCHEMA nome [, ...] [ CASCADE | RESTRICT ]
O comando DROP SCHEMA remove
esquemas do banco de dados.
Exemplos
• Para remover do banco de dados o esquema meu_esquema
junto com todos os objetos que este contém:
• DROP SCHEMA meu_esquema CASCADE;
TABLESPACE
CREATE TABLESPACE nome_do_espaço_de_tabelas [ OWNER
nome_do_usuário ] LOCATION 'diretório'
O comando CREATE TABLESPACE
registra um novo espaço de tabelas para todo o
agrupamento.
Exemplos
• Criar o espaço de tabelas dbspace em /data/dbs:
• CREATE TABLESPACE dbspace LOCATION
'/data/dbs';
• Criar o espaço de tabelas indexspace em /data/indexes pertencendo ao
usuário genevieve:
• CREATE TABLESPACE indexspace OWNER genevieve
LOCATION '/data/indexes';
ALTER TABLESPACE nome RENAME TO novo_nome
ALTER TABLESPACE nome OWNER TO novo_dono
O comando ALTER TABLESPACE altera a
definição de um espaço de tabelas.
Exemplos
• Mudar o nome de espaco_para_indices para raid_rapido:
• ALTER TABLESPACE espaco_para_indices RENAME TO
raid_rapido;
• Mudar o dono do espaço de tabelas espaco_para_indices:
• ALTER TABLESPACE espaco_para_indices OWNER TO
maria;
DROP TABLESPACE
nome_do_espaço_de_tabelas
O comando DROP TABLESPACE remove
do sistema um espaço de tabelas.
Exemplos
• Para remover do sistema o espaço de tabelas minhas_coisas:
• DROP TABLESPACE minhas_coisas;
TABLE
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela
(
{ nome_da_coluna tipo_de_dado [ DEFAULT expressão_padrão ] [ restrição_de_coluna [
... ]
]
| restrição_de_tabela
| LIKE tabela_ancestral [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ]
)
[ INHERITS ( tabela_ancestral [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE espaço_de_tabelas ]
O comando CREATE TABLE cria uma
tabela, inicialmente vazia, no banco de dados
corrente. O usuário que executa o
comando se torna o dono da tabela.
onde restrição_de_coluna é:
[ CONSTRAINT nome_da_restrição ]
{ NOT NULL |
NULL |
UNIQUE [ USING INDEX TABLESPACE espaço_de_tabelas ] |
PRIMARY KEY [ USING INDEX TABLESPACE espaço_de_tabelas ] |
CHECK (expressão) |
REFERENCES tabela_referenciada [ ( coluna_referenciada ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE ação ] [ ON UPDATE ação ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
e restrição_de_tabela é:
[ CONSTRAINT nome_da_restrição ]
{ UNIQUE ( nome_da_coluna [, ... ] ) [ USING INDEX TABLESPACE espaço_de_tabelas ] |
PRIMARY KEY ( nome_da_coluna [, ... ] ) [ USING INDEX TABLESPACE espaço_de_tabelas ] |
CHECK ( expressão ) |
FOREIGN KEY ( nome_da_coluna [, ... ] )
REFERENCES tabela_referenciada [ ( coluna_referenciada [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE ação ] [ ON UPDATE ação ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
Exemplos
ALTER TABLE [ ONLY ] nome [ * ]
ação [, ... ]
ALTER TABLE [ ONLY ] nome [ * ]
RENAME [ COLUMN ] coluna TO novo_nome_da_coluna
ALTER TABLE nome
RENAME TO novo_nome
onde ação é uma entre:
ADD [ COLUMN ] coluna tipo [ restrição_de_coluna [ ... ] ]
DROP [ COLUMN ] coluna [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] coluna TYPE tipo [ USING expressão ]
ALTER [ COLUMN ] coluna SET DEFAULT expressão
ALTER [ COLUMN ] coluna DROP DEFAULT
ALTER [ COLUMN ] coluna { SET | DROP } NOT NULL
ALTER [ COLUMN ] coluna SET STATISTICS inteiro
ALTER [ COLUMN ] coluna SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD restrição_de_tabela
DROP CONSTRAINT nome_da_restrição [ RESTRICT | CASCADE ]
CLUSTER ON nome_do_índice
SET WITHOUT CLUSTER
SET WITHOUT OIDS
OWNER TO novo_dono
SET TABLESPACE nome_do_espaço_de_tabelas
O comando ALTER TABLE altera a
definição de uma tabela existente.
DROP TABLE nome [, ...] [ CASCADE | RESTRICT ]
O comando DROP TABLE remove tabelas
do banco de dados.
Exemplos
• Remover duas tabelas, filmes e distribuidores:
• DROP TABLE filmes, distribuidores;
INDEX
CREATE [ UNIQUE ] INDEX nome_do_índice ON tabela [ USING método ]
( { coluna | ( expressão ) } [ classe_de_operadores ] [, ...] )
[ TABLESPACE espaço_de_tabelas ]
[ WHERE predicado ]
O comando CREATE INDEX constrói o
índice nome_do_índice na tabela especificada.
Exemplos
• Para criar um índice B-tree para a coluna titulo na tabela filmes:
• CREATE UNIQUE INDEX unq_titulo ON filmes
(titulo);
• Para criar um índice para a coluna codigo da tabela filmes e fazer o índice
residir no espaço de tabelas espaco_indices:
• CREATE INDEX idx_codigo ON filmes(codigo)
TABLESPACE espaco_indices;
ALTER INDEX nome
ação [, ... ]
ALTER INDEX nome
RENAME TO novo_nome
O comando ALTER INDEX altera a
definição de um índice existente.
onde ação é um entre:
OWNER TO novo_dono
SET TABLESPACE nome_do_espaço_de_índices
Exemplos
• Para mudar o nome de um índice existente:
• ALTER INDEX distribuidores RENAME TO
fornecedores;
• Para mover um índice para outro espaço de tabelas:
• ALTER INDEX distribuidores SET TABLESPACE
espaco_de_tabelas_rapido;
DROP INDEX nome [, ...] [ CASCADE |
RESTRICT ]
O comando DROP INDEX remove do
sistema de banco de dados um índice existente.
Exemplos
• O comando a seguir remove o índice
idx_titulo:
• DROP INDEX idx_titulo;
• Para Banco de Dados RH
• Criar Banco de Dados –
Empresas
• Criar Squema RH
• Criar Tabelas
•
•
•
•
Empresa
Departamento
Funcao
Teste – com codigo, nome,
data, valor
Exercícios
• Alterar nome do squema para
recursoshumanos
• Alterar nome da tabela teste para
teste2
• Alterar tipo da coluna codigo da
tabela teste2 para decimal e data
para timestamp
• Criar um índice único para o nome
da tabela teste2
• Criar as primary keys e constratints
de relacionamento para as tabelas
Empresa, Departamento e Funcao
• Adicionar uma coluna e-mail na
tabela teste2
• Apagar índice da coluna nome da
tabela teste2
• Apagar tabela teste2
Download

Banco de Dados - Sandro Alencar Fernandes