Cara membuat kunci asing 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

Cara membuat kunci asing 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 membuat kunci asing di MySQL?

Untuk menambahkan kunci asing, klik baris terakhir di daftar Nama Kunci Asing. Masukkan nama untuk kunci asing dan pilih kolom atau beberapa kolom yang ingin Anda indeks dengan mencentang nama kolom di daftar Kolom . Anda dapat menghapus kolom dari indeks dengan menghapus tanda centang dari kolom yang sesuai.

Bagaimana cara membuat kunci asing dalam database?

Gunakan SQL Server Management Studio .
Di Object Explorer, klik kanan tabel yang akan berada di sisi kunci asing relasi dan pilih Desain. .
Dari menu Perancang Tabel, pilih Hubungan. .
Di kotak dialog Foreign-key Relationships, pilih Add. .
Pilih hubungan dalam daftar Hubungan yang Dipilih

Bagaimana cara membuat tabel dengan referensi kunci asing di MySQL?

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.

Mengapa saya tidak bisa membuat kunci asing di MySQL?

Penyebab umum umumnya adalah ketidakcocokan jenis kolom tabel utama dan tabel asing . Ini juga bisa menjadi ketidakcocokan pada tipe Mesin dari dua tabel i. e. MyISAM atau InnoDB. Tipe data kedua kolom harus memiliki tipe data yang sama. int(11) pada satu meja dan smallint(5) pada yang lain akan menyebabkan masalah.