Buat kolom yang ada kunci asing mysql

Kita dapat menambahkan batasan FOREIGN KEY ke kolom tabel MySQL yang ada dengan bantuan pernyataan ALTER TABLE

Sintaksis

ALTER TABLE nama_tabel TAMBAHKAN KUNCI ASING (nama_kolom) REFERENSI tabel yang memiliki Kunci Utama(nama_kolom);

Contoh

Misalkan kita ingin menambahkan batasan FOREIGN KEY pada tabel 'Pesanan1' yang merujuk ke tabel 'Pelanggan' yang memiliki kolom 'Cust_Id' sebagai Kunci Utama. Ini dapat dilakukan dengan bantuan kueri berikut −

Untuk menambahkan batasan kunci asing ke bought_by kolom dari product tabel untuk merujuk ke table_name1 kolom dari pupil tabel

table_name_3

Sekarang kita dapat memastikan bahwa setiap nilai yang kita miliki untuk bought_by memiliki nilai pencocokan yang sesuai di kolom table_name1 dari pupil. Ini berarti kami akan selalu memiliki informasi tentang table_name7 siswa yang membeli produk tertentu

Kunci asing digunakan untuk menghubungkan satu atau lebih dari satu tabel secara bersamaan. Ini juga dikenal sebagai kunci referensi. Kunci asing cocok dengan bidang kunci utama dari tabel lain. Ini berarti bidang kunci asing dalam satu tabel mengacu pada bidang kunci utama dari tabel lainnya. Ini mengidentifikasi setiap baris dari tabel lain secara unik yang mempertahankan integritas referensial di MySQL

Kunci asing memungkinkan untuk membuat hubungan induk-anak dengan tabel. Dalam hubungan ini, tabel induk menampung nilai kolom awal, dan nilai kolom tabel anak mereferensikan nilai kolom induk. MySQL memungkinkan kita untuk menentukan batasan kunci asing pada tabel anak

MySQL mendefinisikan kunci asing dalam dua cara

  1. Menggunakan Pernyataan CREATE TABLE
  2. Menggunakan Pernyataan ALTER TABLE

Sintaksis

Berikut ini adalah sintaks dasar yang digunakan untuk mendefinisikan kunci asing menggunakan pernyataan CREATE TABLE OR ALTER TABLE di MySQL

Dalam sintaks di atas, kita dapat melihat parameter berikut

constraint_name. Ini menentukan nama batasan kunci asing. Jika kami belum memberikan nama batasan, MySQL akan membuat namanya secara otomatis

nama_kolom. Ini adalah nama kolom yang akan kita jadikan kunci asing

parent_tbl_name. Ini menentukan nama tabel induk diikuti dengan nama kolom yang mereferensikan kolom kunci asing

Referensi_option. Ini digunakan untuk memastikan bagaimana kunci asing mempertahankan integritas referensial menggunakan klausa ON DELETE dan ON UPDATE antara tabel induk dan anak

MySQL berisi lima pilihan referensi yang berbeda, yang diberikan di bawah ini

RIAM. Ini digunakan ketika kita menghapus atau memperbarui baris apa pun dari tabel induk, nilai baris yang cocok di tabel anak akan dihapus atau diperbarui secara otomatis

SET NULL. Ini digunakan saat kita menghapus atau memperbarui baris apa pun dari tabel induk, nilai kolom kunci asing di tabel anak disetel ke NULL

MEMBATASI. Ini digunakan ketika kita menghapus atau memperbarui baris apa pun dari tabel induk yang memiliki baris yang cocok di tabel referensi (anak), MySQL tidak mengizinkan untuk menghapus atau memperbarui baris di tabel induk

TIDAK ADA TINDAKAN. Ini mirip dengan MEMBATASI. Tetapi ada satu perbedaan yang memeriksa integritas referensial setelah mencoba memodifikasi tabel

