Série SQL do banco de dados GaussDB: DROP & TRUNCATE & DELETE

Índice

I. Introdução

2. Breve introdução de DROP & TRUNCATE & DELETE do GaussDB

1. Breve descrição do comando

2. Comparação de comandos

3. Comando DROP TABLE e exemplos do GaussDB

1. Descrição da função

2. Gramática

3. Exemplos

4. Comando TRUNCATE e exemplos do GaussDB

1. Descrição da função

2. Gramática

3. Exemplos

4. Exemplos

5. Comando DELETE e exemplos do GaussDB

1. Descrição da função

2. Assuntos que precisam de atenção

3. Gramática

4. Exemplos

6. Cenários de aplicação

7. Resumo

I. Introdução

Nos bancos de dados, o SQL, como linguagem de programação de banco de dados comumente usada, desempenha um papel vital. SQL pode ser usado não apenas para criar, modificar e consultar bancos de dados, mas também para excluir dados por meio de instruções como DROP, DELETE e TRUNCATE. Essas instruções são os comandos mais comumente usados ​​na linguagem SQL e têm diferentes significados e cenários de uso.

Usando o banco de dados GaussDB como plataforma, este artigo apresentará em detalhes o significado, os cenários de uso e as precauções das instruções DROP, TRUNCATE e DELETE em SQL, ajudando os leitores a entender e dominar melhor esses comandos de operação de banco de dados comumente usados.

2. Breve introdução de DROP & TRUNCATE & DELETE do GaussDB

1. Breve introdução

  • A instrução DROP pode excluir a tabela inteira, incluindo a estrutura e os dados da tabela;
  • A instrução TRUNCATE pode excluir rapidamente todos os dados da tabela, mas não exclui a estrutura da tabela.
  • A instrução DELETE pode excluir os dados da tabela de acordo com as condições, mas não inclui a estrutura da tabela;

2. Comparação de comandos

categoria

DERRUBAR

TRUNCAR

EXCLUIR

Tipo SQL

DDL

DDL

DML

excluir conteúdo

Exclua todos os dados da tabela, incluindo estrutura da tabela, índices e permissões, etc.

Exclua todos os dados da tabela ou os dados da partição especificada

Exclua todos ou alguns dados (+ condicionais) de uma tabela

velocidade de execução

o mais rápido

velocidade média

mais lento

Dica: No banco de dados GaussDB, DROP é um dos comandos utilizados para definir ou modificar objetos no banco de dados. Os objetos incluem principalmente: bibliotecas, esquemas, espaços de tabela, tabelas, índices, visualizações, procedimentos armazenados, funções, chaves de criptografia, etc. Desta vez, apenas as operações em tabelas são direcionadas.

3. Comando DROP TABLE e exemplos do GaussDB

1. Descrição da função

A função de DROP TABLE é deletar a tabela existente.

2. Gramática

DROP TABLE [IF EXISTS] [db_name.]table_name;

Nota: Adicionar [IF EXISTS] ao SQL pode evitar erros de execução causados ​​por tabelas inexistentes.

Parâmetros: db_name: Nome do banco de dados. Se não for especificado, o banco de dados atual será selecionado. table_name: O nome da tabela a ser excluída.

3. Exemplos

O exemplo a seguir demonstra o uso do comando DROP, executando as seguintes instruções SQL em sequência:

--删除整个表course
DROP TABLE IF EXISTS course

--创建course表
CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));

--初始化数据
INSERT INTO course VALUES('01' , '语文' , '02');
INSERT INTO course VALUES('02' , '数学' , '01');
INSERT INTO course VALUES('03' , '英语' , '03');

--3条记录
SELECT count(1) FROM  course;

--删除整个表
DROP TABLE IF EXISTS course

--查看结果,表不存在(表结构及数据不存在)
SELECT count(1) FROM  course;

1) DROP TABLE, tabela de prompt não existe

2) Crie e inicialize uma tabela experimental

3) DROP TABLE executado com sucesso

 

4) Veja os resultados da execução

4. Comando TRUNCATE e exemplos do GaussDB

1. Descrição da função

Remova todos os dados de uma tabela ou partição de tabela, TRUNCATE exclui rapidamente todas as linhas da tabela. Tem o mesmo efeito que um DELETE incondicional na tabela de destino, mas como TRUNCATE não faz uma varredura na tabela, é muito mais rápido e usa menos recursos do sistema e do log de transações. O efeito da operação é mais óbvio em uma mesa grande.

TRUNCATE TABLE exclui todas as linhas da tabela, mas a estrutura da tabela e suas colunas, restrições, índices, etc. permanecem inalteradas. O valor de contagem usado para identificação de nova linha é redefinido para a semente da coluna.

2. Gramática

TRUNCATE [TABLE] table_name;

ou

ALTER TABLE [IF EXISTS] table_name  TRUNCATE PARTITION { partition_name | FOR (  partition_value  [, ...] ) }

Parâmetros: table_name: o nome da Tabela cujos dados precisam ser excluídos. nome_da_partição: O nome da partição da tabela de partições a ser excluída. partition_value: O valor da partição da tabela de partição a ser excluída.

