it-swarm.asia

Perbedaan antara "Kunci Unik" dan "Kunci Utama"

Apa perbedaan utama antara Unique Key dan Primary Key di MySQL?

19
newuser

Sebuah meja dapat memiliki paling banyak satu PRIMARY KEY kendala tetapi dapat memiliki sebanyak yang Anda inginkan UNIQUE KEY kendala.

Kolom yang merupakan bagian dari PRIMARY KEY harus didefinisikan sebagai NOT NULL. Itu tidak diperlukan untuk kolom yang merupakan bagian dari UNIQUE KEY kendala. Jika kolom tidak dapat dibatalkan, maka tidak ada perbedaan antara Kunci Unik dan Utama.

Perbedaan kecil lainnya adalah Anda dapat memilih nama yang Anda inginkan untuk UNIQUE KEY kendala (dan indeks). Di sisi lain, PRIMARY KEY memiliki nama default: PRIMARY.

24
ypercubeᵀᴹ

Satu perbedaan utama

  • Kunci primer melarang kolom yang dapat dibatalkan
  • Kunci unik memungkinkan kolom yang dapat dibatalkan

Kalau tidak, tidak ada banyak perbedaan ...

7
gbn

Sesuatu yang orang lain belum tunjukkan:

  • Jika Anda tidak secara eksplisit mendeklarasikan PK dalam tabel InnoDB, itu akan membuatnya di bawah selimut untuk Anda. Anda tidak dapat mengakses, memesan, atau memfilter dengan kunci implisit ini. Ini memiliki konsekuensi dalam hal sumber daya karena setiap indeks sekunder berisi salinan penunjuk ke PK baris.
4
atxdba

Perbedaan terpenting adalah tujuan.

  • Kunci Utama: Tujuan Kunci Utama adalah untuk bertindak sebagai "KUNCI". Kunci utama adalah kunci dalam basis data relasional yang digunakan untuk mengidentifikasi catatan.
  • Indeks Unik: Indeks Unik adalah "INDEX" yang dimaksudkan untuk kinerja. Pengoptimal mengetahui bahwa untuk kondisi "di mana x =: x" hanya akan ada satu catatan sebagai hasilnya - sehingga dapat menyiapkan rencana yang sesuai untuk itu.
  • Batasan Unik: Ini adalah "CONSTRAINT" yang memastikan bahwa tidak ada nilai duplikat di kolom itu. Ini merupakan kendala untuk integritas data.

Terlepas dari tujuannya, hal-hal berikut ini patut diperhatikan.

  • Kecuali jika PRIMARY KEY ditentukan untuk mencoba membuat INDEKS CLUSTERED (Poin ini adalah tentang SQL Server, seperti yang disebutkan dalam komentar)
  • Hanya ada satu KUNCI UTAMA per tabel; tetapi bisa ada banyak kendala dan indeks unik
  • KUNCI UTAMA selalu bukan nol tetapi kolom dengan batasan unik dapat menyimpan nilai NULL
3
LCJ