banco de dados postgresql. tipos de dado data definition language
TRANSCRIPT
Banco de DadosPostgreSQL
TIPOS DE DADO
DATA DEFINITION LANGUAGE
Principais comandos DDL
• Database - Create, Alter, Drop• Schema - Create, Alter, Drop• Tablespace - Create, Alter Drop• Table - Create, Alter, Drop• Index - Create, Alter, Drop
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âmetroALTER DATABASE nome RENAME TO novo_nomeALTER DATABASE nome OWNER TO novo_dono
O comando ALTER DATABASE altera os atributos de um banco de dados.
ExemploPara 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!
ExemploPara 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_nomeALTER 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_nomeALTER 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 ocomando 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_colunaALTER TABLE nomeRENAME TO novo_nomeonde 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ãoALTER [ COLUMN ] coluna DROP DEFAULTALTER [ COLUMN ] coluna { SET | DROP } NOT NULLALTER [ COLUMN ] coluna SET STATISTICS inteiroALTER [ COLUMN ] coluna SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }ADD restrição_de_tabelaDROP CONSTRAINT nome_da_restrição [ RESTRICT | CASCADE ]CLUSTER ON nome_do_índiceSET WITHOUT CLUSTERSET WITHOUT OIDSOWNER TO novo_donoSET 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 nomeação [, ... ]ALTER INDEX nomeRENAME TO novo_nome
onde ação é um entre:
OWNER TO novo_donoSET TABLESPACE nome_do_espaço_de_índices
O comando ALTER INDEX altera a definição de um índice existente.
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;
Exercícios
• Para Banco de Dados RH• Criar Banco de Dados –
Empresas• Criar Squema RH• Criar Tabelas
• Empresa • Departamento• Funcao• Teste – com codigo, nome,
data, valor
• 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