數據庫相關的文章很有一段時間沒有寫了。最近得拾起來,在這裏貼一些自己常用的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'