自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

請(qǐng)注意Oracle對(duì)象的大小寫(xiě)

數(shù)據(jù)庫(kù) Oracle
有些人可能不習(xí)慣表名、字段全部用大寫(xiě),而喜歡用小寫(xiě)或大小寫(xiě)混雜的形式,如果是這樣的話,你在ORACLE中寫(xiě)腳本時(shí)就要注意了,沒(méi)有處理好,這樣會(huì)給你帶來(lái)“無(wú)窮的麻煩”。

在數(shù)據(jù)庫(kù)新建一個(gè)測(cè)試表(數(shù)據(jù)庫(kù)版本為ORACLE 10.2.0.1.0),表名為小寫(xiě)的test。 腳本如下所示:

  1. CREATE TABLE test  
  2. (  
  3.      id      NUMBER(10),  
  4.      Name    VARCHAR2(20),  
  5.      Sex     VARCHAR(2)  
  6. )  
  7. --查找不到對(duì)應(yīng)數(shù)據(jù)  
  8. SELECT * FROM USER_TABLES WHERE TABLE_NAME = 'test' 
  9. --改用大寫(xiě)才可以查到對(duì)應(yīng)的數(shù)據(jù)  
  10. SELECT * FROM USER_TABLES WHERE TABLE_NAME ='TEST' 
  11. --查找不到對(duì)應(yīng)數(shù)據(jù)  
  12. SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'test';  
  13. SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='TEST';  

 下面我們用雙引號(hào)來(lái)新建另外一個(gè)表(ORACLE 中 " "的作用是強(qiáng)制區(qū)分大小寫(xiě),以及關(guān)鍵字做字段時(shí)用"")腳本如下所示:

  1. CREATE TABLE "test1" 
  2. (   
  3.   "id"       NUMBER(10),  
  4.   "Name"     VARCHAR2(20),  
  5.   "SEX"      VARCHAR(2)  
  6. )  
  7. SELECT * FROM USER_TABLES WHERE TABLE_NAME = 'test1';  
  8. SELECT * FROM DBA_TABLES WHERE TABLE_NAME = 'test1';  
  9. SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='test1';  
  10. SELECT * FROM "test1";  
  11. --ORA-00942: 表或試圖不存在  
  12. SELECT * FROM test1;  
  13. --ORA-00904: "NAME": 標(biāo)識(shí)符無(wú)效  
  14. SELECT id, Name, SEX FROM "test1";  
  15. --ORA-00904: "ID": 標(biāo)識(shí)符無(wú)效  
  16. SELECT id, "Name", SEX FROM "test1";  
  17. SELECT "id""Name", SEX FROM "test1";  
  18. --ORA-00942: 表或試圖不存在  
  19. SELECT "id""Name", SEX FROM test1;    

上面的例子也許會(huì)讓覺(jué)得比較奇怪,這種現(xiàn)象在SQL SERVER里面是不存在的。這是因?yàn)镺RACLE在建表或者字段時(shí),如果沒(méi)有雙引號(hào),ORACLE會(huì)把表名、字段名全部轉(zhuǎn)化為大寫(xiě)字母然后寫(xiě)入數(shù)據(jù)字典。訪問(wèn)數(shù)據(jù)字典時(shí),沒(méi)有雙引號(hào)ORACLE會(huì)將其轉(zhuǎn)化成大寫(xiě)然后再去數(shù)據(jù)字段中查找。如果加上雙引號(hào)則能區(qū)分大小寫(xiě)。不僅僅關(guān)鍵字不區(qū)分大小寫(xiě),函數(shù)名,過(guò)程,表名稱(chēng),pl/sql塊中變量名,用戶名,密碼等都不區(qū)分大小寫(xiě)。

有些人可能不習(xí)慣表名、字段全部用大寫(xiě),而喜歡用小寫(xiě)或大小寫(xiě)混雜的形式,如果是這樣的話,你在ORACLE中寫(xiě)腳本時(shí)就要注意了,沒(méi)有處理好,這樣會(huì)給你帶來(lái)“無(wú)窮的麻煩”

如上所示,你必須在字段上加上"",否則這里報(bào)錯(cuò),哪里起火。而人有時(shí)候又是很粗心、健忘的。所以在ORACLE中,還是建議全部用大寫(xiě),這樣可能開(kāi)始會(huì)讓你有些不爽,不過(guò)習(xí)慣了就好了??偙饶阌?quot;"給后面的開(kāi)發(fā)帶來(lái)很多隱患要好得多。 

在ORAClE中,習(xí)慣腳本、字段等用大寫(xiě),有人說(shuō)能提高效率,這樣少了強(qiáng)制轉(zhuǎn)換大寫(xiě)(如果沒(méi)有雙引號(hào)的話)開(kāi)銷(xiāo),也有人說(shuō)這些開(kāi)銷(xiāo)可以忽略不計(jì),不會(huì)有啥性能方面的問(wèn)題。(當(dāng)然腳本全部用大寫(xiě)一致,可以避免同一腳本由于大小寫(xiě)問(wèn)題多次解析,這是可以肯定的)。小弟不才,也不能確定,網(wǎng)上這方面的資料也少,希望大家能討論 

原文鏈接:http://www.cnblogs.com/kerrycode/archive/2011/05/05/2037151.html

【編輯推薦】

  1. Oracle的安全標(biāo)記算不算bug
  2. 淺述當(dāng)前模式讀與一致性讀續(xù)
  3. 淺述當(dāng)前模式讀與一致性讀的區(qū)別
  4. 告訴你,如何成就DBA職業(yè)生涯
  5. Oracle業(yè)務(wù)就緒存儲(chǔ)系統(tǒng)助力企業(yè)實(shí)現(xiàn)存儲(chǔ)升級(jí)

 

責(zé)任編輯:艾婧 來(lái)源: 博客園
相關(guān)推薦

2021-06-15 09:39:45

Oracle敏感數(shù)據(jù)庫(kù)

2010-10-27 17:16:51

Oracle查詢(xún)

2010-11-25 16:09:58

mysql查詢(xún)大小寫(xiě)

2022-11-10 08:40:56

OracleMySQL

2010-11-23 13:42:18

mysql數(shù)據(jù)庫(kù)大小寫(xiě)

2010-05-11 13:25:18

Mysql大小寫(xiě)

2010-10-11 15:47:46

MySQL字符串大小寫(xiě)

2009-06-21 13:44:21

LinuxTr大小寫(xiě)轉(zhuǎn)換

2021-06-04 10:30:41

MySQL表名大小

2010-03-04 14:02:51

Python大小寫(xiě)

2010-05-26 15:24:09

MySQL字符串

2010-06-07 13:00:34

MySQL數(shù)據(jù)庫(kù)

2020-10-15 17:55:37

Linux命令行大小寫(xiě)轉(zhuǎn)換

2011-08-30 10:10:30

UbuntuLinuxMySQL

2020-03-11 10:45:36

Linux命令Linux大小寫(xiě)

2017-06-12 16:10:05

MySQL表名

2010-03-25 10:39:26

Python代碼

2020-10-14 07:46:46

Linux大小寫(xiě)轉(zhuǎn)換

2010-06-04 20:04:10

MySQL數(shù)據(jù)庫(kù)大小寫(xiě)

2011-08-08 13:15:35

QWrap
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)