DB2索引的語法介紹
DB2索引的語法是學(xué)習(xí)DB2數(shù)據(jù)庫的基礎(chǔ)知識,下面就為您詳細(xì)介紹DB2索引的語法,希望可以對您學(xué)習(xí)DB2索引的語法方面有所幫助。
CREATE INDEX
CREATE INDEX 語句用來為 DB2 Everyplace 表創(chuàng)建索引。
調(diào)用
此語句可以在使用 DB2 CLI 函數(shù)的應(yīng)用程序中使用,也可以通過 CLP 發(fā)出。
語法
>>-CREATE--INDEX--index-name--ON--table-name-------------------->
.-,-----------------------------------------.
V .-ASC--. |
>--(----+-column-name-----------------+--+------+-+--)---------><
+-UCASE--(--| expression |--)-+ '-DESC-'
'-LCASE--(--| expression |--)-'
描述
INDEX index-name
命名索引。
ON table-name
table-name 命名要對其創(chuàng)建索引的表。
column-name
對于索引,列名標(biāo)識要作為索引鍵一部分的列。
每個列名都必須是標(biāo)識一個表列的未限定名。使用 8 列或更少的列;不能重復(fù)列名(SQLSTATE 42711)。
每個指定列的長度一定不能超過 1024 字節(jié)。
ASC
按列以升序順序排列索引條目。這是缺省值。
DESC
按列以降序順序排列索引條目。
LCASE / UCASE
LCASE 或 LOWER 函數(shù)返回一個字符串,其中所有 SBCS 字符都已轉(zhuǎn)換為小寫字符。即,字符 A 至 Z 將轉(zhuǎn)換為字符 a 至 z,而帶有區(qū)分標(biāo)記的字符將轉(zhuǎn)換為其小寫等效項(xiàng)(如果它們存在的話)。
自變量必須是其值為 CHAR 或 VARCHAR 數(shù)據(jù)類型的表達(dá)式。
該函數(shù)的結(jié)果的數(shù)據(jù)類型和長度屬性與自變量的數(shù)據(jù)類型和長度屬性相同。如果自變量可以為空,則結(jié)果可以為空;如果自變量為空,則結(jié)果為空值。
確保 EMPLOYEE 表中的列 JOB 的值中的字符將以小寫字符的形式返回。例如:
SELECT LCASE(JOB)
FROM EMPLOYEE
WHERE EMPNO = '000020';
規(guī)則
對于沒有主鍵的表,最多可創(chuàng)建 15 個索引。對于有主鍵的表,最多可創(chuàng)建 14 個索引。
如果嘗試創(chuàng)建與現(xiàn)有索引匹配的索引,則 CREATE INDEX 語句將失敗。在下列情況下,兩個索引描述被認(rèn)為是重復(fù)的:
索引中的列集及其順序與現(xiàn)有索引的列集和順序相同。
排序?qū)傩允窍嗤摹?
不能在 CREATE INDEX 語句中使用具有 BLOB 數(shù)據(jù)類型的列。
注意事項(xiàng)
CREATE INDEX 語句可包含最多 8 列。
DB2 Everyplace 支持索引的雙向掃描。盡管下面兩個索引的定義不同,但它們的作用是相同的。
CREATE INDEX IDX1 ON EMPLOYEE (JOB ASC)
CREATE INDEX IDX1 ON EMPLOYEE (JOB DESC)
通常,應(yīng)在不指定排序方向的情況下創(chuàng)建索引。通常,索引越少,索引維護(hù)的成本也就越低。
DB2 Everyplace 支持索引的前綴掃描??紤]以下示例。創(chuàng)建了以下索引。
CREATE INDEX J1 ON T (A, B, C, D, E, F, G, K)
不需要為 T (A,B,C,D) 創(chuàng)建另一索引。
如果該表未包含數(shù)據(jù),則 CREATE INDEX 創(chuàng)建索引的描述;在對表插入數(shù)據(jù)時創(chuàng)建索引條目。
要為臟位索引創(chuàng)建索引,請使用以下示例:
CREATE INDEX <index name>
ON <table name>
($dirty)
有關(guān)臟位的更多信息,請參閱 ***。
示例
為 EMPLOYEE 表創(chuàng)建名為 JOB_BY_DPT 的索引。按每個部門(WORKDEPT)中的職位(JOB)以升序順序排列索引條目。
CREATE INDEX JOB_BY_DPT
ON EMPLOYEE (WORKDEPT, JOB)
在建表的時候可以指定索引的表空間,比如: create table tabname(...) in tabspace index in tabindexspace
【編輯推薦】