验证数据库中drop.delete.truncate删除语句的不同

写在前数据库中drop.delete.truncate删除语句

语句是否删除数据是否删除结构(定义)删除范围可选速度
drop
delete
truncate

通过实际操作验证以上结论

C:\Users\qiang>sqlplus system/system@bngt as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on 星期日 8月 11 11:04:42 2019
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
/*A1首先用createt table语句复制一份与原表有相同结构,相同数据的表—bak*/
SQL> create table dlsys.tchuman_bak as select * from dlsys.tchuman;
表已创建。
/*B1比较bak表和原表的区别*/
SQL> select count(*) from dlsys.tchuman;

  COUNT(*)
----------
        34

SQL> select count(*) from dlsys.tchuman_bak;

  COUNT(*)
----------
        34
/*通过select原表与bak表可以知道现在两表数据一致*/
/*通过desc原表与bak表可以知道现在两表结构一致*/
SQL> desc dlsys.tchuman;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 HUMANID                                   NOT NULL NUMBER(38)
 HUMANCODE                                          VARCHAR2(80)
 HUMANNAME                                          VARCHAR2(80)
 HUMANDESCRIPTION                                   VARCHAR2(255)
 CREATEDATE                                         DATE
 VALIDFROMDATE                                      DATE
 VALIDTODATE                                        DATE
 VALIDFLAG                                          NUMBER(38)
 HUMANPASSWORD                                      VARCHAR2(60)
 UNITID                                             NUMBER(38)
 DUTYID                                             NUMBER(38)
 DISPLAYORDER                                       NUMBER(38)
 PRIORITY                                           NUMBER(38)
 SIGNATUREIMAGE                                     BLOB
 HUMANPROPERTY                                      NUMBER(38)
 GENDERID                                           NUMBER(38)
 AGENUM                                             NUMBER(38)
 PORTRAITID                                         NUMBER(38)
 TELOFFICE                                          VARCHAR2(80)
 TELHOME                                            VARCHAR2(80)
 TELMOBILE                                          VARCHAR2(80)
 EMAIL                                              VARCHAR2(100)
 ADDRESS                                            VARCHAR2(300)
 POSTALCODE                                         VARCHAR2(20)
 HIDEFLAG                                           NUMBER(38)
 MACADDRESS                                         VARCHAR2(50)
 KEYID                                              VARCHAR2(60)
 SIGNCERT                                           BLOB
 ENCCERT                                            BLOB
 CACERTSN                                           VARCHAR2(50)
 ISNEEDCALOGON                                      NUMBER(38)
 PARTTIMEUNITID                                     NUMBER(38)
 
SQL> desc dlsys.tchuman_bak;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 HUMANID                                   NOT NULL NUMBER(38)
 HUMANCODE                                          VARCHAR2(80)
 HUMANNAME                                          VARCHAR2(80)
 HUMANDESCRIPTION                                   VARCHAR2(255)
 CREATEDATE                                         DATE
 VALIDFROMDATE                                      DATE
 VALIDTODATE                                        DATE
 VALIDFLAG                                          NUMBER(38)
 HUMANPASSWORD                                      VARCHAR2(60)
 UNITID                                             NUMBER(38)
 DUTYID                                             NUMBER(38)
 DISPLAYORDER                                       NUMBER(38)
 PRIORITY                                           NUMBER(38)
 SIGNATUREIMAGE                                     BLOB
 HUMANPROPERTY                                      NUMBER(38)
 GENDERID                                           NUMBER(38)
 AGENUM                                             NUMBER(38)
 PORTRAITID                                         NUMBER(38)
 TELOFFICE                                          VARCHAR2(80)
 TELHOME                                            VARCHAR2(80)
 TELMOBILE                                          VARCHAR2(80)
 EMAIL                                              VARCHAR2(100)
 ADDRESS                                            VARCHAR2(300)
 POSTALCODE                                         VARCHAR2(20)
 HIDEFLAG                                           NUMBER(38)
 MACADDRESS                                         VARCHAR2(50)
 KEYID                                              VARCHAR2(60)
 SIGNCERT                                           BLOB
 ENCCERT                                            BLOB
 CACERTSN                                           VARCHAR2(50)
 ISNEEDCALOGON                                      NUMBER(38)
 PARTTIMEUNITID                                     NUMBER(38)
/*C1使用drop语句对bak表进行删除*/
SQL> drop table dlsys.tchuman_bak;

