操纵数据表(DML)之删除数据DELETE

一、DELETE 语句

使用注意事项:

1、DELETE语句只会删除整条记录,而不能对记录中的某个字段进行删除;

2、删除一行数据时可能导致与其他表的引用完整性出现问题,一次必须注意删除的顺序;

3、DELETE语句知识删除表中的数据,并不会对整个表进行移除工作,移除使用FROP TABLE语句。

4、DELETE语句在删除数据时会产生回退日志信息,因此可以使用事务回滚ROLLBACK语句进行恢复。

语法如下:

DELETE 删除行的语法如下:

DELETE [FROM] table [WHERE condition];

如果删除的记录所在的表有外键,需要按照顺序删除,先删除副表记录,再删除主表记录。

二、使用TRUNCATE 清空表数据

TRUNCATE 可以快速删除表数据,但是不可以回滚事(ROLLBACK)务进行恢复数据。

TRUNCATE 实际并不是DML数据操作语言的一部分,他还是属于DDL数据定义语言,与CREATE TABLE 等语句一样,并具有撤销功能。语法如下:

TRUNCATE TABLE [schema.] table
    [ {PRESERVE | PURGE} MATERIALLZED VIEW LOG ]
    [ {DROP [ ALL ] | REUSER } STORAGE ];

其中PRESERVE和PURGE指定是否在截断表时,同时保留或清除与表相关的物化视图日志,默认PRESERVE,表示保留。STORAGE子句指定存储选项,指示是否在清空表时,也连带地将对表分配的空间回收。其中FROP STORAGE 是默认值,用来将为表已经分配的表空间回收给表空间一遍其他的表可以使用,否则只能让表自己使用这部分空间。而REUSER STORAGE 则是让表重用这不风空间,可以减少重新为表插入数据时的空间分配过程。使用时注意:

1、不能够回滚使用的TRUNCATE TABLE 清空的表;

2、不能够使用FLASHBBACK TABLE 闪回恢复到使用TRUNCATE TABLE 之前的状态;

3、不能够清空属于一个聚簇一部分的一个表,必须是清空一个簇、杀出来自表的所有航数据,或者是删除并重建一个表。

4、如果一个表具有主外键关系,在清空表之前必须先禁用掉约束,如果是一个自引用约束的表,那么可以使用TRUNCATE TABLE进行清除而无须禁用约束。

三、使用MERGE合并表数据

MEGER 是一个组合命令,它可以组合INSERT 、UPDATE 和DELETE 来合并来源数据到目标表。他是一个决策性的语句,通过他,可以从一个或多个数据源中选择诗句,然后依照指定的条件进行匹配,已决定是否对表或视图执行INSERT 、UPDATE 或DELETE 操作。语法如下

MEGER [hint]
    INTO [ schema. ] { table | view } [ t_alias ]      --要合并的目标表
    USING { [ schema. ] {table | view } | subquery }  [ t_alias ]    --要合并的来源表或者一个子查询
    ON (condition)                --指定要比较的条件
WHEN MATCHED THEN                 --如果条件匹配,可以进行更新或者删除的操作
UPDATE SET column = { expr | DEFAULT }
           [ , column = { expr | DEFAULT } ]...
WHERE condition
[ DELETE where_clause ]
WHEN NOT MATCHED THEN             --如果条件不匹配,可以进行删除、插入的操作
INSERT [ (column [, column ]... ) ]
VALUES ({ expr | DEFAULT } [, { expr | DEFAULT }] ...)
WHERE condition
LOG ERRORS
    [INTO [ schema. ] table ]
    [ (simple_expression) ]
    [ REJECT LIMIT { integer | UNLIMITED } ]

                                           

 

     

                                           

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值