Oracle常用的SQL方法總結

2022-01-11 08:54:40 字數 2751 閱讀 5481

在專案中一般需要對一些資料進行處理,以下提供一些基本的sql語句:   

1.基於條件的插入和修改:需要在表中插入一條記錄,插入前根據key標識判斷。如果識別符號不存在,則插入新紀錄,如果識別符號存在,則根據語句中所給的新值對原紀錄中的字段進行更新:

merge into

ausing 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(*) as

staffcount

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.根據時間戳恢復資料:

alter

table

tablename enable row movement ;

flashback

table tablename to

timestamp to_timestamp('

2012-09-13 13:00:00

','yyyy-mm-dd hh24:mi:ss

');

4.有乙個型別為字串的字段,要講其值遷移到新系統裡的數值型別欄位中:

create

orreplace

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語句:

select

a.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查...