sql语句中----删除表数据drop、truncate和delete的用法
虽然国语自产精品视频在线看小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方。
说到删【shuō dào shān】🗽除表数【chú biǎo shù】据的关【jù de guān】键字,大家记得最多的可能🧑就是⏯delete了
然而我们做数【men zuò shù】据【jù】🚨库开发,读取数据【jù】🚨库数据【kù shù jù】🚨.对另外🈹的两兄弟用得🅾就比较【jiù bǐ jiào】少了⛵
现在来【xiàn zài lái】介绍另【jiè shào lìng】🌜外两个🥠兄弟,都是删除表数【chú biǎo shù】据的【de】🐍,其实也是很容👬易理解的【de】
老大------drop
出没场【chū méi chǎng】合🏵:drop table tb --tb表示数🍂据表的名字,下同【xià tóng】
绝招【jué zhāo】📚:删除内🍅容和定🚡义💛,释放空间。简单来说就是把整个【bǎ zhěng gè】表【biǎo】去掉.以后要【yǐ hòu yào】新增数据是不可能的🚖,除非新【chú fēi xīn】增一个【zēng yī gè】😥表【biǎo】,
例如:一个班就是一🎤个表,学生就【xué shēng jiù】是表中的数据【de shù jù】✒,学生的职务就是定义【shì dìng yì】📂
drop table class,就是把🎎整个班移除.学生和职务都【zhí wù dōu】🍌消失【xiāo shī】
比如下【bǐ rú xià】🥦面TestSchool数据库📉中有两【zhōng yǒu liǎng】张表【zhāng biǎo】[Classes]表和🐲[Teacher]表
当执行下面代码之后
Classes表就被【biǎo jiù bèi】清楚,一干二净! 删除得非常暴🎼力【lì】,作为老😗大实至名归【míng guī】🤗
老二-----truncate
出没场【chū méi chǎng】🏷合:truncate table tb
绝招【jué zhāo】:删除内容、释放空🎵间但不删除定【shān chú dìng】义。与drop不同的是💊,他只是【tā zhī shì】🎵清空表【qīng kōng biǎo】数据而已🔉,他比较【tā bǐ jiào】温柔✨.
同样也是一个🕑班【bān】,他只去除所有的学生.班还在【bān hái zài】🏃,职务【zhí wù】还在,如果有【rú guǒ yǒu】新增的🕝学生可😕以进去,也可以【yě kě yǐ】分配上🤲职务【zhí wù】
删除内🛷容很容【róng hěn róng】易理解【lǐ jiě】🤒,不删除【bú shān chú】定义也很容易理解【lǐ jiě】🤒,就是保留表的🏉数据结【shù jù jié】🧓构
上图就表现了:删除内容
执行语句之后🍛,发现数【fā xiàn shù】据表的【jù biǎo de】🌃结构还在【zài】🌊,也就是不删除定义
至于释【zhì yú shì】🧙放空间,看下下【kàn xià xià】面两幅图✈.你们就🕙会明白【huì míng bái】的
右图【yòu tú】:Id列标识列,因之前delete过行数【guò háng shù】据📿,所以会出现标⛔识列不连续🛶(体现了【tǐ xiàn le】delete删除是【shān chú shì】不释放📫空间的【kōng jiān de】⚓)
经过【jīng guò】truncate table Teacher 之后 再新增【zài xīn zēng】🚸三条数据🕐
右图:同样💫Id是标识【shì biāo shí】列【liè】👉,发现插入数据的时候【de shí hòu】,标识列【liè】👉连续了🐨(体现了【tǐ xiàn le】truncate删除是释放空🚩间)
注意【zhù yì】:truncate 不能删除行数据🤚,要删就【yào shān jiù】🙎要把表【yào bǎ biǎo】🎨清空
老三-----delete
出没场【chū méi chǎng】合:delete table tb --虽然也【suī rán yě】是删除📛整个表的数据🎨,但是过程是痛【chéng shì tòng】苦的(系统一行一行【háng yī háng】🛂地删🕐,效率较【xiào lǜ jiào】truncate低😰)
或【huò】⬜
delete table tb where 条件【tiáo jiàn】🎠
绝招:删除内😿容不删【róng bú shān】除定义【chú dìng yì】💄,不释放🌄空间🧜。三兄弟【sān xiōng dì】之中最【zhī zhōng zuì】容易欺负的一个
然后关【rán hòu guān】于🤱delete的就不【de jiù bú】详细说明了【míng le】,大家都📬懂的🗽
关于truncate的小小总结:
truncate table 在功能🏇上与不带 WHERE 子句的🙂 delete语句相【yǔ jù xiàng】同:二者均删除表💉中的全【zhōng de quán】部行【bù háng】。
但🤙 truncate 比【bǐ】 delete速度快,且使用的系统和事务【hé shì wù】🥛日志资➕源少【yuán shǎo】。
delete 语句每【yǔ jù měi】次删除一行【háng】,并在事务日志中为所👆删除的每行【háng】记♎录一项【lù yī xiàng】🔃。所以可【suǒ yǐ kě】😮以对delete操作进行【háng】roll back
1、truncate 在各种【zài gè zhǒng】🏧表上无【biǎo shàng wú】论是大🕹的【de】还是小的都【xiǎo de dōu】非常快。如果有ROLLBACK命令💆Delete将被撤销【xiāo】♟,而 truncate 则不会被撤销【xiāo】♟。
2、truncate 是一个【shì yī gè】🐖DDL语言【yǔ yán】,向其他【xiàng qí tā】所有的【suǒ yǒu de】💇DDL语言一【yǔ yán yī】样,他将被隐式提【yǐn shì tí】交,不能对【bú néng duì】 truncate 使用【shǐ yòng】ROLLBACK命令💆。
3、truncate 将重新设置高水平线和所有的【suǒ yǒu de】💇索引。在对整【zài duì zhěng】个表和🕍索引进行完全浏览时🤷,经过 truncate 操作后【cāo zuò hòu】🖨的【de】表比Delete操作后【cāo zuò hòu】🖨的【de】表要快得多。
4、truncate 不能触发任何【fā rèn hé】🚦Delete触发器【chù fā qì】🔬。
5、当表被🦅清空后🦄表和表🌒的索引【de suǒ yǐn】讲重新📸设置成初始大小,而delete则不能📣。
6、不能清空父表
关键词:sql语句
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0