Índice
2. Breve introdução de DROP & TRUNCATE & DELETE do GaussDB
3. Comando DROP TABLE e exemplos do GaussDB
4. Comando TRUNCATE e exemplos do GaussDB
5. Comando DELETE e exemplos do GaussDB
2. Assuntos que precisam de atenção
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.