新聞中心
數(shù)據(jù)庫對象標識符
每個數(shù)據(jù)庫對象都有名字。在 SQL 語句中您可以使用引用標識符和非引用標識符來命名任何數(shù)據(jù)庫對象:

-
引用標識符:以雙引號
" "為開頭和結(jié)尾的標識符。如果使用引用標識符命名 Schema 對象,則在引用該對象時必須使用雙引號。 -
非引用標識符:標識符中不包含任何標點符號。
但是,數(shù)據(jù)庫名稱、全局數(shù)據(jù)庫名稱、數(shù)據(jù)庫鏈接名稱、磁盤組名稱和可插入數(shù)據(jù)庫(PDB)始終不區(qū)分大小寫,并以大寫形式存儲。如果使用引用標識符為它們命名,那么引號將被忽略。
注意
OceanBase 并不建議您使用引用標識符來命名數(shù)據(jù)庫對象。這些引用標識符在 SQL PLUS 中兼容,但是在其他數(shù)據(jù)庫對象管理工具中可能不被識別。
標識符使用規(guī)則
以下是一些適用于引用標識符和非引用標識符的規(guī)則,除非另有說明,否則以下規(guī)則對引用標識符和非引用標識符同時適用。
標識符的長度
標識符的長度為 1~128 字節(jié)。
如果標識符包含由句點分隔的多個部分,則每個部分最長都可達 128 字節(jié)。每個句點分隔符以及旁邊的引號都算作一個字節(jié)。例如以下字符串:
"schema"."table"."column"示例名稱中的三部分 schema、table 和 column 各自最長可以是 128 字節(jié),每個引號和句點都是單字節(jié)字符,所以示例中標識符的總長度為 392 字節(jié)。
保留字做標識符
非引用標識符不能是 OceanBase SQL 保留字。引用標識符可以是保留字,但不建議這樣做。根據(jù)您計劃用于訪問數(shù)據(jù)庫對象的工具不同,名稱可能進一步受到其他產(chǎn)品特定的保留字限制。
注意
保留字
ROWID是這個規(guī)則的一個例外。不能使用大寫單詞
ROWID作為列的名稱,無論是帶引號的還是不帶引號的。但是,引用標識符作為列名時,不可以使用全大寫單詞,但是可以包含一個或多個小寫字母(例如,“Rowid”或“Rowid”)。
特殊含義單詞做標識符
OceanBase 中的 SQL 語言包含了其他具有特殊含義的單詞。這些詞包括數(shù)據(jù)類型、Schema 名、函數(shù)名、虛擬系統(tǒng)表 DUAL 和關(guān)鍵字(SQL 語句中的大寫單詞,如 DIMENSION、SEGMENT、ALLOCATE、DISABLE 等)。這些詞不是保留字,但是,OceanBase 在內(nèi)部以特定的方式使用它們。因此,如果您使用這些詞作為對象和對象部件的名稱,SQL 語句可能會難以閱讀,并可能導致不可預測的結(jié)果。尤其是不要使用 SQL 內(nèi)置函數(shù)的名稱作為 Schema 對象和用戶自定義函數(shù)的名稱。
ASCII 字符做標識符
在數(shù)據(jù)庫名稱、全局數(shù)據(jù)庫名稱和數(shù)據(jù)庫鏈接名稱中您應該使用 ASCII 字符集中的字符,因為這些字符擁有跨不同平臺和操作系統(tǒng)的最佳兼容性。多租戶容器數(shù)據(jù)庫(CDB)中的通用用戶和通用角色的名稱只能使用 ASCII 字符集中的字符。
密碼中的字符
密碼中可以包含多位字節(jié)的字符,如漢字或中文標點等。
標識符的開頭
非引用標識符必須以數(shù)據(jù)庫字符集中的字母字符開頭。引用標識符可以以任何字符開頭。
標識符中的符號
非引用標識符只能包含來自數(shù)據(jù)庫字符集的字母數(shù)字字符和下劃線(_)。但是用于數(shù)據(jù)庫鏈接名稱時可以包含句點(.)和符號 @。引用標識符可以包含任何字符、標點符號和空格。但是,引用標識符和非引用標識符都不能包含雙引號或空字符(\0)。
對象名稱在名稱空間中的限制
在同一個名稱空間中,表、視圖、私有同義詞不能擁有相同的名稱。
標識符的大小寫
非引用標識符不區(qū)分大小寫,OceanBase 將他們存儲為大寫。引用標識符區(qū)分大小寫,所以通過將名稱括在雙引號里,在同一命名空間的不同對象可以擁有以下類型的名稱:
"employees"
"Employees"
"EMPLOYEES"由于非引用標識符不區(qū)分大小寫,所以 OceanBase 認為以下名稱是相同的,他們不能作為同一名稱空間下不同對象的名字:
employees
EMPLOYEES
"EMPLOYEES"大寫標識符
存儲或比較大寫的標識符時,每個字符的大寫形式是通過應用數(shù)據(jù)庫字符集的大寫規(guī)則來確定的。由對話設置 NLS_SORT 所設定的特定語言規(guī)則不在考慮的范圍內(nèi)。此行為是將 SQL 函數(shù) UPPER 應用于標識符,而不是將函數(shù) NLS_UPPER 應用于標識符。
數(shù)據(jù)庫字符集的大寫規(guī)則被應用到自然語言時可能產(chǎn)生不正確的結(jié)果。例如,德國小寫字母 ?,它在數(shù)據(jù)庫字符集大寫規(guī)則中并沒有對應的大寫形式, 所以當含有它的標識符被轉(zhuǎn)換為大寫形式時它并不會被轉(zhuǎn)變。
數(shù)據(jù)庫字符集大寫規(guī)則確保標識符在任何語言配置的會話中的樣式是相同的。如果希望標識符在某種自然語言中看起來正確,那么可以通過引號來保留它的小寫形式,或者在使用該標識符時使用對應語言上正確的大寫形式。
列的名稱
同一表或視圖中的列不能具有相同的名稱。但是,不同表或視圖中的列可以具有相同的名稱。
程序和函數(shù)的名稱
如果同一包中的程序或函數(shù)所包含的參數(shù)的數(shù)量和數(shù)據(jù)類型不同,則它們可以具有相同的名稱。在同一個包中使用不同的參數(shù)創(chuàng)建具有相同名稱的多個過程或函數(shù)稱為重載過程或函數(shù)。
網(wǎng)頁標題:創(chuàng)新互聯(lián)OceanBase教程:OceanBase數(shù)據(jù)庫對象命名規(guī)則
本文來源:http://fisionsoft.com.cn/article/djjdsss.html


咨詢
建站咨詢
