vlambda博客
学习文章列表

mysql指令delete和truncate的区别(mysql常见面试题)

简介        mysql是一个深受JavaWeb程序员喜爱的关系型数据库,因此在众多的企业项目开发中众多的中小型企业通常会使用mysql来作为后台数据管理数据库。所以,...

        mysql是一个深受JavaWeb程序员喜爱的关系型数据库,因此在众多的企业项目开发中众多的中小型企业通常会使用mysql来作为后台数据管理数据库。所以,在面试的过程中难免少不了会遇到一些关于mysql的题目。本篇文章主要是笔者在面试过程中笔试题目遇到的一道关于mysql数据库的题目,为此在这里对该题目做出回答(该回答只能作为参考答案)。

题目:delete和truncate指令的区别?

1、相同点:两者都可以用来删除表中的数据。

2、不同点:

(1)truncate作为一个数据定义语言,它会被隐式的提交,一旦提交后数据将不能会回滚。delete通常会被拿来具体删除某一行数据,并且会将删除的操作以日志的形式进行保存,以便于数据进行回滚操作。

(2)delete删除数据后,被删除的数据占用的纯纯空间仍然会存在,还可以回复。而truncate删除数据后,本删除的数据占用的存储空间同时会被释放,因此被删除的数据不能够进行恢复。

3、truncate执行的速度比delete快。


举例说明(下面的题目是数据库笔试过程中常见的题目)

题目:Oracle数据库的某一个表中存在若干条数据,其占用的存储空间大小为10MB,如果用delete语句将表中的数据全部删除,则此时该表占用的存储空间为多大?

解题分析:如果读者对上文认真看过的话,想必该题会很快得出答案。

答案:10MB,因为使用delete对表的数据进行删除,删除的只是表中的数据,但是该表的存储空间并不会立即被释放。如果想要删除表数据的同时释放表的存储空间,可以使用truncate。