常用SQL語句-Oracle篇

數據庫相關的文章很有一段時間沒有寫了。最近得拾起來,在這裏貼一些自己常用的SQL:

SQL執行,事務提交一條龍

begin  
#insert、update、delete
commit ;  
exception  
when others then  
rollback ;   
end ;  

數據庫表鎖死解決

SELECT s.sid, s.serial# FROM 
v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;  

ALTER system KILL session '828,31041';

------------------------------------------------------------------
--批量解鎖(存儲過程方式方式)
declare cursor mycur is   
select b.sid,b.serial#   
  from v$locked_object a,v$session b   
  where a.session_id = b.sid group by b.sid,b.serial#;   
   
begin   
  for cur in mycur   
    loop     
     execute immediate ( 'alter system  kill session  '''||cur.sid || ','|| cur.SERIAL# ||''' ');   
     end loop;   
end;

重複數據查詢

select   column_name1,count(column_name2)   from   table1  
  group   by  table1所有的字段
  HAVING COUNT(column_name1) >= 2; 

刪除重複數據

DELETE 
  FROM table_name a 
  WHERE rowid > ( SELECT min(rowid) 
  FROM table_name b 
  WHERE b.id = a.id and b.name=a.name);

遞歸查詢

select t.*  from  DEMO_TREE t where t.pkid in (select c.pkid
                        from DEMO_TREE c
                        start with c.pkid = 'B'
                        connect by prior c.pkid=c.fpkid)

備註:同一張表,c.pkid=c.fpkid沒錯

字段值替換
(批量替換某字段前倆字符)

update table_name y set y.companycode =REPLACE(chr(0)||y.companycode,chr(0)||substr(y.companycode ,0,2) ,'JR')  
where substr(y.companycode, 0, 2) like 'QT'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章