2009-05-29 30 views
111

En esta definición de tabla:¿Qué significa la palabra clave 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) 
); 

¿Qué significa la palabra clave KEY? No es una clave principal, no es una clave foriegn, ¿es solo un índice? Si es así, ¿qué tiene de especial este tipo de índice creado con KEY?

+1

Parece como si el operador "CLAVE" ya no está en uso en el servidor MySQL 5.5. No estoy seguro de cuándo se eliminó, pero un problema que tengo con él está presente en 5.1, pero no en 5.5. – slant

Respuesta

150

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

{INDEX|KEY} 

Así KEY es un índice;)

+6

La notación {INDEX | KEY} en general no significa que INDEX y KEY tengan el mismo significado, o KEY es un ÍNDICE;) – sergtk

+1

@sergtk: Según la notación en el manual de MySQL, FOO | BAR significa que la palabra clave FOO o la palabra clave BAR se puede usar. Id est, son sinónimos. – dotancohen

+3

¡Exactamente! El manual de MySQL aclara que ÍNDICE y LLAVE son sinónimos, por eso elevé la respuesta. Pero se puede concluir de la respuesta que la notación BNF {|} describía sinónimos siempre, no solo en este caso. – sergtk

28

KEY es normalmente sinónimo de INDEX. El atributo clave PRIMARY KEY también se puede especificar como solo KEY cuando se proporciona en una definición de columna. Esto se implementó para compatibilidad con otros sistemas de bases de datos.

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

Cuestiones relacionadas