SET STANDAR. Parser MySQL mengenali tindakan ini. Namun, tabel InnoDB dan NDB menolak tindakan ini

CATATAN. MySQL terutama memberikan dukungan penuh untuk tindakan CASCADE, RESTRICT, dan SET NULL. Jika kita belum menentukan klausa ON DELETE dan ON UPDATE, MySQL mengambil tindakan default RESTRICT

Contoh Kunci Asing

Mari kita pahami cara kerja kunci asing di MySQL. Jadi pertama, kita akan membuat database bernama "mysqltestdb" dan mulai menggunakannya dengan perintah di bawah ini

Selanjutnya, kita perlu membuat dua tabel bernama "pelanggan" dan "kontak" menggunakan pernyataan di bawah ini

Meja. pelanggan

Meja. kontak

Verifikasi Struktur Tabel

Di sini, kita akan melihat bagaimana struktur database kita menggunakan query berikut

Kita akan mendapatkan struktur seperti di bawah ini

Buat kolom yang ada kunci asing mysql

Pada keluaran di atas, kita dapat melihat bahwa PRI di kolom kunci tabel pelanggan menyatakan bahwa bidang ini adalah nilai indeks utama. Selanjutnya, MUL di kolom kunci dari nilai kontak memberi tahu bahwa kolom Customer_Id dapat menyimpan banyak baris dengan nilai yang sama

Masukkan Data ke Tabel

Sekarang, kita harus memasukkan record ke dalam kedua tabel. Jalankan pernyataan ini untuk memasukkan data ke dalam tabel pelanggan

Setelah penyisipan, jalankan perintah SELECT TABLE untuk memeriksa data tabel pelanggan seperti di bawah ini

Buat kolom yang ada kunci asing mysql

Jalankan pernyataan sisipkan di bawah ini untuk menambahkan data ke kontak tabel

Tabel kontak kami terlihat seperti di bawah ini

Buat kolom yang ada kunci asing mysql

Sekarang, mari kita lihat bagaimana kunci asing di MySQL menjaga integritas data

Jadi di sini, kita akan menghapus data referensial yang menghapus record dari kedua tabel. Kami telah mendefinisikan kunci asing di tabel kontak sebagai

Artinya jika kita menghapus catatan pelanggan dari tabel pelanggan, maka catatan terkait di tabel kontak juga harus dihapus. Dan ON UPDATE CASCADE akan memperbarui secara otomatis pada tabel induk ke bidang yang direferensikan pada tabel anak (Ini adalah Customer_Id)

Jalankan pernyataan ini yang menghapus catatan dari tabel yang bernama JOHN

Sekali lagi, jika kita melihat tabel kita, kita dapat melihat bahwa kedua tabel telah diubah. Ini berarti bidang dengan nama JOHN akan dihapus seluruhnya dari kedua tabel

Buat kolom yang ada kunci asing mysql

Sekarang, uji ON UPDATE CASCADE. Di sini, kami akan memperbarui Customer_Id Mary di tabel kontak sebagai

Sekali lagi, jika kita melihat tabel kita, kita dapat melihat bahwa kedua tabel diubah dengan Customer_Id of Mary=3

Buat kolom yang ada kunci asing mysql

Contoh Kunci Asing menggunakan tindakan SET NULL

Di sini, kita akan memahami bagaimana aksi SET NULL bekerja dengan kunci asing. Pertama, kita harus membuat dua tabel bernama Orang dan Kontak, seperti yang ditunjukkan di bawah ini

Meja. Orang

Meja. Pelanggan

Selanjutnya, kita perlu memasukkan data ke dalam kedua tabel menggunakan pernyataan berikut

Sekarang, perbarui ID tabel "Orang".

Terakhir, verifikasi pembaruan menggunakan pernyataan SELECT yang diberikan di bawah ini

Buat kolom yang ada kunci asing mysql

