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语句的操作。

  • 相关阅读:
    Linux学习65 实战使用awk高级功能统计网络请求连接状态
    Linux学习64 awk使用与实战
    Linux学习63 shell脚本高级编程-信号捕捉实战
    Linux学习62 shell脚本高级编程-数组和字符串处理
    Linux学习61 企业军工级别安全策略-SELinux简介
    Linux学习60 centos7新特性-systemd及systemctl实战
    Linux学习59 shell脚本高级用法-函数编程与应用实战
    【HBase】HBase与MapReduce的集成案例
    【HBase】底层原理
    【HBase】Java实现过滤器查询
  • 原文地址:https://www.cnblogs.com/ly01/p/8516562.html
Copyright © 2011-2022 走看看