程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 你是否了解Oracle Dual表

你是否了解Oracle Dual表

編輯:Oracle數據庫基礎

Oracle還是比較常用的,於是我研究了一下Oracle Dual表,在這裡拿出來和大家分享一下,希望對大家有用。字符函數分為轉換函數和字符操作函數

轉換函數有:LOWER,UPPER,INITCAP(首字母大寫)

字符操作函數:CONCAT,SUBSTR,LENGTH,INSTR(某個字符串在此字符串中的位置),IPAD(字符串按某種格式顯示);
例如:

  1. select initcap(ename) from emp;    
  2. //返回所有所有的人名,並且將名字首字母大寫。  
  3. select concat(ename,job) from emp;    
  4. //返回一列,此列是由ename和job組成的。  
  5. select initcap(substr(ename,1,3)) from emp;    
  6. //返回一列,此列是某列的字串。  
  7. Select length(‘我愛你’) from dual;        
  8. //返回3,字母和漢字都是按兩個字節來存儲的。  
  9. select lpad(ename,10,'*') from emp;    
  10. //返回名字,如果不足10個,用*補全。 

2:在Oracle內部存儲都是以大寫存儲的。
例如:

  1. select * from emp where ename='king';          
  2. //查找不出結果  
  3. select * from emp where ename=upper('king');      
  4. //能查找出符合條件的結果。  

3:Oracle Dual表
Oracle Dual表比較特殊,是一個系統表,只有一個Dummy Varchar2(1)字段,而且Oracle會盡量保證它只返回一條記錄。在查詢Oracle中的sysdate或sequence.currval等系統值時需要在Select 語句中寫Dual。如:select sysdate from dual.用Dual表來查詢一些沒有具體用戶表的數據。

其實在每個表中都有一個隱藏的rowid,rownum(除了dual,其他表都有) 。

dual不僅可以插入還可以刪除(最好不要刪除該表,可能會引起數據庫無法啟動。如果誤刪也有解決辦法,將參數replication_dependency_tracking 設置成 FALSE就可以了)。

dual它應該是系統內存中的一個虛擬的表,而系統中的dual表只是為了維護數據字典和系統對dual的操作權限。在看看下面的實驗,向Oracle Dual表中隨便插入幾條記錄然後查詢:

  1. SQL> select * from dual;  
  2. D  
  3. -  
  4. X  
  5. SQL> select rowid ,dummy from dual;  
  6. ROWID              D  
  7. ------------------ -  
  8. AAAM1CAABAAAAgiAAA X  
  9. SQL> select rowid ,dummy from dual order by dummy;  
  10. ROWID              D  
  11. ------------------ -  
  12. AAAM1CAABAAAAgiAAA X  
  13. AAAM1CAABAAAAgiAAB Y  
  14. AAAM1CAABAAAAgiAAC Y  
  15. AAAM1CAABAAAAgiAAD Z 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved