MySQL教程之mysql删除表中的记录
发布时间:2022-08-10 10:07:24 所属栏目:MySql教程 来源:互联网
导读:大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME。 DELETE FROM 从 MySQL 数据表中删除数据,如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。可以在 WHERE 子句
大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME。 DELETE FROM 从 MySQL 数据表中删除数据,如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。可以在 WHERE 子句中指定任何条件。 语法: 1 DELETE FROM table_name WHERE column_name = some_value TRUNCATE TABLE TABLENAME 删除表中的所有行,而不记录单个行删除操作。 语法: 1 TRUNCATE TABLE TABLENAME 区别: 1)DELETE FROM语句可以使用WHERE 对要删除的记录进行选择,TRUNCATE TABLE 将删除表中的所有记录,so,DELETE FROM更灵活。 2)如果DELETE FROM 不加WHERE条件,那么他和TRUNCATE TABLE 是一样的,唯一的区别就是DELETE FROM删除后返回被删除的记录数,而TRUNCATE TABLE返回的是0。 3)如果一个表中有自增的字段,这时使用DELETE和TRUNCATE删除表中所有数据时,如果表中有自增字段,则自增字段将起始值恢复为1,如果不想恢复,则可以在DELETE时加上WHERE的永真条件,使用DELETE FROM TABLENAME WHERE 1即可,但在这样做时会有一些缺点,即扫描表中的每一行记录,所以虽然可以保持自增的最大值,但他的执行成本要比没有WHERE条件的DELETE以及TRUNCATE大得多的多。 4)当表中的数据比较多时,删除全表数据建议使用TRUNCATE TABLE,TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,而DELETE FROM则是将数据一行一行的删除,每删除一行,还要在事务日志中为所删除的行记录一项,贼慢。 5)TRUNCATE TABLE删除后无法ROLLBACK,原因:TRUNCATE是一个DDL语句,将被隐式提交,不能使用ROLLBACK命令,而DELETE是DML语句,可以ROLLBACK(前提是DELETE操作没有COMMIT) 注:SQL语言包括四种主要程序设计语言类别的语句: 数据定义语言(DDL)主要表现为创建删除表,创建索引等; 数据操作语言(DML)主要表现为对数据的追加,更新查询; 数据控制语言(DCL)主要表现为授权(GRANT),撤销授权(REVOKE),拒绝授权(DENY); 事务控制语言(TCL)主要表现为设置保存点(SAVEPOINT),回滚(ROLLBACK),提交(COMMIT)。 总结: DELETE可以通过WHERE语句选择要删除的记录,但执行得速度不快,可以返回被删除的记录数,在未提交情况下可以回滚。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。 (编辑:淮南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |