2009-05-29 8 views
111

Dans cette définition de la table:Que signifie le mot clé KEY?

CREATE TABLE groups (
    ug_main_grp_id smallint NOT NULL default '0', 
    ug_uid smallint default NULL, 
    ug_grp_id smallint default NULL, 
    KEY (ug_main_grp_id) 
); 

Que signifie le mot-clé KEY? Ce n'est pas une clé primaire, ce n'est pas une clé de foriegn, alors est-ce juste un index? Si oui, quel est si spécial sur ce type d'index créé avec KEY?

+1

Il semble que l'opérateur "KEY" n'est plus utilisé dans MySQL Server 5.5. Je ne sais pas quand il a été retiré, mais un problème que j'ai avec lui est présent sur 5.1, mais pas 5.5. – slant

Répondre

150

Je cite http://dev.mysql.com/doc/refman/5.1/en/create-table.html

{INDEX|KEY} 

Alors KEY est un indice;)

+6

Notation {INDEX | KEY} en général ne signifie pas que INDEX et KEY ont la même signification, ou KEY est un INDEX;) – sergtk

+1

@sergtk: Selon la notation dans le manuel MySQL, FOO | BAR signifie que soit le mot-clé FOO ou le mot clé BAR peut être utilisé. Id est, ils sont synonymes. – dotancohen

+3

Exactement! Le manuel MySql précise que INDEX et KEY sont synonymes - c'est pourquoi j'ai upvoted la réponse. Mais on peut conclure de la réponse que BNF Notation {|} décrit toujours des synonymes, pas seulement dans ce cas. – sergtk

28

KEY est normalement synonyme de INDEX. L'attribut de clé PRIMARY KEY peut également être spécifié comme juste KEY lorsqu'il est donné dans une définition de colonne. Cela a été implémenté pour la compatibilité avec d'autres systèmes de base de données.

column_definition: 
     data_type [NOT NULL | NULL] [DEFAULT default_value] 
     [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] 
     ... 

Ref: http://dev.mysql.com/doc/refman/5.1/en/create-table.html