《Oralce9i参考手册》部分学习随笔

1.临时表的建立
 Create global temporary table tableName(
  name nvarchar(20),id int
 )on commit [delete/preserve] rows;
on commit delete rows就是事务处理完了就自动删除表
on commit preserve rows就是会话完了就自动删除表
可以通过查询user_tables表 来查看临时表的信息 其中duration列的信息为sys$session 的

2.遍历树查询
 select employee,manager from AdminUser start with employee='administrator'
 connect by manager =  prior employee
start with的意思是 以employee的值为administrator 作为根节点
connect by的意思是 告诉sql查找下一行,其中manager的值和前面行的employee值相等

3.并合数据源
 merge into table1 t1
 using(select id,name from table2 t2)
 on t1.id=t2.id
 when matched then
  update set t1.name=t2.name
 when not matched then
  insert(t1.id,t1.name)
  values(t2.id,t2.name);
第1句就是 命名目标表table1 给出别名t1
  2       指定的更新数据源
  3       匹配条件
  4,5     相匹配的话则更新name列
  6,7,8   不相匹配的 就插入t2的记录

4.从查询中建立表
 create table myTable1 [nologging] as select * from myTable2;
 等同于Mssql的
 select * into myTable2 from myTable1;

 注意:如果oracle表中其中一列为LONG类型的话,则Create table ... as select ...不起作用
 使用nologging选项不产生重做日志 

posted on 2006-08-13 19:10  springside例子  阅读(116)  评论(0编辑  收藏  举报