在這裡我們將介紹Oracle解鎖的步驟,包括具體的代碼以及操作,希望本文能為大家在Oracle數據庫管理工作中,有所幫助。
- from v$locked_object t1,v$session t2
- where t1.session_id=t2.sid order by t2.logon_time;
解鎖
- --alter system kill session 'sid,serial'
- alter system kill session '146,21177';
鎖表 --lock table tb_name in 模式
Null空值
- Null and false ->false
- Null and true-> null
- Null or false ->null
- Null or true->true
組函數忽略空值
空值排序時大於任何值,且不能被索引。
- Merge into
- MERGE [hint] INTO [schema .] table [t_alias] USING [schema .]
- { table | vIEw | subquery } [t_alias] ON ( condition )
- WHEN MATCHED THEN merge_update_clause
- WHEN NOT MATCHED THEN merge_insert_clause;
例:
- merge into acct a
- using subs b
- on (a.msid = b.msid)
- when MATCHED then
- update set a.areacode = b.areacode
- when NOT MATCHED then
- insert (msid, bill_month, areacode) values (b.msid, '200702', b.areacode)
10g中增強一:條件操作 where
WHEN MATCHED THEN ...where ...
10g中增強二:刪除操作
- An optional delete where clause can be used to clean up after a merge Operation. Only those rows which match both the ON clause and the DELETE WHERE clause are deleted
- merge into acct a
- using subs b on (a.msid=b.msid)
- when MATCHED then
- update set a.areacode=b.areacode
- delete where (b.ms_type!=0);
其中滿足 (b.ms_type!=0) 的將被deleted
With 語句
with語句只能用在select語句中,update和delete不支持
- with summary as(
- select dname, sum(sal) as dept_total
- from ct_emp, ct_dept
- where ct_emp.deptno = ct_dept.deptno
- group by dname)
- select dname, dept_total
- from summary
- where dept_total > (select sum(dept_total) * 1 / 3 from summary);
臨時表temporary table
1、臨時表需要先創建,不建議在運行時使用DDL語句創建
2、臨時表可以看作是一張普通的物理表, 但它的數據是會話隔離的
區別之處:
l 向表中插入數據只在會話或事務期間存在
l 表中的數據只對插入數據的會話是可見的
l 可用ON COMMIT指導定數據是會話專用還是事務專用
- create global temporary tablename(column list)
- on commit preserve rows; --提交保留數據會話臨時表
- on commit delete rows; --提交刪除數據 事務臨時表
oracle的臨時表和sql server不一樣,在使用完成以後,Oracle臨時表中的紀錄可以被定義為自動刪除(分session方式和transaction方式),而表結構不會被自動刪除;SQL Server中的臨時表在使用後會被完全刪除。
建議:不得已的情況下(比較復雜的數據處理)才使用臨時表,否則盡可能使用子查詢代替或使用游標。
NVL,NVL2區別及NULLIF 的使用
| NVL(expr1, expr2):expr1為NULL,返回expr2;不為NULL,返回expr1。
| NVL2 (expr1, expr2, expr3) :xpr1不為NULL,返回expr2;為NULL,返回expr3。expr2和expr3類型不同的話,expr3會轉換為expr2的類型
| NULLIF (expr1, expr2):相等返回NULL,不等返回expr1