百度
360搜索
搜狗搜索

drop table和delete区别,在SQL语言中,DELETE语句和DROP TABLE语句有何区别详细介绍

本文目录一览: 举例说明在SQL中,DELETE语句与DROP TABLE的区别

delete是清除表的记录,而drop
table
是删除表
例如:delete
from
表1
执行后,表1的记录全部被删除,你执行select
*
from
表1
看到的是一个空表
而drop
table
表1
执行后,表1就不存在了
,你执行select
*
from
表1
提示是:对象名
'表1'
无效。
DELETE
是有条件的删除表中的数据,如果不写条件,全表删除,而删除后,表仍然存在,仍可以对表进行操作。具体语法为DELETE
FROM
TABLE
WHERE
条件。
同样,还有一个TRUNCATE
TABLE
TABLENAME语句,是全表不提交删除,也是删除数据,表仍然存在。
DROP
TABLE,是从数据库中删除表。删除后,表结构不在存在,无法再对该表进行任何操作。
举个通俗的例子,比如你有一个水桶,桶里装着水。
而DELETE或者TRUNCATE,只是相当于把水倒掉,而桶仍然存在。
而DROP
TABLE,则相当于把桶都扔掉了。

drop、truncate、delete三种删除的区别

drop:drop table 表名 (删除整个表)
删除内容和定义,并释放空间。执行drop语句,将使此表的结构一起删除。也就是删除整个表。操作不能回滚。
truncate:truncate table 表名 (清空表中的所有数据)
删除内容、释放空间但不删除定义(也就是保留表的数据结构)。与drop不同的是,只是清空表数据而已。 truncate不能删除行数据,虽然只删除数据,但是比delete彻底,它只删除表数据。操作不能回滚。整表数据清空。
delete:delete from 表名 (where 列名 = 值) (删除一行数据)
与truncate类似,delete也只删除内容、释放空间但不删除定义;但是delete即可以对行数据进行删除,也可以对整表数据进行删除。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存,以便进行进行回滚操作。
原文链接: https://blog.csdn.net/wx1528159409/article/details/88058834

drop,truncate和delete区别是什么?

drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
???TRUNCATE?TABLE?则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
(2)表和索引所占空间。
???当表被TRUNCATE?后,这个表和索引所占用的空间会恢复到初始大小,
???DELETE操作不会减少表或索引所占用的空间。
???drop语句将表所占用的空间全释放掉。
(3)一般而言,drop?>?truncate?>?delete
(4)应用范围。
????TRUNCATE?只能对TABLE;?????????DELETE可以是table和view
(5)TRUNCATE?和DELETE只删除数据,?DROP则删除整个表(结构和数据)。
(6)truncate与不带where的delete?:只删除数据,而不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。
(7)delete语句为DML(data?maintain?Language),这个操作会被放到?rollback?segment中,事务提交后才生效。如果有相应的?tigger,执行的时候将被触发。
(8)truncate、drop是DLL(data?define?language),操作立即生效,原数据不放到?rollback?segment中,不能回滚
(9)在没有备份情况下,谨慎使用?drop?与?truncate。要删除部分数据行采用delete且注意结合where来约束影响范围。回滚段要足够大。要删除表用drop;若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现。如果和事务有关,或老师想触发trigger,还是用delete。
(10)?Truncate?table?表名?速度快,而且效率高,因为:?
truncate?table?在功能上与不带?WHERE?子句的?DELETE?语句相同:二者均删除表中的全部行。但?TRUNCATE?TABLE?比?DELETE?速度快,且使用的系统和事务日志资源少。DELETE?语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE?TABLE?通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。?
(11)?TRUNCATE?TABLE?删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用?DELETE。如果要删除表定义及其数据,请使用?DROP?TABLE?语句。?
(12)?对于由?FOREIGN?KEY?约束引用的表,不能使用?TRUNCATE?TABLE,而应使用不带?WHERE?子句的?DELETE?语句。由于?TRUNCATE?TABLE?不记录在日志中,所以它不能激活触发器。
一、delete
1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。
2、delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。
3、delete语句不影响表所占用的extent,高水线(high?watermark)保持原位置不变。
二、truncate
1、truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、truncate会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse?storage,。不会记录日志,所以执行速度很快,但不能通过rollback撤消操作(如果一不小心把一个表truncate掉,也是可以恢复的,只是不能通过rollback来恢复)。
3、对于外键(foreignkey?)约束引用的表,不能使用?truncate?table,而应使用不带?where?子句的?delete?语句。
4、truncatetable不能用于参与了索引视图的表。
三、drop
1、drop是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、drop语句删除表结构及所有数据,并将表所占用的空间全部释放。
3、drop语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变

在SQL中,DELETE语句与DROPTABLE有什么区别

delete 将表中数据删除,drop table将表本身删除,
在SQL Server中truncate将表中数据清空,可以将自动标识列归零

sql语句中删除表数据drop,truncate和delete的区别

drop table xx --xx是数据表的名字
作用:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
drop table test,就是把整个表 移除.里面的数据都消失
比如下面有一个[FusionChartsDB]数据库中的test表。
执行 drop table FC_Products后,FC_Products删除的一干二净。
truncate table xx
作用:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据而已,不删除表结构。
如下 test表有数据。
执行 truncate table test 后,内容被删除 表结构还在。
truncate 释放空间的体现。truncate table test 后 向test表添加数据,id标识列连续了(体现了truncate删除是释放空间)
用delete删除 数据,然后添加。可以看到添加之后id标识不连续。(说明delete删除不释放空间)
delete table xx
作用:也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率较truncate低) 或delete table tb where 条件
删除内容不删除定义,不释放空间。
truncate 与delete 比较:
truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行。
truncate 比 delete速度快,且使用的系统和事务日志资源少。
truncate 操作后的表比Delete操作后的表要快得多。
当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

