📜  截断 oracle - SQL (1)

📅  最后修改于: 2023-12-03 15:09:58.593000             🧑  作者: Mango

截断 Oracle - SQL

简介

在 Oracle 数据库中,截断是指将表中所有数据删除,但是保留表的结构。截断操作比删除所有数据更高效,因为它不需要管理或重建表的索引和约束。

语法

截断表的基本语法如下:

TRUNCATE TABLE table_name;
例子

考虑以下示例,其表名为 students

CREATE TABLE students (
   id    INT PRIMARY KEY,
   name  VARCHAR2(50)
);

INSERT INTO students(id, name) VALUES(1, '张三');
INSERT INTO students(id, name) VALUES(2, '李四');
INSERT INTO students(id, name) VALUES(3, '王五');

现在,如果要删除 students 表中的所有行,我们可以使用以下语句:

TRUNCATE TABLE students;
注意事项
  • 截断操作将删除所有行而不是仅删除部分行,因此请谨慎使用。
  • TRUNCATE 操作比 DELETE 操作更快,因为 TRUNCATE 操作不记录日志并在事务处理结束后立即释放表空间。
  • 当使用 TRUNCATE 操作时,Oracle 将锁定整个表而不是每个行,因此可能会影响其他会话中的查询和 DML 操作。
  • 如果表包含带有参考完整性约束的行,则可能必须使用 CASCADE 参数来删除所有关联行。
总结

截断操作是 Oracle 中高效删除表中所有数据的快捷方式。它比使用 DELETE 操作更快,并且不需要管理或重建表的索引和约束。但请注意,截断表会删除所有行,因此请谨慎使用。