表已删除。
/*D1使用desc查看bak表是否存在*/
SQL> desc dlsys.tchuman_bak;
ERROR:
ORA-04043: 对象 dlsys.tchuman_bak 不存在
/*对于delete语句使用类似的步骤*/
/*A2首先用createt table语句复制一份与原表有相同结构,相同数据的表—bak*/
SQL> create table dlsys.tchuman_bak as select * from dlsys.tchuman;
表已创建。
/*B2使用delete语句对bak表进行删除*/
SQL> delete dlsys.tchuman_bak;
已删除34行。
/*使用desc语句可以知道bak表的结构依旧存在*/
SQL> desc dlsys.tchuman_bak;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 HUMANID                                   NOT NULL NUMBER(38)
 HUMANCODE                                          VARCHAR2(80)
 HUMANNAME                                          VARCHAR2(80)
 HUMANDESCRIPTION                                   VARCHAR2(255)
 CREATEDATE                                         DATE
 VALIDFROMDATE                                      DATE
 VALIDTODATE                                        DATE
 VALIDFLAG                                          NUMBER(38)
 HUMANPASSWORD                                      VARCHAR2(60)
 UNITID                                             NUMBER(38)
 DUTYID                                             NUMBER(38)
 DISPLAYORDER                                       NUMBER(38)
 PRIORITY                                           NUMBER(38)
 SIGNATUREIMAGE                                     BLOB
 HUMANPROPERTY                                      NUMBER(38)
 GENDERID                                           NUMBER(38)
 AGENUM                                             NUMBER(38)
 PORTRAITID                                         NUMBER(38)
 TELOFFICE                                          VARCHAR2(80)
 TELHOME                                            VARCHAR2(80)
 TELMOBILE                                          VARCHAR2(80)
 EMAIL                                              VARCHAR2(100)
 ADDRESS                                            VARCHAR2(300)
 POSTALCODE                                         VARCHAR2(20)
 HIDEFLAG                                           NUMBER(38)
 MACADDRESS                                         VARCHAR2(50)
 KEYID                                              VARCHAR2(60)
 SIGNCERT                                           BLOB
 ENCCERT                                            BLOB
 CACERTSN                                           VARCHAR2(50)
 ISNEEDCALOGON                                      NUMBER(38)
 PARTTIMEUNITID                                     NUMBER(38)
/*使用select语句可以知道bak表的数据已经不存在*/
SQL> select count(*) from dlsys.tchuman_bak;
  COUNT(*)
----------
         0

/*对于truncate语句使用类似的步骤*/
/*A2首先用createt table语句复制一份与原表有相同结构,相同数据的表—bak*/
SQL> create table dlsys.tchuman_bak as select * from dlsys.tchuman;
表已创建。
/*B2使用truncate语句对bak表进行删除*/
SQL> truncate table dlsys.tchuman_bak;
表被截断。
/*使用desc语句可以知道bak表的结构依旧存在*/
SQL> desc dlsys.tchuman_bak;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 HUMANID                                   NOT NULL NUMBER(38)
 HUMANCODE                                          VARCHAR2(80)
 HUMANNAME                                          VARCHAR2(80)
 HUMANDESCRIPTION                                   VARCHAR2(255)
 CREATEDATE                                         DATE
 VALIDFROMDATE                                      DATE
 VALIDTODATE                                        DATE
 VALIDFLAG                                          NUMBER(38)
 HUMANPASSWORD                                      VARCHAR2(60)
 UNITID                                             NUMBER(38)
 DUTYID                                             NUMBER(38)
 DISPLAYORDER                                       NUMBER(38)
 PRIORITY                                           NUMBER(38)
 SIGNATUREIMAGE                                     BLOB
 HUMANPROPERTY                                      NUMBER(38)
 GENDERID                                           NUMBER(38)
 AGENUM                                             NUMBER(38)
 PORTRAITID                                         NUMBER(38)
 TELOFFICE                                          VARCHAR2(80)
 TELHOME                                            VARCHAR2(80)
 TELMOBILE                                          VARCHAR2(80)
 EMAIL                                              VARCHAR2(100)
 ADDRESS                                            VARCHAR2(300)
 POSTALCODE                                         VARCHAR2(20)
 HIDEFLAG                                           NUMBER(38)
 MACADDRESS                                         VARCHAR2(50)
 KEYID                                              VARCHAR2(60)
 SIGNCERT                                           BLOB
 ENCCERT                                            BLOB
 CACERTSN                                           VARCHAR2(50)
 ISNEEDCALOGON                                      NUMBER(38)
 PARTTIMEUNITID                                     NUMBER(38)
/*使用select语句可以知道bak表的数据已经不存在*/
SQL> select count(*) from dlsys.tchuman_bak;

  COUNT(*)
----------
         0

从上面的操作可以知道不同删除语句的区别由于desc只能在sqlplus中运行,所以本次验证在sqlplus中进行,无法验证删除速度,如果感兴趣可以通过plsql自行验证。
总结
面试题中经常会遇到这样的问题,答案是固定的网上肯定是十分详细的,我们一直相信拿来主义,没有想过去验证,往往有时候只知其然而不知其所以然,知识更多的是了解其本质而不是其表象,09-08-11共勉。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值