Apa arti kata kunci KUNCI?


141

Dalam definisi tabel MySQL ini:

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

Apa arti KEYkata kunci? Itu bukan kunci utama, itu bukan kunci asing, jadi apakah itu hanya indeks? Jika demikian, apa yang istimewa dari jenis indeks yang dibuat dengan ini KEY?


1
Tampaknya seolah-olah operator "KEY" tidak lagi digunakan di MySQL Server 5.5. Tidak yakin kapan itu dihapus, tetapi masalah yang saya alami dengan itu ada pada 5.1, tetapi tidak 5.5.
— Miring

Jawaban:


190

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

{INDEX|KEY}

Begitu KEYjuga INDEX;)


9
Notasi {INDEX | KEY} secara umum tidak berarti bahwa INDEX dan KEY memiliki arti yang sama, atau KEY adalah INDEX;)
— sergtk

1
@ergtk: Sesuai dengan notasi dalam manual MySQL, FOO | BAR berarti bahwa kata kunci FOO atau kata kunci BAR dapat digunakan. Id est, mereka adalah sinonim.
— dotancohen

4
Persis! Manual MySql mengklarifikasi bahwa INDEX dan KEY adalah sinonim - inilah mengapa saya menaikkan jawaban. Tetapi dapat disimpulkan dari jawaban bahwa Notasi BNF {|} selalu menggambarkan sinonim, tidak hanya dalam kasus ini.
— sergtk

3
Ini tidak benar. Saya menemukan jawaban terbaik di Quora (lihat pengguna Kristian Kohntopp) quora.com/... : KEY adalah kendala, INDEX adalah struktur data yang diperlukan untuk mengimplementasikan kendala itu. Dalam praktiknya, jika Anda memiliki FK misalnya KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)maka Anda mungkin juga ingin menentukan INDEX apa yang digunakan (HASH vs BTREE). Contoh ini menunjukkan KEY dan INDEX bukan sinonim.
— oneloop

4
Tidak ada yang pernah menjelaskan apa gunanya kata kunci itu, apakah itu usang atau tidak. Jika saya memiliki kunci utama, lalu mengapa memiliki "kunci" juga? apa gunanya dua indeks?
— tolong terangkan

36

KEYbiasanya merupakan sinonim untuk INDEX. Atribut kunci PRIMARY KEYjuga dapat ditentukan hanya KEYketika diberikan dalam definisi kolom. Ini diimplementasikan untuk kompatibilitas dengan sistem database lain.

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.