Jika kita melihat tabel kita, kita dapat melihat bahwa kedua tabel telah diubah. Baris dengan Person_Id=3 di tabel Kontak secara otomatis diatur ke NULL karena tindakan ON UPDATE SET NULL

Cara DROP Kunci Asing

MySQL mengizinkan pernyataan ALTER TABLE untuk menghapus kunci asing yang ada dari tabel. Sintaks berikut digunakan untuk menjatuhkan kunci asing

Di sini, nama_tabel adalah nama tabel tempat kita akan menghapus kunci asing. Constraint_name adalah nama kunci asing yang ditambahkan selama pembuatan tabel

Jika kita belum mengetahui nama dari foreign key yang ada ke dalam tabel, jalankan perintah berikut

Ini akan memberikan output seperti di bawah ini di mana kita dapat melihat bahwa kontak tabel memiliki satu kunci asing bernama fk_customer yang ditunjukkan dalam kotak merah

Buat kolom yang ada kunci asing mysql

Sekarang, untuk menghapus batasan kunci asing ini dari tabel kontak, jalankan pernyataan seperti di bawah ini

Kami dapat memverifikasi apakah batasan kunci asing dihapus atau tidak, gunakan pernyataan SHOW CREATE TABLE. Ini akan memberikan output seperti di bawah ini dimana kita dapat melihat bahwa kunci asing tidak lagi tersedia di kontak tabel

Buat kolom yang ada kunci asing mysql

Tentukan Kunci Asing Menggunakan Pernyataan ALTER TABLE

Pernyataan ini memungkinkan kita untuk melakukan modifikasi pada tabel yang ada. Terkadang ada kebutuhan untuk menambahkan kunci asing ke kolom tabel yang sudah ada;

Sintaksis

Berikut adalah sintaks pernyataan ALTER TABLE untuk menambahkan kunci asing di tabel yang ada

Saat kami menambahkan kunci asing menggunakan pernyataan ALTER TABLE, disarankan untuk terlebih dahulu membuat indeks pada kolom, yang direferensikan oleh kunci asing

Contoh

Pernyataan berikut membuat dua tabel, "Orang" dan "Kontak", tanpa memiliki kolom kunci asing ke dalam definisi tabel

Meja. Orang

Meja. Kontak

Setelah membuat tabel, jika kita ingin menambahkan kunci asing ke tabel yang sudah ada, kita perlu mengeksekusi pernyataan ALTER TABLE seperti di bawah ini

Pemeriksaan Kunci Asing

MySQL memiliki variabel khusus foreign_key_cheks untuk mengontrol pemeriksaan kunci asing ke dalam tabel. Secara default, diaktifkan untuk menegakkan integritas referensial selama operasi normal pada tabel. Variabel ini bersifat dinamis sehingga mendukung cakupan global dan sesi keduanya

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 Anda memodifikasi kolom yang ada?

Untuk mengubah tipe data kolom dalam tabel, gunakan sintaks berikut. .
SQL Server/MS Access. ALTER TABLE table_name. ALTER COLUMN nama_kolom tipe data;
SQL / Oracle saya (versi sebelumnya 10G). ALTER TABLE table_name. MENGUBAH tipe data nama_kolom KOLOM;
Oracle 10G dan yang lebih baru. ALTER TABLE table_name

Bisakah kolom yang dihitung menjadi kunci asing?

Kolom yang dihitung tidak dapat digunakan sebagai definisi batasan DEFAULT atau FOREIGN KEY atau dengan definisi batasan NOT NULL.

Bagaimana cara mengubah kunci utama menjadi kunci asing di MySQL?

Untuk menambah, menghapus, atau mengubah primary key MySQL pada tabel. .
Klik kanan tabel pada diagram yang ingin Anda tambahkan kunci utama atau kunci asing
Dari menu konteks yang muncul, pilih operasi yang ingin Anda lakukan
Di jendela Konfigurasi yang terbuka, Anda dapat menambah, menghapus, atau mengubah pengaturan kunci utama atau kunci asing