zoukankan      html  css  js  c++  java
  • 操纵数据库 DML

    DML(Data Manipulate Language)数据操纵语言,包含 insert  update  delete  merge

    对于多条DML语句,Oracle将其看作是一个整体事务进行处理,因此必须手动处理 提交 commit 与 回滚 rollback 操作。

    (1) Merge : 插入所有的行到另一个具有现存记录的表,如果要插入的行的 键(连接条件)匹配已存在的行,则执行更新update操作;若不匹配,则执行插入insert操作。

    语法: MERGE INTO  dest_table_name table_name_alias                                                             --目标表

          USING (source_table_name | view_name | sub_query) source_table_name_alias    --源表

         ON ( join condition)  -- 匹配条件

         WHEN MATCHED  THEN

        update set 

        col1 = col_val1,

        col2 = col_val2

        WHEN NOT MATCHED THEN

            insert (column_list)

         values(column_values);

    (2)TRUNCATE : truncate语句会删除表中所有的行,并且释放该表所使用的存储空间。

    truncate 语句实际上不是DML数据操纵语言的一部分,而是DDL数据定义语言的一种,与create table 等语句一样,不具有撤销功能,一经调用,表中的数据便被彻底删除。

      与 delete 语句相比,使用 truncate 语句速度要快一些,原因如下:

           1  truncate 语句 不会激活表的删除触发器

      2  truncate 语句属于数据定义语言DDL语句,不会产生撤销信息。

      3 如果表是主外键关系的主表, 则无法删除表的内容,必须在执行  truncate 语句之前禁用该约束。

    (3)在执行 DML语句开始一个事务后, ORACLE会将旧的数据保存到 回退表空间(undo table space)中,

      当用户调用 rollback 后,  ORACLE会将 回退表空间中的数据写回到数据段中,以便取消DML语句的操作。

  • 相关阅读:
    949. Largest Time for Given Digits
    450. Delete Node in a BST
    983. Minimum Cost For Tickets
    16. 3Sum Closest java solutions
    73. Set Matrix Zeroes java solutions
    347. Top K Frequent Elements java solutions
    215. Kth Largest Element in an Array java solutions
    75. Sort Colors java solutions
    38. Count and Say java solutions
    371. Sum of Two Integers java solutions
  • 原文地址:https://www.cnblogs.com/ly01/p/8516562.html
Copyright © 2011-2022 走看看