• 转:Oracle数据操作


    INSERT语句语法:INSERT INTO  table_name  [(column [, column...])]VALUES         (value [, value...]);使用INSERT语句向表中插入数据;使用这种语法一次只能向表中插入一条数据。注意:字符和日期型数据应包含在单引号中。在INSERT语句中使用子查询,使插入基于另外表中的数据。
    从其它表中拷贝数据,例子:INSERT INTO  sales_reps(id, name, salary, commission_pct)SELECT  employee_id, last_name, salary, commission_pctFROM  employeesWHERE  job_idLIKE  '%REP%';

    UPDATE语句语法:UPDATE  table_nameSET       column = value[, column = value, ...][WHERE condition];使用UPDATE语句更新数据;可以一次更新多条数据。在UPDATE语句中使用子查询,使更新基于另一个表中的数据。

    DELETE语句语法:DELETE  [FROM]   table_name[WHERE  condition];使用DELETE语句从表中删除数据。在DELETE 中的WHERE内使用子查询,使删除基于另一个表中的数据。
    *******在DML语句中使用WITH CHECK OPTION关键字,可以避免修改子查询范围外的数据。主要是用在视图中,通过视图执行的INSERTS和UPDATES语句操作,其不能添加或修改超出该视图约束的数据,因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。*******
    ***使用DEFAULT关键字可以表示默认值,显式默认值可以在INSERT和UPDATE语句中使用。***

    合并语句语法:MERGE INTO  table_name  table_aliasUSING (table | view | sub_query)  aliasON (join condition)WHEN MATCHED THEN    UPDATE SET     col1 = col_val1,    col2 = col2_valWHEN NOT MATCHED THEN    INSERT (column_list)    VALUES (column_values);使用merge语句,可以根据指定的条件对表进行数据的插入或更新操作。如果满足条件的行存在,执行更新操作;否则执行插入操作:        – 避免多次重复执行插入和删除操作        – 提高效率而且使用方便        – 在数据仓库应用中经常使用

    SET操作符:- UNION操作符:返回两个查询(SELECT语句组成)的结果集的并集。- UNION ALL 操作符:返回两个查询(SELECT语句组成)的结果集的并集以及两个结果集的重复部分。- INTERSECT 操作符:操作符返回两个查询(SELECT语句组成)结果集的交集。- MINUS 操作符:操作符返回两个查询(SELECT语句组成)结果集的补集。
    使用SET操作符注意事项- 在SELECT列表中的列名和表达式在数量和数据类型上要相对应- 括号可以改变执行的顺序- ORDER BY子句:   – 只能在语句的最后出现   – 可以使用第一个查询中的列名,别名或相对位置  多表INSERT语句: - INSERT . . . SELECT是使用一个DML语句向多个表中插入数据的一部分
     - 多表INSERT语句可作为数据仓库应用中向目标数据库传送数据的一种方法
     - 它具有更高的效率:
         –避免使用多个DML 语句
         –使用一个DML 完成IF . . . THEN的逻辑处理Oracle9i提供以下四种多表INSERT语句类型:
     - 无条件的INSERT ALL
     - 有条件的INSERT ALL
     - 有条件的INSERT FIRST
     - 旋转INSERT 无条件的INSERT ALL 应用举例INSERT ALL     INTO  sal_history  VALUES (EMPID, HIREDATE, SAL)     INTO  mgr_history  VALUES (EMPID, MGR, SAL)SELECT  employee_id  EMPID,  hire_date  HIREDATE, salary  SAL, manager_id  MGRFROM  employeesWHERE  employee_id > 200; 有条件的INSERT ALL 应用举例INSERT ALLWHEN SAL > 10000 THEN      INTO  sal_history  VALUES (EMPID, HIREDATE, SAL)WHEN MGR > 200 THEN      INTO  mgr_history  VALUES (EMPID, MGR, SAL)SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGRFROM  employeesWHERE  employee_id > 200; 有条件的INSERT  FIRST应用举例INSERT FIRSTWHEN  SAL > 25000  THEN     INTO  special_sal  VALUES(DEPTID, SAL)WHEN  HIREDATE like ('%00%')  THEN     INTO  hiredate_history_00  VALUES(DEPTID,HIREDATE)WHEN  HIREDATE like ('%99%')  THEN     INTO  hiredate_history_99  VALUES(DEPTID, HIREDATE)ELSE     INTO  hiredate_history  VALUES(DEPTID, HIREDATE)SELECT  department_id  DEPTID, SUM(salary)  SAL, MAX(hire_date)  HIREDATEFROM  employeesGROUP BY  department_id; 旋转INSERT 应用举例(实现从sales_source_data表中不断读取数据条并插入到sales_info表中)INSERT ALL     INTO sales_info VALUES (employee_id,week_id,sales_MON)     INTO sales_info VALUES (employee_id,week_id,sales_TUE)     INTO sales_info VALUES (employee_id,week_id,sales_WED)     INTO sales_info VALUES (employee_id,week_id,sales_THUR)     INTO sales_info VALUES (employee_id,week_id, sales_FRI)SELECT  EMPLOYEE_ID, week_id, sales_MON, sales_TUE,sales_WED, sales_THUR,sales_FRIFROM  sales_source_data;

  • 相关阅读:
    对var和let作用域用闭包的特性做最好的解释
    Js函数作用域
    问题记录
    Git学习
    React-router BrowserRouter导致axios请求时会重复url中的某些字段
    leetcode python 032 识别最长合法括号
    leetcode python 030 Substring with Concatenation of All Words
    n阶楼梯,一次走1,2,3步,求多少种不同走法
    leetcode python 012 hard 合并k个有序链表
    leetcode python 011
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100406.html
Copyright © 2020-2023  润新知