KEY anahtar kelimesi ne anlama geliyor?


141

Bu MySQL tablosu tanımında:

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)
);

KEYAnahtar kelime ne anlama geliyor? Bu birincil bir anahtar değil, yabancı bir anahtar değil, sadece bir dizin mi? Öyleyse, bu tür dizinlerle oluşturulan bu kadar özel olan şey KEYnedir?


1
"KEY" işleci artık MySQL Server 5.5'te kullanılmıyor gibi görünüyor. Ne zaman kaldırıldığından emin değilim, ancak bununla ilgili bir sorun 5.1'de mevcut, ancak 5.5 değil.
eğik

Yanıtlar:


190

Alıntı http://dev.mysql.com/doc/refman/5.1/en/create-table.html

{INDEX|KEY}

Yani KEYbir olduğunu INDEX;)


9
{INDEX | KEY} notasyonu genel olarak INDEX ve
KEY'in

1
@sergtk: MySQL kılavuzundaki gösterime göre, FOO | BAR, FOO anahtar kelimesinin veya BAR anahtar kelimesinin kullanılabileceği anlamına gelir. Id est, eşanlamlılar.
dotancohen

4
Kesinlikle! MySql kılavuzu INDEX ve KEY'in eş anlamlı olduğunu açıklığa kavuşturuyor - bu yüzden cevabı iptal ettim. Ancak BNF Notation {|} 'ın eşanlamlıları sadece bu durumda değil, her zaman tanımladığı sonucuna varılabilir.
sergtk

3
Bu doğru değil. Quora'da en iyi cevabı buldum (bkz. Kullanıcı Kristian Kohntopp) quora.com/… : KEY bir kısıtlama, INDEX bu kısıtlamayı uygulamak için gerekli veri yapısıdır. Uygulamada, örneğin bir KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)FK'niz varsa, ek olarak INDEX'in ne kullanıldığını belirtmek isteyebilirsiniz (HASH vs BTREE). Bu örnekte, KEY ve INDEX eş anlamlı değildir.
oneloop

4
Hiç kimse, modası geçmiş olsa da olmasa da, bu anahtar kelimenin ne kullanıldığını açıklamamıştır. Birincil anahtarım varsa, neden bir "anahtar" da var? iki indeksin anlamı nedir? plz aydınlat beni bu konuda hiçbir şey bulamıyorum
Barbz_YHOOL

36

KEYnormalde ile eşanlamlıdır INDEX. Anahtar niteliği PRIMARY KEY, KEYbir sütun tanımında verildiği gibi de belirtilebilir . Bu, diğer veritabanı sistemleriyle uyumluluk için uygulanmıştır.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.