Bagaimana cara menambahkan kunci asing ke tabel di mysql?

Foreign Key membantu membangun hubungan basis data dan menjaga integritas referensial. Mereka membantu menautkan satu atau lebih kolom dalam satu tabel ke tabel lain. Berikut cara menambahkan kunci asing di MySQL

 

Cara Menambahkan Kunci Asing di MySQL

Berikut adalah langkah-langkah untuk menambahkan kunci asing di MySQL. Anda dapat menambahkan batasan kunci asing menggunakan pernyataan CREATE TABLE atau ALTER TABLE di SQL

Berikut sintaks untuk membuat kunci asing di MySQL

Menggunakan ALTER TABLE

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name 
FOREIGN KEY (foreign_key_name,...) 
REFERENCES parent_table(column_name,...);

Dalam kueri di atas, nama_tabel adalah tabel tempat Anda ingin menambahkan kunci asing. constraint_name adalah nama batasan kunci asing. foreign_key_name, … adalah daftar kolom kunci asing

parent_table adalah tabel yang menjadi referensi kunci_asing Anda, diikuti dengan daftar nama kolom dalam tabel tersebut

 

Bonus Baca. Kolom Tabel Alter MySQL

 

Menggunakan BUAT TABEL

CREATE TABLE table_name(
    column_name column_description,
    CONSTRAINT constraint_name
    FOREIGN KEY (foreign_key_name,...) 
        REFERENCES parent_table(column_name,...)
)
_

Dalam kueri di atas, nama_tabel adalah tabel tempat Anda ingin menambahkan kunci asing. constraint_name adalah nama batasan kunci asing. foreign_key_name, … adalah daftar kolom kunci asing

parent_table adalah tabel yang menjadi referensi kunci_asing Anda, diikuti dengan daftar nama kolom dalam tabel tersebut

Harap dicatat, di ALTER TABLE Anda perlu menggunakan ADD CONSTRAINT sementara di CREATE TABLE Anda hanya perlu menggunakan kata kunci CONSTRAINT

 

Bonus Baca. Batasan MySQL DROP FOREIGN KEY

 

Contoh MySQL ADD FOREIGN KEY

Katakanlah Anda memiliki tabel berikut

Mari buat 2 tabel (kategori dan pesanan) dan tambahkan batasan kunci asing ke pesanan, merujuk kolom id di tabel kategori

Kami ingin membuat tabel bernama student yang berisi kunci asing yang merujuk ke kolom id di tabel city

Bagaimana cara menambahkan kunci asing ke tabel di mysql?

Solusi 1 (tabel baru)

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT FOREIGN KEY REFERENCES city(id)
);

Diskusi

Untuk membuat tabel baru yang berisi kolom kunci asing yang mereferensikan tabel lain, gunakan kata kunci FOREIGN KEY REFERENCES di akhir definisi kolom tersebut. Ikuti dengan nama tabel yang direferensikan dan nama kolom yang direferensikan dalam tanda kurung

Dalam contoh kami, kami membuat tabel student menggunakan klausa

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
1. Kami mencantumkan nama kolom dan memasukkan tipe data masing-masing dalam tanda kurung. Kolom
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
_2 adalah kunci asing dalam tabel ini dan menunjukkan nilai ID yang disimpan di kolom id dalam tabel city. Kami menulis FOREIGN KEY REFERENCES di akhir definisi kolom ini dan mengikutinya dengan tabel dan kolom yang direferensikan.
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
6

Ingatlah bahwa Anda dapat membuat lebih dari satu kunci asing untuk sebuah tabel

Solusi 2 (tabel baru)

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);

Diskusi

Cara lain untuk mendefinisikan kunci asing selama pembuatan tabel adalah dengan menggunakan klausa FOREIGN KEY REFERENCES di akhir definisi kolom. Dalam hal ini, setelah klausa

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
8, kami menetapkan kolom kunci asing. Berikutnya adalah klausa
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
_9 bersama dengan nama tabel dan kolom yang dirujuk

Anda dapat membuat kunci asing di lebih dari satu kolom, seperti yang ditunjukkan di bawah ini

Solusi 3 (tabel baru)

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
_

Dalam contoh ini, kendala

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
_0 adalah kunci asing yang terdiri dari dua kolom.
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
1 dan
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
2. Dua kolom kunci asing ini mengacu pada dua kolom dalam tabel
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
3 –
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
1 dan
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
2

Ini contoh lainnya

Solusi 4 (tabel baru)

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
      CONSTRAINT fk_student_city_id 
      FOREIGN KEY (city_id) REFERENCES city(id)
);

Diskusi

Dalam kode ini, kami kembali memiliki klausa

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
_6 dengan nama kendala ini. Gunakan nama yang mudah dibaca dan dipahami. Dalam contoh kami, kami menggunakan nama
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
_7, yang menunjukkan tabel dan kolom yang relevan. Selanjutnya kita tulis
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
8 dan tambahkan (dalam tanda kurung) nama kolom yang menjadi foreign key. Kemudian kita memiliki klausa
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
FOREIGN KEY (city_id) REFERENCES city(id)
);
_9 diikuti dengan nama tabel dan kolom yang direferensikan (di sini. id)

Solusi 5 (tabel yang ada)

ALTER TABLE student
ADD FOREIGN KEY (city_id) REFERENCES city(id);

Diskusi

Dimungkinkan juga untuk menambahkan kunci asing baru ke tabel yang sudah ada. Di sini, tabel diubah menggunakan klausa ________16______1. Nama tabel (dalam contoh kita, student) ditempatkan setelah kata kunci

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
      CONSTRAINT fk_student_city_id 
      FOREIGN KEY (city_id) REFERENCES city(id)
);
1. Selanjutnya klausa
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
      CONSTRAINT fk_student_city_id 
      FOREIGN KEY (city_id) REFERENCES city(id)
);
_4 diikuti dengan nama kolom yang akan dijadikan foreign key. Kemudian kita memiliki
CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
city_id INT,
      CONSTRAINT fk_student_city_id 
      FOREIGN KEY (city_id) REFERENCES city(id)
);
_5 dengan nama tabel yang direferensikan dan nama kolom primary key dalam tanda kurung

Perhatikan bahwa tabel yang Anda modifikasi harus ada sebelum perintah ini dijalankan

Solusi 6 (tabel yang ada, batasan kunci asing)

ALTER TABLE student
      ADD CONSTRAINT fk_student_city_id 
      FOREIGN KEY (city_id) REFERENCES city(id)

Diskusi

Gunakan kueri seperti ini jika Anda ingin menamai kolom kunci asing sebagai batasan untuk tabel yang sudah ada. Di sini, batasan kunci asing diberi nama

CREATE TABLE student (
id INT PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
);
7. Jika Anda tidak menentukan nama kendala, database akan menghasilkan nama kendala default (yang akan bervariasi menurut basis data)

Bagaimana cara menambahkan kunci asing ke tabel yang ada di MySQL?

Berikut sintaks pernyataan ALTER TABLE untuk menambahkan foreign key pada tabel yang sudah ada. .
ALTER TABLE table_name
TAMBAHKAN [KENDALA [simbol]] KUNCI ASING
[nama_indeks] (nama_kolom,. )
REFERENSI nama_tabel (nama_kolom,. )
PADA DELETE referenceOption
ON UPDATE referenceOption

Bagaimana cara menambahkan kolom kunci asing ke tabel yang sudah ada?

Untuk membuat tabel baru yang berisi kolom kunci asing yang mereferensikan tabel lain, gunakan kata kunci FOREIGN KEY REFERENCES di akhir definisi kolom tersebut. Follow that with the name of the referenced table and the name of the referenced column in parentheses.

Bagaimana cara memasukkan kunci asing dalam SQL?

Jika Anda ingin menambahkan KUNCI ASING ke kolom ke dalam tabel SQL, Anda harus mengikuti langkah-langkah di bawah ini dalam urutan yang diberikan. .
Buat database di sistem
Buat dua tabel dalam database yang sama
Lihat struktur Tabel sebelum penambahan kunci asing
Tambahkan kunci asing ke tabel
Lihat struktur tabel

Di mana Anda meletakkan kunci asing?

Aturan Praktis yang Disederhanakan adalah meletakkan kunci asing pada tabel anak (jika setiap orang tua dapat memiliki banyak anak)*.