DML(data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
DML 语句都是显式提交,执行完之后,处理的数据,都会放在回滚段中(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK 后,放在回滚段中的数据就会被删除。

DDL(data definition language)数据库定义语言:DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。比如:CREATE、ALTER、DROP等。
DDL 语句都是隐式提交。就是说,不用进行 COMMIT / ROLLBACK

DCL(Data Control Language)数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。



DELETE 语句

DELETE 语句用于删除表中的行。

DELETE FROM 表名称 WHERE 列名称 = 值
  • 删除某行
DELETE FROM users WHERE user_id = '2';

DROP TABLE SYS_EXPORT_SCHEMA后 数据库变小 数据库中drop和delete_dml

  • 删除所有行
    可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name

或者:

DELETE * FROM table_name


DROP 语句

通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

  • DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):
DROP TABLE 表名称
  • DROP DATABASE 语句用于删除数据库:
DROP DATABASE 数据库名称
  • 如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):
TRUNCATE TABLE 表名称


DELETE与DROP 区别

  • DELETE是DML,执行DELETE操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。DROP是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
  • DELETE可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。DROP语句删除表结构及所有数据,并将表所占用的空间全部释放。
  • DELETE语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。DROP语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。