3. Exemplo 1

O exemplo a seguir demonstra o uso do comando TRUNCATE:

--创建course表
DROP TABLE IF EXISTS course;
CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));

--初始化数据
INSERT INTO course VALUES('01' , '语文' , '02');
INSERT INTO course VALUES('02' , '数学' , '01');
INSERT INTO course VALUES('03' , '英语' , '03');

--3条记录
SELECT count(1) FROM  course;

--清空表
TRUNCATE TABLE course;
--或
TRUNCATE course;

--0条记录
SELECT count(1) FROM  course;

1) Crie uma tabela experimental e inicialize os dados

 2) TRUNCATE TABLE executado com sucesso

 3) Veja os resultados da execução

4. Exemplo 2

O exemplo a seguir demonstra a exclusão de dados da tabela de partição do comando TRUNCATE

--创建列表分区(LIST)
DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    product_id INT,
    quantity INT
) PARTITION BY LIST (customer_id) (
    PARTITION p1 VALUES (100),
    PARTITION p2 VALUES (200), 
    PARTITION p3 VALUES (300),
    PARTITION p4 VALUES (400),
    PARTITION p5 VALUES (500)
);

--插入测试数据
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1001,100,date'20230822',1,10);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1002,100,date'20230822',2,20);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1003,100,date'20230822',3,30);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1004,200,date'20230822',4,40);

--查看分区p1、p2的数据
SELECT * FROM orders WHERE customer_id IN (100,200);
--或
--根据分区名称查询
SELECT * FROM  orders PARTITION(p2);

--清空分区p1。
ALTER TABLE orders TRUNCATE PARTITION p1;
--或者
--清空分区p2=200。
ALTER TABLE orders TRUNCATE PARTITION for (200);

--查看分区p1、p2的数据
SELECT * FROM orders WHERE customer_id IN (100,200);

1) Crie uma tabela experimental e inicialize-a

 2) Exclua os dados de acordo com a partição

5. Comando DELETE e exemplos do GaussDB

1. Descrição da função

Exclui linhas que satisfazem a cláusula WHERE da tabela especificada. Se a cláusula WHERE não existir, todas as linhas da tabela serão excluídas, deixando apenas a estrutura da tabela como resultado.

2. Assuntos que precisam de atenção

  • LIMIT não é suportado em instruções DELETE. A condição WHERE deve ser usada para especificar a linha de destino que precisa ser atualizada.
  • Não oferece suporte à exclusão de várias tabelas em uma única instrução SQL.
  • Deve haver uma cláusula WHERE na instrução DELETE para evitar varreduras completas da tabela.
  • As cláusulas ORDER BY e GROUP BY não devem ser usadas na instrução DELETE para evitar classificação desnecessária.
  • Se precisar limpar uma tabela, é recomendado usar TRUNCATE em vez de DELETE.
  • TRUNCATE criará um novo arquivo físico e excluirá fisicamente o arquivo original no final da transação para liberar espaço em disco. DELETE marcará os dados na tabela e não limpará realmente o espaço em disco até o estágio VACCUUM FULL.
  • Quando DELETE possui uma tabela com chave primária ou índice, a condição WHERE deve ser combinada com a chave primária ou índice para melhorar a eficiência da execução.
  • A instrução DELETE exclui uma linha por vez e registra uma entrada no log de transações para cada linha excluída.
  • Se você quiser manter o valor da contagem de identidades, use DELETE

3. Gramática

DELETE FROM table_name [WHERE condition];

Parâmetros: table_name: o nome da Tabela cujos dados precisam ser excluídos. condição: usada para determinar quais linhas precisam ser excluídas.

4. Exemplos

Reutilize a tabela do experimento anterior:

DELETE FROM orders WHERE  customer_id <200;

1) Exclua todos os dados de customer_id <200 na tabela de pedidos:

6. Cenários de aplicação

  • Quando você precisar excluir dados de acordo com determinadas condições de negócios e o volume e o desempenho dos dados forem controláveis, considere usar DELETE.
  • TRUNCATE pode ser usado quando grandes lotes de dados precisam ser excluídos e são necessárias velocidade rápida, alta eficiência e sem necessidade de desfazer.
  • No desenvolvimento de nível empresarial, a exclusão lógica é realmente executada (os dados são "excluídos" e processados) em vez da exclusão física.
  • No ambiente de produção real, os dados do processo de negócios (tabela de transição) geralmente são excluídos.
  • No processo real de desenvolvimento e manutenção empresarial, o backup de dados deve ser considerado antes de usar os comandos DELETE, TRUNCATE ou DROP.

7. Resumo

Em bancos de dados como GaussDB, DROP, TRUNCATE e DELETE são comandos comumente usados ​​para excluir dados. Mas no uso comercial real, é necessário fazer escolhas precisas de acordo com as diferentes necessidades, mas não importa qual método de exclusão de dados seja selecionado, a segurança dos dados precisa ser considerada - o importante é dito três vezes: backup ! cópia de segurança! cópia de segurança!

--Terminar.

Acho que você gosta

Origin blog.csdn.net/GaussDB/article/details/132487990
Recomendado
Clasificación