CodeGym /Cursos /SQL SELF /Deletando tabelas usando DROP TABLE

Deletando tabelas usando DROP TABLE

SQL SELF
Nível 18 , Lição 2
Disponível

Bora falar agora de como deletar tabelas do banco de dados do jeito certo usando o comando DROP TABLE.

DROP TABLE é o comando que apaga uma tabela do banco junto com todos os dados e a estrutura dela. Imagina que tu escreveu teu TCC e depois, sem querer, queimou ele junto com o notebook. É tipo isso que acontece quando tu usa DROP TABLE. Assusta, né? Mas relaxa, o mais importante é entender como funciona e tomar cuidado!

Características do DROP TABLE:

  • Remove a tabela inteira (e os dados dela) sem chance de recuperar (a não ser que tu tenha feito backup).
  • Libera totalmente o espaço que a tabela ocupava no disco.
  • Apaga também todos os índices, constraints e triggers ligados a ela.

Sintaxe do comando DROP TABLE

O comando DROP TABLE tem uma sintaxe bem simples e direta:

DROP TABLE tabela;

Onde:

  • tabela — nome da tabela que tu quer deletar.

Exemplo simples de exclusão de tabela

Bora ver um exemplo. Suponha que a gente tem uma tabela students:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INTEGER CHECK (age > 0)
);

Se essa tabela não for mais necessária, dá pra apagar ela assim:

DROP TABLE students;

Depois de rodar esse comando, a tabela students some do banco, junto com todos os dados dos estudantes (que podiam estar nela).

Deletando várias tabelas

Tu também pode apagar várias tabelas de uma vez só. Só listar elas separadas por vírgula:

DROP TABLE table1, table2, table3;

Exemplo:

DROP TABLE students, teachers, courses;

Esse comando apaga logo três tabelas: students, teachers e courses.

Usando IF EXISTS

O comando DROP TABLE vai dar erro se tu tentar apagar uma tabela que não existe. Pra evitar esse erro, usa a opção IF EXISTS:

DROP TABLE IF EXISTS table_name;

Exemplo:

DROP TABLE IF EXISTS students;

Se a tabela students existir, ela vai ser apagada. Se não existir, o comando roda sem erro, só manda um aviso.

Deletando tabelas com dependências

Às vezes, deletar tabelas pode ser complicado se outras tabelas ou objetos dependem dela. Por exemplo, se a tabela tem foreign keys ligadas a outras tabelas. Vou falar mais de foreign keys no próximo nível :P

Imagina que tu tem duas tabelas: students e enrollments. A tabela enrollments depende da students, porque faz referência a ela com uma foreign key.

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE enrollments (
    id SERIAL PRIMARY KEY,
    student_id INTEGER REFERENCES students(id), -- coluna student_id referencia students.id
    course_name VARCHAR(100)
);

Se tu tentar apagar a tabela students sem apagar antes a enrollments, vai dar erro:

DROP TABLE students;
-- ERROR:  não dá pra dropar a tabela "students" porque outros objetos dependem dela
-- DETAIL:  constraint enrollments_student_id_fkey na tabela enrollments depende da tabela students

Pra apagar a tabela e todos os objetos dependentes, usa a opção CASCADE:

DROP TABLE students CASCADE;

Esse comando apaga a tabela students e automaticamente apaga tudo que depende dela (nesse caso, a tabela enrollments).

Mas cuidado com o CASCADE, porque ele pode apagar mais coisa do que tu imagina. Pra saber o que vai ser apagado, usa o CASCADE e depois confere os logs :)

Deletando tabelas sem apagar objetos dependentes

Se tu quiser evitar apagar objetos relacionados sem querer, usa a opção RESTRICT. Essa opção bloqueia a exclusão da tabela se tiver outros objetos dependendo dela:

DROP TABLE students RESTRICT;

Se a tabela tiver objetos dependentes, o comando vai dar erro e cancelar a exclusão.

Tabelas temporárias e como apagar elas

Tabelas temporárias (criadas com CREATE TEMP TABLE) são apagadas automaticamente quando a sessão do banco termina. Mas tu pode apagar uma tabela temporária manualmente durante a sessão usando DROP TABLE.

Exemplo:

CREATE TEMP TABLE temp_data (
    id SERIAL PRIMARY KEY,
    value TEXT
);

DROP TABLE temp_data;

Erros comuns ao usar DROP TABLE

Tentar apagar uma tabela que não existe. Pra evitar erro, usa IF EXISTS.

DROP TABLE IF EXISTS non_existing_table;

Apagar tabela com dependências sem usar CASCADE. Se outras tabelas estão ligadas à tabela que tu quer apagar, o comando vai dar erro. Usa CASCADE se tu tiver certeza que quer apagar tudo que depende dela.

DROP TABLE students CASCADE;

Usar CASCADE demais. Isso pode apagar objetos críticos. Antes de usar CASCADE, garante que tu sabe o que vai ser afetado.

Apagar tabela sem querer. Sempre confere duas vezes o que tu tá apagando, principalmente em banco de produção.

Dicas úteis, algumas até sérias

Dica útil 1: nega tudo

Apaga os rastros mais rápido que os dados.
E depois fala com toda certeza: “Foi uma anomalia nos logs. Já resolvi”.

Finge que é feature.
“A gente resolveu fazer um stress test de resiliência... E, bom, o sistema não aguentou. Mas agora já sabemos o que melhorar!”

Anuncia evacuação: “Temos um incidente nível produção”.
Quando todo mundo corre e entra em pânico, ninguém pergunta quem foi que rodou DELETE FROM sem WHERE.

Atualiza o currículo no hh.ru como DBA.
Agora tu tá mais perto dos bancos de dados. Principalmente daqueles que não existem mais.

Já deixa o café pronto.
Porque daqui a pouco podem te sugerir “dar um tempo do projeto... pra sempre”.

Finge que era o ambiente de staging.
“Tem certeza que não era ambiente de teste? A gente tava testando alguma coisa... eu acho...”

Senta bem no meio do open space.
Ninguém vai acreditar que o culpado teria coragem de sentar tão na cara de todo mundo.

Culpa o ChatGPT.
Foi tudo culpa da inteligência artificial. Como tu pode ver, ela ainda não tá pronta pra te substituir. Não me demite, por favor.

Dica útil 2: como procurar emprego com a reputação zoada

  • Apaga todas as tabelas de uma vez. Assim a chefia vai estar ocupada demais pra demitir alguém pessoalmente.

  • Ninguém cai sozinho. Se tu levar o chefe junto, já não tem mais referência ruim.

  • Apagou dados dos clientes? Parabéns, agora a empresa tem problemas maiores que tua demissão.

Dica útil 3: faz backup antes de apagar

Agora, sem zoeira.

Antes de apagar uma tabela (principalmente se ela tem dados importantes), faz um backup usando o comando pg_dump. Assim tu consegue recuperar os dados se apagar algo sem querer.

Exemplo de comando pra backup:

pg_dump -U username -d database_name -t table_name > table_backup.sql

Nesse ponto tu já pegou o básico do DROP TABLE. Guarda esse “botão nuclear” com carinho e só usa quando tiver certeza do que tá fazendo. Na próxima aula a gente vai continuar vendo como mudar a estrutura das tabelas e outros objetos do banco.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION