Foreign Key adalah kolom atau field pada suatu tabel yang berfungsi sebagai kunci tamu dari tabel lain. Foreign Key sangat berguna bila kita bekerja dengan banyak tabel yang saling berelasi satu sama lain.
Step 1. Buat tabel mahasiswa.
CREATE TABLE mahasiswa(
id_mahasiswa INT(8) NOT NULL PRIMARY KEY,
nama VARCHAR(20) NOT NULL) ENGINE = INNODB;
Step 2. Buat tabel nilai
CREATE TABLE nilai(
uts INT(3) NOT NULL,
uas INT(3) NOT NULL,
id_mahasiswa INT(8) NOT NULL PRIMARY KEY,
FOREIGN KEY(id_mahasiswa) REFERENCES mahasiswa(id_mahasiswa) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = INNODB;
Penting untuk diketahui, setiap tabel pada MySQL yang memiliki foreign key, engine tabel nya harus berupa INNODB. Hal ini tentu berbeda dengan engine tabel yang diberikan secara default oleh MySQL yaitu MyISAM.
Untuk merubah engine tabel dapat menggunakan statement
ENGINE = INNODB setelah pendefinisian kolom pada penciptaan tabel.
Statement
ON DELETE CASCADE dan
ON UPDATE CASCADE berfungsi jika record dengan primary key tertentu pada suatu tabel di hapus atau di ubah maka record pada tabel lain yang memiliki foreign key sama dengan primary key pada tabel tersebut akan ikut terhapus atau nilai foreign key nya juga ikut berubah jika di update.
Step 3. Insert record ke tabel mahasiswa.
INSERT INTO mahasiswa VALUES('30107122','Etap');
INSERT INTO mahasiswa VALUES('30107777','Iqbal');
INSERT INTO mahasiswa VALUES('30105566','Thomas');
INSERT INTO mahasiswa VALUES('30104432','Nando');
Step 4. Insert record ke tabel nilai.
INSERT INTO nilai VALUES(100,100,'30107122');
INSERT INTO nilai VALUES(50,70,'30107777');
INSERT INTO nilai VALUES(85,60,'30105566');
INSERT INTO nilai VALUES(80,80,'30104432');
Step 5. Tampilkan record tabel mahasiswa dan nilai.

Misalkan kita hapus record pada tabel mahasiswa yang memiliki id_mahasiswa = 30107177.

Maka record pada tabel nilai yang memiliki id_mahasiswa = 30107777 juga ikut terhapus.