SQL语句主要划分为3类:

1,DDL(Data Definition Languages)语句:

数据定义语言。定义了不同的数据段、数据库、表、列等数据库对象。 主要由create(添加)、alter(修改)、drop(删除)和 truncate(删除) 四个关键字完成。

程度从强到弱

1、drop table tb

     > drop将表格直接删除,没有办法找回

2、truncate (table) tb

      >删除表中的所有数据,不能与where一起使用

3、delete from tb (where)

      >删除表中的数据(可制定某一行)

truncate和delete的区别

         1、事务:truncate是不可以rollback的,但是delete是可以rollback的;

            > 原因:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,可以rollback

         2、效果:truncate删除后将重新水平线和索引(id从零开始) ,delete不会删除索引

         3、 truncate 不能触发任何Delete触发器。

         4、delete 删除可以返回行数

当执行到DDL语句时,会隐式的将当前会话的事务进行一次“COMMIT”操作,因此在MySQL中执行DDL语句时,应该严格地将DDL和DML完全分开,不能混合在一起执行。

为什么DDL语句会隐式提交? 因为DDL是数据定义语言,在我们的数据库中承担着创建,删除和修改的重要的职责。一旦发生问题,带来的后果很可能是不可估量的。二是在每执行完一次后就进行提交,可以保证流畅性,数据不会发生阻塞,同时也会提高数据库的整体性能。

补充: set autocommit = 0; //1是自动提交,当前session禁用自动提交事物,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

2 . DML(Data Manipulation Language)语句:

数据操纵语句,用于对于数据库记录进行增删改查,并检查数据完整性。包括insert,delete,update,select等

3.   DCL(Data Control Language)语句:

数据控制语句。定义了数据库、表、字段、用户的访问权限和安全级别。包括grant,revoke等