SQL的删除语句
大家好,我是IT修真院郑州分院第七期的学员冯亚超,一枚正直纯洁善良的JAVA程序员 今天给大家分享一下,SQL的删除语句.
1.背景介绍
“数据库” ---起源于 20 世经 90 年代,当时美国为了战争的需要,把各种情报收集在一起,存储隐藏在计算机内,叫做 Data Base(DB)现在,一切活动都离不开数据。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
“SQL” ----是用于访问和处理数据库的标准的计算机语言,简称结构化查询语言
SQL中的删除语句一共有四种,分别对应不同的功能
2.知识剖析
四种删除语句
delete:
delete from table_name where some_column=some_value
用于删除表中的行
delete from table_name/delete * from table_name;
用于删除表中所有的行,也就是删除表中所有的数据
drop:
drop table table_name;
用于删除整个表,包括表结构
drop database database_name;
用于删除数据库
alter:
alter table table_name drop column column_name;
用于删除表中的列
alter table table_name drop index index_name;
用于删除表中的索引
truncate:
truncate table table_name;
用于删除表内的数据
3.常见问题
四种删除语句中哪些功能是相同的?
哪些功能是不同的?
这几种删除语句的区别?
删除后可以恢复吗?哪些删除是可以恢复的?
4.解决方案
哪些功能是不同的?
1.truncate table table_name 删除表内容释放表空间保留表结构(即:只删除表内的数据,不删除表本身。相当于Delete语句不写where子句一样),不使用事务处理即和事务无关
2.delete table table_name [where子句] delete属于数据操作语言(DML,data maintain Language),不能自动提交事务,需commit提交 这个操作会放到 rollback segement 中,事务提交之后才生效; 如果有相应的 trigger,执行的时候将被触发。 delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动
3. drop table table_name drop属于数据定义语言(DDL,data define language)可以自动提交事务; drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index)【删除表数据同时删除表结构】; 依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
这几种删除语句的区别?
在速度上,一般来说,drop> truncate > delete.
如果想要删除表,用drop;
如果想要保留该表,但要删除所有记录,而且和事务无关时,用truncate;
当你要删除部分记录时,或者想触发trigger,用delete,注意要带上where子句.
注意: 对于有主外键关系的表,不能使用truncate而应该使用不带where子句的delete语句,由于truncate不记录在日志中,不能够激活触发器
删除后可以恢复吗?哪些删除是可以恢复的?
数据库删除后的数据想要恢复分三种情况:
1.有没有备份?
2.有没有开启binlog?
3.如果两者都没开,只能使用第三方恢复软件,或者找专业的数据恢复公司
5.编码实战
6.扩展思考
关于alter语句
alter语句属于drop语句的分支
--------------------------------------------------------------------------------------------------------------------
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !