首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Oracle dml跟ddl扩展

2012-12-28 
Oracle dml和ddl扩展1.语句回顾1)用insert语句添加新行到表中insert into table[(column [,column...])]va

Oracle dml和ddl扩展

1.语句回顾1)用insert语句添加新行到表中  insert into table[(column [,column...])]  values (value[,value...]);    用此语法一次只能插入一行:  例:     insert into dept(deptno,dname,loc)         values (70,'public relations','shenyang');2)用update语句修改存在的行    update table  set    column=value[,column=value,...]  [where condition];    -一次可以修改多行  -如果使用了where子句,可以指定一行或多行被修改  例:     update emp     set    deptno=30     where  empno=7369;   2.多表insert语句1)insert...select语句能够作为单个的dml语句的一部分用于插入行到多表中2)多表insert语句能够被用在数据仓库系统中从一个或多个操作源转移数据到一组目的表中3)oracle9i引入下面的多表插入语句的类型:  -无条件insert  -条件all insert  -条件first insert  -枢轴式(pivoting)insert3.无条件insert语句  1)语法  insert all         [insert_into_value][values_clause]  (subquery)2)例子  -从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值  -用多表insert插入这些值到sal_history(empno,hiredate,sal)和mgr_history(empno,mgr,sal)表中   insert all    into sal_history values(empno,hiredate,sal)    into mgr_history values(empno,mgr,sal)  select empno,hiredate,sal,mgr  from   emp  where  empno>7698;4.条件insert语句1)语法  insert all       [when condition then]             [insert_into_clause][values_clause]  (subquery)2)例子  -从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值  -如果sal大于$2500,用一个条件多表insert语句插入这些值到sal_history表中  -如果mgr大于7782,用一个多表insert语句插入这些值到mgr_history表中  insert all    when sal>2500 then      into sal_history values(empno,hiredate,sal)    when mgr>7782 then      into mgr_history values(empno,mgr,sal)  select empno,hiredate,sal,mgr  from   emp  where  empno>7698;    5.条件first insert1)语法    insert first      [when condition then]               [insert_into_clause][values_clause]      [else]               [insert_into_clause][values_clause]  (subquery)2)例子  -从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值  -如果sal大于$2500,则用一个条件first多表insert语句插入这些值到sal_history表中  -如果第一个when子句的值为true,则该行后面的when子句被跳过  -如果mgr大于7782,用一个条件first多表insert语句插入这些值到mgr_history表中  insert first    when sal>2500 then      into sal_history values(empno,hiredate,sal)    when mgr>7782 then      into mgr_history values(empno,mgr,sal)  select empno,hiredate,sal,mgr  from   emp  where  empno>7698;6.枢轴式(pivoting) insert1)支持从非关系数据库表中接受一组销售记录  sales_source_data的格式如下:    empno,week_id,sales_mon,sales_tue,sales_wed,sales_thur,sales_fri2)你可能想要以一种典型的相关格式存储这些记录到sales_info(empno,week,sales)表中3)使用pivoting insert,从非关系数据库表转换销售记录集到关系格式  insert all    into sales_info values(empno,week_id,sales_mon)    into sales_info values(empno,week_id,sales_tue)    into sales_info values(empno,week_id,sales_wed)    into sales_info values(empno,week_id,sales_thur)    into sales_info values(empno,week_id,sales_fri)  select empno,week_id,sales_mon,sales_tue,sales_wed,sales_thur,sales_fri  from   sales_source_data;
?

热点排行