Cara memeriksa batasan kunci asing di meja kerja mysql

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

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja mysql

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

Tabel kontak kami terlihat seperti di bawah ini

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja 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

Cara memeriksa batasan kunci asing di meja kerja 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 melihat batasan kunci asing di MySQL?

pilih * dari INFORMATION_SCHEMA. TABLE_CONSTRAINTS di mana CONSTRAINT_TYPE = 'FOREIGN KEY'; . .
To see all FKs in your table: USE ''; SELECT i. .. .
Untuk melihat semua tabel dan FK di skema Anda. .
Untuk melihat semua FK di database Anda

Bagaimana cara menemukan kunci asing dari sebuah tabel di meja kerja MySQL?

Di Editor Tabel buka tab Kunci Asing (di bagian bawah) . Kunci ditampilkan di panel kiri dan detail kunci yang dipilih ditampilkan di sebelah kanan. Anda dapat melihat pasangan kolom asing dan utama di kolom Kolom dan Kolom Referensi di kisi di tengah jendela.

Bagaimana Anda menemukan batasan kunci asing?

foreign_keys SQL system view untuk membuat daftar dan menemukan batasan pemeriksaan kunci asing pada tabel database. Tampilan katalog sistem SQL Server sys. foreign_keys adalah tempat yang tepat untuk mengidentifikasi dan mencantumkan kunci asing dan nama kunci asing yang dibuat pada tabel database SQL atau referensi ke tabel SQL tertentu.

Bagaimana cara melihat batasan pada tabel meja kerja MySQL?

Masalah. Anda ingin menemukan nama-nama kendala dalam sebuah tabel di MySQL
Contoh. Kami ingin menampilkan nama-nama kendala dalam tabel siswa
Larutan. PILIH TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME. .
Diskusi. Gunakan view table_constraints dalam skema information_schema

Bagaimana cara memilih kunci asing di meja kerja?

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 memeriksa batasan kunci asing dalam SQL menggunakan kueri?

Pertama, cari tahu nama batasan FOREIGN KEY Anda dengan cara ini. PILIH TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, -- < REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME DARI INFORMATION_SCHEMA .