在專案中一般需要對一些資料進行處理,以下提供一些基本的sql語句:
1.基於條件的插入和修改:需要在表中插入一條記錄,插入前根據key標識判斷。如果識別符號不存在,則插入新紀錄,如果識別符號存在,則根據語句中所給的新值對原紀錄中的字段進行更新:
merge intoausing b
on (a.key
= b.key
)when matched then
update
set a.name =
b.name
when
not matched then
insert
into (a.key, a.name) values (b.key, b.name)
2.在分組和集合裡統計分組:當需要統計乙個分組裡的成員,或有多少個子分組,及其他基於集合的統計。在進行基於集合的統計時,還需要動態包括或剔除滿足特定條件的記錄。
例項如下:基於職工在企業裡的公升職次數,來統計企業每個員工經歷過的工作崗位次數。
select jh.jobsheld, count(*) asstaffcount
from (select u.employee_id, count(*) as
jobsheld
from (select
employee_id
from
hr.employees
union
allselect employee_id from
hr.job_history) u
group
byu.employee_id) jh
group
by jh.jogsheld
3.根據時間戳恢復資料:
altertable
tablename enable row movement ;
flashback
table tablename to
timestamp to_timestamp('
2012-09-13 13:00:00
','yyyy-mm-dd hh24:mi:ss
');
4.有乙個型別為字串的字段,要講其值遷移到新系統裡的數值型別欄位中:
createorreplace
function isnum(v_in varchar2) return
varchar
isval_err exception;
pragma exception_init(val_err,
-6502) --
char to num conv.error
scrub_num number
;begin
scrub_num :
= to_number(v_in) return'y
';exception
when val_err then
return'n
';end;
5.解決死鎖問題:
(1).檢視被鎖的表
select b.owner,b.object_name
,a.session_id,a.locked_mode
from
v$locked_object a,dba_objects b
where b.object_id
= a.object_id;
(2).檢視引起死鎖的會話
select
b.username,b.sid,b.serial#,logon_time
from
v$locked_object a,v$session b
where a.session_id = b.sid order
byb.logon_time;
(3).殺掉死鎖
alter system kill session 『sid,serial#』;
6.檢視當前連線使用者正在執行的sql語句:
selecta.sid, a.username, b.sql_text
from
v$session a, v$sqltext_with_newlines b
where a.sql_address =
b.address
and a.sql_hash_value =
b.hash_value
order
by a.username, a.sid, b.piece
7.查詢最消耗資源的實時語句:
oracle 11g中,可以通過查詢v$sql_monitor來監控sql查詢近乎實時的消耗資源select
*from
(
select a.sid session_id,a.sql_id,a.status,a.cpu_time/
1000000
cpu_sec,a.buffer_gets,a.disk_reads,b.sql_text sql_text
from
v$sql_monitor a,v$sql_b
where a.sql_id=
b.sql_id
order
by a.cpu_time desc
)
where rownum<=
20;
Oracle中的常用sql
查詢當前資料庫例項名的sql select instance name from v instance 檢視當前資料庫例項的資訊的sql show parameter instance name 建立表空間的sql create tablespace oracletest logging dataf...
Oracle常用的SQL語句
1 資料庫的操作 1 建立資料庫 語法 create database dbname 2 刪除資料庫 語法 drop database dbname 2 建立資料庫使用者 oracle內部有兩個建好的使用者 system和sys。使用者可直接登入到system使用者以建立其他使用者,system是系...
oracle常用的sql命令
檢視使用者和預設表空間的關係 select username,default tablespace from dba users 檢視當前使用者能訪問的表 select from user tables oracle查詢使用者表 select from user all tables oracle查...