Oracle百問百答(六)

Oracle百問百答之進階提高(六)

51.deletedroptruncate的區別

Delete:刪除數據,表結構還在,可以恢復(savepoint),缺點是刪除速度慢

Drop:刪除數據和表結構,可以閃回(flashback[cascade:級聯刪除]

Truncate:刪除數據,表結構還在,無法找回,優點是刪除速度快

52.主鍵和外鍵指的是什麼?

能夠唯一標識一條記錄的屬性列(組)就是該表的主鍵。主鍵是唯一的,且必須非空。而外鍵是另外一張表中與主表的某個字段的類型、字段名相同的字段(關聯字段),外鍵的作用是關聯兩張或者兩個以上表,保持數據一致性、完整性。只要主表上的關聯字段是唯一或者主鍵,均可以被外鍵引用,但須注意的是外鍵不能是複合鍵。

53.查看哪個表被鎖?

Select  sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_mode

from v$locked_object lo,dba_objects ao,v$session sess

where ao.object_id = lo.object_id

and lo.session_id = sess.sid;

54.left join、right join、inner join full join,union,union all的區別
left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄
right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄
inner join(等值連接) 只返回兩個表中聯結字段相等的行
full join 返回兩張表中的行 left join+right join
UNION在進行錶鏈接後會篩選掉重複的記錄
UNION ALL操作只是簡單的將兩個結果合併後就返回

55.查找表中多餘的重複記錄,重複記錄是根據單個字段(Id)來判斷

 select * from  t  where id in(select id from t group by id  having count(*)>1 );

分析:先用分組函數group by 和聚合函數count()統計出有重複的id,再根據id查找重複的記錄。

56.刪除表中多餘的重複記錄,重複記錄是根據單個字段(Id)來判斷,重複的只保留一行

 delete from t  where id in(select id from t group by id having count(*)>1) and rowid not in 
    (select min(rowid) from t group by id having count(*)>1);
分析:先假設刪除全部重複的數據,再從要被刪除的數據中剔除(也就是保留)rowid最小的

57.查找表中多餘的重複記錄(多個字段)

select * from  t  where (id,name) in(select id,name from t group by id,name  having count(*)>1 );

58.刪除表中多餘的重複記錄(多個字段),只留有rowid最小的記錄
delete from  t  where (id,name) in(select id,name from t group by id,name  having count(*)>1 ) and rowid not  in

(select min(rowid)  from t  group by group by id,name  having count(*)>1 );

59.怎樣生成執行計劃?

有3種方式a、explain plan for sql語句; select * from table(dbms_xplan.display);b、sqlplus中set autotrace on;c、toad中Ctrl+E,pl/sqldeveloper中F5

60.怎樣創建表空間?

create tablespace tsp_jh

  datafile 'd:\oracle\product\10.2.0\oradata\apjh.dbf'

  size 20m

  reuse

  autoextend on

  next 5m

  maxsize unlimited

logging  

permanent  

extent management local autoallocate  

blocksize 8k  

segment space management manual  

flashback on;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章