Free CSS Button Css3Menu.com

IBD100 » Exercícios&Projetos » PraticaSQL » Dicas-SQL »
Dicas Gerais...    Atualizado em 2026-03-29
Índice de Ancoras desta página:
As Fases do PRATICASQL | Troca de posição de campos em tabelas | Backup de Base de Dados | Trocando Tipos de Dados de Campos de Tabelas | Trocando Valores de Campos que serão Chaves Primárias
De ontem em diante... Gosto deste início de frase... Parece referência de tempo mas ao mesmo tempo é sem referência... quando é ontem?.
Resolvi fazer um amontoado de dicas em uma página só.
Dicas são pérolas... são coisas que a gente pesquisa, descobre, acha interessante e daí pensa assim: 'Alguém, um dia, pode precisar disso.
Daí, resolvi colecionar e, um dia, publicar em um Site. E agora o aluno simplesmente consulta pelo site.
Dicas Úteis



Dica 1: As Fases do PRATICASQL
»
O Exercício do PraticaSQL foi projetado para desenvolver as habilidades de Manutenção de uma Base de Dados.
O script inicialmente distribuído contém as definições de tabelas sem a definição de suas chaves (Primárias, Candidatas e Estrangeiraas).
Nesse Script também faltam tabelas a serem criadas tomando como referencia as aparesentadas no Dicionário de Dados do Exercício
No SGBD PosrgreSQL (bem como em outros SGBD) a CRIAÇÃO de Chaves Estrangeiras DEPENDE da Prévia EXISTÊNCIA da Correspondente Chave Primária.
Desse modo, os ajustes que devem ser feitos na Base de Dados DEVEM ser feitas em uma ordem:
  • Primeira PASSADA:
    • Se uma tabela não existir: CRIE a Nova TABELA.
    • Se a tabela já Existir: Crie os Campos Adicionais para ajustar a estrutura da Tabela. Se isso for necessário e você precisar, EXECUTE a Dica 2: Ajustes das Estruturas de Tabelas
    • Nesta passada CRIE as CHAVES PRIMÁRIAS e as CHAVES CANDIDATAS.
  • Segunda PASSADA:
    ANTES de iniciar esta Fase, tenha certeza que todas as tabelas definidas no Dicionário de Dados da Base de Dados EXISTAM corretamente definidas com suas correspondentes Chaves Primárias e Candidatas (quando Houver).
    • Depois de Criadas as CPs e as CCs, crie as Chaves Estrangeiras.




Dica 2: Ajustes das Estruturas de Tabelas.
»
O SGBD PostgreSQL é um SGBD RELACIONAL. Isso significa que segue os principios do MR. O fundamento do MR é tratar os dados necessários em um contexto como um CONJUNTO matematicamente considerado.
Isso faz com que a ordem dos campos dentro de tabela não tenham importância para se considerar a tabela como uma representação do conjunto e também não importa a ordem como as linhas estão dentro da tabela.
Entretanto, em alguns projetos de sistemas, o Analista de Dados pode impor ao DBA que seja mantido a ordem dos campos como se apresentam na documentação do SI (no Dicionário de Dados).
Sendo assim, SE você precisar trocar a ordem de campos em SGBD Relacional execute a seguinte sequência de comandos:
  • Inserir/remover campos das tabelas - Deixando a estrutura da Tabela com os campos necessários, mas sem a ordem desejada.
  • Mover campos de uma posição para outra na mesma tabela.
    Para isso:
    1. CREATE TABLE novo_nome AS SELECT 'Lista de campos na ordem correta' FROM sua_tabela;
    2. DROP TABLE sua_tabela CASCADE;
    3. ALTER TABLE novo_nome RENAME TO sua_tabela;




Dica 3: Backup de Base de Dados
»
Outra 'Dica' importante: ao terminar seus trabalhos na manutenção de uma base de dados é interessante fazer uma cópia de segurança.
Este 'BACKUP' serve para recuperação de da situação da base BEM COMO para levar as definições de uma base de dados de uma máquina para outra.
Este BACKUP pode ser feito seguindo os seguintes passos:
  1. Acesse o PGAdmin 4 (a partir da versão 7] e ache a base de dados que será 'copiada'
  2. Marque o nome da base de dados (um clique com o botão principal do mouse]
  3. Abra o menu popup e scolha o item BACKUP
  4. Aba: General
    • Campo: Filename -> Clique na 'pasta' do lado direito e indique o diretório e NOME do arquivo que será gravado.
    • Campo: Format -> Escolha PLAIN
    • Campo: Enconding -> Escolha UTF8
  5. Aba: Data Options
    • Divisão: Sections -> Ative PreData, PosData e Data
    • Divisão: Type of objects -> Desative Blobs
  6. Aba: Query Options
    • Ative 'USE INSERT COMMANDS'
  7. Aba: Options
    • Desative 'VERBOSE MESSAGES'
  8. Clique no botão 'BACKUP'
  9. Acesse o diretório onde foi gravado o seu arquivo de backup
    • Copie o arquivo gerado para seu dispotivo de dados.




Dica 4: Trocando Tipos de Dados de Campos de Tabelas
»
Outra 'Dica' (com a colaboração de uma colega que pesquisou como resolver a situação]...
Seguinte: Você precisa TROCAR o TIPO DE DADO de um campo de uma tabela. E agora?
Uma 'ratinha' pesquisou o comando ALTER TABLE para o PostgreSQL e achou como trocar o tipo de dado de um campo, basta usar:
Abra uma Janela de QueryTool no pgAdmin 4 tendo acessado a base de dados onde esta a tabela que se quer trocar o tipoe de dado. alter table <NomeDaTabela> alter column <NomeDoCAmpo> type <TipoDeDado>;
POR EXEMPLO:
alter table estadosdospaises alter column idestadodopais type character(2);



Dica 5: Trocando Valores de Campos que serão Chaves Primárias
»
E se você tentar criar uma Chave Primária e o SGBD indicar que o campo tem valores repetidos...? O que fazer?
Seguinte: Você precisa TROCAR os valores do campo colocando os valores com um número sequencial (por exemplo). E agora? Como fazer?
Existe uma função que retorna um número a linha processada. É função ROW_NUMBER().
Exemplificando o caso da troca dos valores do campo que é a chave primária da tabela cidades
. Em uma janela QUERY TOOLS Escreva:
POR EXEMPLO:
create table cidadenova as
         (select row_number() OVER (ORDER BY concat(c.estadodopaisid,c.txnomecidade)) as idnovo,
                   c.txnomecidade,
                   c.estadodopaisid,
                   c.txformaacesso,
                   c.qtpopulacao,
                   c.qtarea,
                   c.dtfundacao,
                   c.dtcadcidade
                   from cidades as c);
drop table cidades;
alter table cidadenova rename to cidades;

Antes de executar o comando 'ALTER TABLE', se quiser consultar os valores gerados... Execute:
select * from cidadenova;