📜  Oracle截断表(1)

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

Oracle截断表

在 Oracle 数据库中,截断是一项操作,用于删除表中的所有行,但保留表的结构。这通常用于在重新填充表之前删除表的旧数据。

截断表的语法

以下是 Oracle 截断表的语法:

TRUNCATE TABLE table_name;

其中,table_name 是要截断的表名。

截断表的注意事项
  • TRUNCATE TABLE 语句不能与 WHERE 子句一起使用,因为 TRUNCATE TABLE 语句将删除整个表,而不是特定的行。

  • TRUNCATE TABLE 会重置表的高水位标记。高水位标记是分配给表空间块的最高块 ID,高水位标记以下的空间视为未分配空间。如果未截断表并保留了某些数据,则高水位标记仍然保持不变。

  • TRUNCATE TABLE 不能回滚。

截断表的优势

与删除表中的每一行相比,截断表速度更快。这是因为 TRUNCATE TABLE 删除整个表,而删除表中的每一行则是通过执行一系列的 DELETE 语句。

截断表的示例

下面是 Oracle 截断表的一个示例:

创建一个名为 Customers 的表并插入一些数据:

CREATE TABLE Customers (
    CustomerID   INT,
    CustomerName VARCHAR2(50),
    ContactName  VARCHAR2(50)
);

INSERT INTO Customers (CustomerID, CustomerName, ContactName) VALUES (1, 'ABC Company', 'John Smith');
INSERT INTO Customers (CustomerID, CustomerName, ContactName) VALUES (2, 'XYZ Company', 'Jane Doe');
INSERT INTO Customers (CustomerID, CustomerName, ContactName) VALUES (3, '123 Company', 'Bob Johnson');

删除 Customers 表中的数据:

TRUNCATE TABLE Customers;

现在,Customers 表中不包含任何数据。