DROP TABLE,TRUNCATE TABLE和DELETE的区别

sql之truncate、delete与drop区别相同点:truncate和不带where子句的delete,以及drop都会删除表内的数据不同点:1.truncate和delete只删除数据不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。2.delete语句是数据库操作语言(dml),这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。truncate、drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollbacksegment中,不能回滚,操作不触发trigger。3.delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动显然drop语句将表所占用的空间全部释放。truncate语句缺省情况下见空间释放到minextents个extent,除非使用reusestorage;truncate会将高水线复位(回到最开始)。4.速度,一般来说:drop>truncate>delete5.安全性:小心使用drop和truncate,尤其没有备份的时候.否则哭都来不及使用上,想删除部分数据行用delete,注意带上where子句.回滚段要足够大.想删除表,当然用drop想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。如果是整理表内部的碎片,可以用truncate跟上reusestroage,再重新导入/插入数据。TRUNCATETABLE在功能上与不带WHERE子句的DELETE语句相同:二者均删除表中的全部行。但TRUNCATETABLE比DELETE速度快,且使用的系统和事务日志资源少。DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATETABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。TRUNCATETABLE删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用DELETE。如果要删除表定义及其数据,请使用DROPTABLE语句。对于由FOREIGNKEY约束引用的表,不能使用TRUNCATETABLE,而应使用不带WHERE子句的DELETE语句。由于TRUNCATETABLE不记录在日志中,所以它不能激活触发器。

数据库表的删除方式有drop、delete和truncate各有什么特点?

删除数据的速度: drop> truncate > delete
drop、delete和truncate的比较:
一、Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行)。
删除某一行:Delete from 数据表名称 where 列名称=值;
删除所有行:Delete * from 数据表名称
二、Drop :删除数据表或数据库,或删除数据表字段。
删除数据库:drop database 数据库名称
删除数据表:(表的结构、属性、索引也会被删除)
use 数据库名称
drop table 数据表1名称,数据表2名称
删除数据表字段(列):
use 数据库名称
alter table 数据表名称
drop column 字段名(列名称)
三、Truncate:删除数据表中的数据(仅数据表中的数据,不删除表)。 truncate table 数据表名称“ TRUNCATE TABLE语句是一种快速、无日志记录的方法。TRUNCATE TABLE语句与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE语句速度更快,并且使用更少的系统资源和事务日志资源。”
delete from 表名:删除所有记录,表结构还在,写日志,可以恢复的,速度慢。
drop talbe 表名:删除表的结构和数据。
truncate talbe 表名:删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。
出没场合:drop table tb --tb表示数据表的名字。绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表,例如:一个班就是一个表,学生就是表中的数据,学生的职务就是定义,drop table class,就是把整个班移除.学生和职务都消失。

在SQL语言中,DELETE语句和DROP TABLE语句有何区别

delete可以删除表中的一行记录或一些记录
drop table是删除表
delete 是删除表里记录,表还在
drop 删除表,表不存在的

mysql 用drop和delete方法删除用户的区别

drop 是删除库 或者删除表 比如:
drop database 数据库名
drop table 表名
delete 是删除记录 比如:
delete from 表名 where 条件
如果写错了的话 是执行不了的呢
希望可以帮到你!
drop
drop user 用户名;
语法:drop user 用户名;
作用:删除已经存在的用户,例如要删除yan这个用户,(drop user yan;)默认删除的是yan@"%"这个用户,如果还有其他用户,例如yan@"localhost",yan@"ip",则不会一起被删除。如果只存在一个用户yan@"localhost",使用语句(drop user yan;)会报错,应该用(drop user yan@"localhost";)如果不能确定(用户名@机器名)中的机器名,可以在mysql中的user表中进行查找,user列对应的是用户名,host列对应的是机器名。
delete
delete from user where user="用户名" and host="localhost";
delete也是删除用户的方法,例如要删除yan@"localhost"用户,则可以(delete from user where user="yan" and host="localhost";)
mysql 用drop和delete方法删除用户的区别如下:
drop user 用户名
删除已经存在的用户,例如要删除xiaoming这个用户:
drop user xiaoming;
如果明确哪个host下可以这样明确删除:
drop user xiaoming@"localhost";
drop可以删除数据库和删除表。
drop database 数据库名;
drop table 表名;
这个删除是不可逆的,请慎重。
delete from user where user="用户名";
delete也是删除用户的方法,例如要删除xiaoming@"localhost"用户,则可以delete from user where user="xiaoming" and host="localhost";
就是删除用户表的记录,就和删除其他表的删除记录一样。
drop删除掉的用户不仅将user表中的数据删除,还会删除同库中和其他权限表的内容。而delete 只是删除了user表的内容,其他表权限不会被删除,后期如果命名一个和已删除用户相同的名字,权限就会被继承。
drop是DDL(数据定义语言)自动commit,隐式提交,无法回滚,做这个操作需慎重,而delete是DML(数据操作语言)显示提交,需要手工commit,可以回滚。

阅读更多 >>>  为什么桌面的软件被删

网站数据信息

"drop table和delete区别,在SQL语言中,DELETE语句和DROP TABLE语句有何区别"浏览人数已经达到23次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:drop table和delete区别,在SQL语言中,DELETE语句和DROP TABLE语句有何区别的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!