📅  最后修改于: 2023-12-03 15:03:25.135000             🧑  作者: Mango
在 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
表中不包含任何数据。