Ya, kunci asing adalah jenis kendala. MySQL memiliki dukungan yang tidak merata untuk kendala:
PRIMARY KEY
:ya sebagai batasan tabel dan batasan kolom.FOREIGN KEY
:ya sebagai batasan tabel, tetapi hanya dengan mesin penyimpanan InnoDB dan BDB; sebaliknya diuraikan tetapi diabaikan.CHECK
:diuraikan tetapi diabaikan di semua mesin penyimpanan.UNIQUE
:ya sebagai batasan tabel dan batasan kolom.NOT NULL
:ya sebagai batasan kolom.DEFERRABLE
dan atribut kendala lainnya:tidak ada dukungan.
CONSTRAINT
klausa memungkinkan Anda memberi nama batasan secara eksplisit, baik untuk membuat metadata lebih mudah dibaca atau menggunakan nama saat Anda ingin menghapus batasan. Standar SQL mengharuskan CONSTRAINT
klausa adalah opsional. Jika Anda mengabaikannya, RDBMS akan membuat nama secara otomatis, dan nama tersebut tergantung pada implementasinya.