OCP-1Z0-新051-61题版本-1

本文详细解释了Oracle数据库中TRUNCATE TABLE语句的使用,指出其删除表中所有行但不释放存储空间的特点。TRUNCATE是DDL语句,不可回滚,且不触发触发器。它在删除表数据时速度快,但需注意与DELETE操作的区别。在执行前,需禁用所有引用外键。此外,TRUNCATE TABLE还有DROP ALL STORAGE选项用于释放空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QUESTION NO: 1

Evaluate the SQL statement:

TRUNCATE TABLE DEPT;

Which three are true about the SQL statement? (Choose three.)

A. It releases the storage space used by the table.

B. It does not release the storage space used by the table.

C. You can roll back the deletion of rows after the statement executes.

D. You can NOT roll back the deletion of rows after the statement executes.

E. An attempt to use DESCRIBE on the DEPT table after the TRUNCATE statement executes will display an error.

F. You must be the owner of the table or have DELETE ANY TABLE system privileges to truncate the DEPT table

Answer: A,D,F

答案解析:

参考:http://docs.oracle.com/cd/E11882_01/server.112/e25494/general.htm#ADMIN11534

It is a DDL statement and cannot be rolled back  D正确,C错误

A TRUNCATE statement also specifies whether space currently allocated for the table is returned to the containing tablespace after truncation. A正确。B错误

You can truncate any table or cluster in your own schema. Any user who has the DROP ANY TABLE system privilege can truncate a table or cluster in any schema.  F正确。



sys@TESTDB>conn scott/tiger

Connected.

scott@TESTDB>select * from dept_new

  2  ;


    DEPTNO DNAME          LOC

---------- -------------- -------------

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

        50 IT             CHINA

        60 CLERK          BEIJING


6 rows selected.


scott@TESTDB>TRUNCATE TABLE dept_new;


Table truncated.


scott@TESTDB>select * from dept_new;


no rows selected


scott@TESTDB>desc dept_new; desc不会报错。E错误。

 Name                                                                             Null?    Type

 ------------------------------------------------------------- - -------- ------------------------------

 DEPTNO                                                                            NUMBER(2)

 DNAME                                                                             VARCHAR2(14)

 LOC                                                                               VARCHAR2(13)


scott@TESTDB>rollback; --不能rollback

Rollback complete.

scott@TESTDB>select * from dept_new;  --没有返回

no rows selected




Using TRUNCATE

You can delete all rows of the table using the TRUNCATE statement. For example, the following statement truncates the emp table:

TRUNCATE TABLE emp;

Using the TRUNCATE statement provides a fast, efficient method for deleting all rows from a table or cluster. A TRUNCATE statement does not generate any undo information and it commits immediately. It is a DDL statement and cannot be rolled back. A TRUNCATE statement does not affect any structures associated with the table being truncated (constraints and triggers) or authorizations. TRUNCATE statement also specifies whether space currently allocated for the table is returned to the containing tablespace after truncation.

You can truncate any table or cluster in your own schema. Any user who has the DROP ANY TABLE system privilege can truncate a table or cluster in any schema.

Before truncating a table or clustered table containing a parent key, all referencing foreign keys in different tables must be disabled. A self-referential constraint does not have to be disabled.

As a TRUNCATE statement deletes rows from a table, triggers associated with the table are not fired. Also, a TRUNCATE statement does not generate any audit information corresponding to DELETE statements if auditing is enabled. Instead, a single audit record is generated for the TRUNCATE statement being issued.

A hash cluster cannot be truncated, nor can tables within a hash or index cluster be individually truncated. Truncation of an index cluster deletes all rows from all tables in the cluster. If all the rows must be deleted from an individual clustered table, use the DELETE statement or drop and re-create the table.

The TRUNCATE statement has several options that control whether space currently allocated for a table or cluster is returned to the containing tablespace after truncation.

These options also apply to any associated indexes. When a table or cluster is truncated, all associated indexes are also truncated. The storage parameters for a truncated table, cluster, or associated indexes are not changed as a result of the truncation.

These TRUNCATE options are:

  • DROP STORAGE, the default option, reduces the number of extents allocated to the resulting table to the original setting for MINEXTENTS. Freed extents are then returned to the system and can be used by other objects.

  • DROP ALL STORAGE drops the segment. In addition to the TRUNCATE TABLE statement, DROP ALL STORAGE also applies to the ALTER TABLE TRUNCATE(SUB)PARTITION statement. This option also drops any dependent object segments associated with the partition being truncated.

    DROP ALL STORAGE is not supported for clusters.

    Note:

    This functionality is available with Oracle Database 11g release 2 (11.2.0.2).
    TRUNCATE TABLE emp DROP ALL STORAGE;
  • REUSE STORAGE specifies that all space currently allocated for the table or cluster remains allocated to it. For example, the following statement truncates the emp_dept cluster, leaving all extents previously allocated for the cluster available for subsequent inserts and deletes:

    TRUNCATE CLUSTER emp_dept REUSE STORAGE;

     
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值