MYSQL语法中delete,drop和alter分别是用来删除什么的?有什么区别?删除了以后可以恢复吗?哪些可以恢复?

本文深入解析了SQL中的DML(数据操控语言)和DDL(数据定义语言),详细对比了delete、drop、truncate等命令的区别,以及alter命令的特殊用途。通过实例讲解了如何正确使用这些命令,避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景介绍

       大家经常会用到mysql中的delete、truncate、drop,update、alter等,但是比如delete、truncate、drop这三个都是删除命令,但是他们这三个所作用的范围不一样,用法还是有很大的差异。再比如说update、alter,都是修改,但是它们也是存在差异的。

2.知识剖析

1) MYSQL三种操作语言:

 

DML(data manipulation language):分别包含SELECT、UPDATE、INSERT、DELETE,是对数据库里的数据进行操作的语言。

DDL(data definition language):分别包含CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构、数据类型、表之间的链接和约束等初始化工作。

DCL(Data Control Language):是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

 

 

DML

DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。

DML的主要语句(操作)

Insert语句:向数据表张插入一条记录。

Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。

Update语句:用于修改已存在表中的记录的内容。

 

DDL

DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。

Create创建数据表,

Alter可以更改该表的字段,

Drop可以删除这个表,

从这里我们可以看到,DDL所站的高度,不会对具体的数据进行操作。

 

DDL的主要语句(操作)

Create语句:可以创建数据库和数据库的一些对象。

Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。

Alter语句:修改数据表定义及属性。

 

2)AlterDeleteDrop相关语法

 

 

a、Alter

删除,添加或重新定义列

删除列:alter table tablename drop columnname

增加列:alter table tablename add columnname type 

在某列后增加一列:alter table tablename add columnname type after columnname2 

更改列定义或名称

alter table tablename modify columnname type

重命名表

alter table tablename rename tablename2新表名

       

b、Delete

语法

DELETE FROM tablename [WHERE Clause]

 

c、Drop

删除数据库:drop database databasename

删除一个不确定存在的数据库:drop database if exists databasename;

删除表:drop table tablename

删除一个不确定存在的数据库:drop table if exists tablename;

简而言之,DDL语句是对表结构的修改,DML语句是对表数据的修改

 

(注:

tablename是对应的数据库表名

databasename是对应的数据库名

columnname 是列名

type 类型

 

3.常见问题

 1)delete,drop ,truncate都代表删除,有什么区别?
 2)alter跟其他的有什么区别
 3)drop、delete、alter该如何使用

4.解决方案

 

 1)delete,drop ,truncate都代表删除,有什么区别?

相同点:

 

delete,drop ,truncate都代表删除

不同点:

a、truncate和 delete只删除数据不删除表的结构(定义) 

b、drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 

c、delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. 

d、 truncate,drop是DDL操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发   trigger. 

e、delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动显然drop语句将表所占用的空间全部释放 。

truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始).  drop storage;

f、删除速度,一般来说: drop> truncate > delete 

 

 2)alter跟其他的有什么区别

alter是针对表字段、表名操作,新增、修改。

delete是针对表数据,进行删除,drop是删掉表

 

 3)drop、delete、alter该如何使用

 

 

 

a、.想删除表,用drop 
b、想保留表而将所有数据删除. 如果和事务无关,用truncate即可

c、如果和事务有关,或者想触发trigger,还是用delete.

 

5.编码实战

 

6.扩展思考

a、在进行数据库DML操作前,一定要进行数据备份,再进行改、删。对于需要删除的数据,最好能将其置为无效,不要删除。

b、最好不要在生产环节(正式环境)上直接进行DML操作。

推荐两篇文章给大家:

SQL SERVER数据恢复方法:https://blog.youkuaiyun.com/dba_huangzj/article/details/8491327

MYSQL数据恢复方法:https://blog.youkuaiyun.com/gzt19881123/article/details/51842740

7.    参考文献

https://zhidao.baidu.com/question/57286294.html

 

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值