602SQL-Úplná dokumentace Index  

Příkaz CREATE INDEX (SQL)

příkaz_CREATE_INDEX ::= CREATE [ IF NOT EXISTS ] [ UNIQUE ] INDEX jméno_indexu 
  ON [schema.]jméno_tabulky ( výraz [ směr ] {, výraz [ směr ] }… ) [{ NULL | NOT NULL }]
směr ::= ASC | DESC

Popis

Příkaz CREATE INDEX vytvoří nový index k zadané tabulce. Je možné jej nahradit obecnějším ALTER TABLE. Po úspěšném vytvoření indexu se provede implicitní commit - změnu nelze odvolat v transakci.

Příkaz nelze použít na dočasnou tabulku.

Vyhrazené slovo UNIQUE způsobí vytvoření unikátního (jedinečného) indexu. Primární klíč tímto příkazem vytvořit nelze (použijte ALTER TABLE).

Jméno_indexu musí mít v rámci tabulky unikátní - v opačném případě nastane chybový sqlstate W1095 (kompilační chyba).

Index je popsán množinou výrazů, následujících za vyhrazeným slovem ON. Každý výraz může být doplněn slovem DESC pro sestupné třídění. Implicitně se používá vzestupné třídění (slovo ASC).

V definici indexu lze specifikovat, zda se do něj mají zahrnovat i ty řádky z databázové tabulky, pro které je hodnota indexového klíče NULL. Je-li na konci příkazu uvedeno NULL, pak index obsahuje i klíče s hodnotou NULL, je-li uvedeno NOT NULL, pak je neobsahuje. Není-li uvedeno NULL ani NOT NULL, pak záleží na typu indexu: neunikátní index bude moci obsahovat hodnoty NULL, zatímco unikátní index nebude obsahovat hodnoty NULL.

Častěji se pro vytváření indexů k tabulkám používá interaktivní návrhář tabulek.

Pokud index zadaného jména již existuje, pak je-li použita klauzule IF NOT EXISTS, příkaz neprovede žádnou akci, v opačném případě dojde k chybě.

Odlišnosti od normy


Příklady použití:

CREATE UNIQUE INDEX ind ON Per_agen.Zamestnan (cislo);
CREATE INDEX penize ON Zamestnan (plat DESC, prijmeni)