2009-05-29 18 views
111

In dieser Tabelle Definition:Was bedeutet das Schlüsselwort 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) 
); 

Was bedeutet das KEY Stichwort bedeuten? Es ist kein Primärschlüssel, es ist kein Foreign-Schlüssel, also ist es nur ein Index? Wenn ja, was ist so besonders an diesem mit KEY erstellten Index?

+1

Es scheint, als ob der "KEY" Bediener nicht mehr in Gebrauch ist in MySQL Server 5.5. Nicht sicher, wann es entfernt wurde, aber ein Problem, das ich damit habe, ist auf 5.1, aber nicht 5.5. – slant

Antwort

150

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

{INDEX|KEY} 

Zitiert So ist ein Index KEY;)

+6

Notation {INDEX | KEY} bedeutet im Allgemeinen nicht, dass INDEX und KEY dieselbe Bedeutung haben, oder KEY ist ein INDEX;) – sergtk

+1

@sergtk: Gemäß der Notation im MySQL-Handbuch bedeutet FOO | BAR entweder das Schlüsselwort FOO oder das Schlüsselwort BAR kann verwendet werden. Id est, sie sind Synonyme. – dotancohen

+3

Genau! MySql Handbuch stellt klar, dass INDEX und KEY Synonyme sind - deshalb habe ich die Antwort upvoted. Aber es kann aus der Antwort geschlossen werden, dass BNF Notation {} Synonyme immer und nicht nur in diesem Fall beschrieb. – sergtk

28

KEY normalerweise ein Synonym für Index ist. Das Schlüsselattribut PRIMARY KEY kann auch als nur KEY angegeben werden, wenn es in einer Spaltendefinition angegeben wird. Dies wurde zur Kompatibilität mit anderen Datenbanksystemen implementiert.

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