Jadual Kandungan
Buat Kunci Asing
添加外键
删除MySQL外键
MySQL禁用外键检查
Rumah pangkalan data tutorial mysql apakah kunci asing dalam mysql

apakah kunci asing dalam mysql

Feb 17, 2022 am 11:42 AM
mysql kunci asing

Dalam MySQL, kunci asing ialah satu atau lebih lajur yang digunakan untuk mewujudkan dan mengukuhkan pautan antara data dalam dua jadual Ia menunjukkan bahawa medan dalam satu jadual dirujuk oleh medan dalam jadual lain. Kunci asing meletakkan sekatan pada data dalam jadual berkaitan, membolehkan MySQL mengekalkan integriti rujukan.

apakah kunci asing dalam mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Kunci asing adalah relatif kepada kunci primer.

Kunci utama Atribut atau kumpulan atribut yang secara unik mengenal pasti baris dalam jadual. Jadual hanya boleh mempunyai satu kunci utama, tetapi boleh mempunyai berbilang indeks calon. Kunci utama selalunya membentuk kekangan integriti rujukan dengan kunci asing untuk mengelakkan ketidakkonsistenan data. Kunci utama boleh memastikan bahawa rekod adalah unik dan medan kunci utama tidak kosong Sistem pengurusan pangkalan data secara automatik menjana indeks unik untuk kunci utama, jadi kunci utama juga merupakan indeks khas.

Kunci asing ialah satu atau lebih lajur yang digunakan untuk mewujudkan dan mengukuhkan pautan antara data dalam dua jadual. Kunci asing bermaksud bahawa medan dalam satu jadual dirujuk oleh medan dalam jadual lain. Kunci asing meletakkan sekatan pada data dalam jadual berkaitan, membolehkan MySQL mengekalkan integriti rujukan.

Kekangan kunci asing digunakan terutamanya untuk mengekalkan ketekalan data antara dua jadual. Ringkasnya, kunci asing jadual ialah kunci utama jadual lain, dan kunci asing menghubungkan dua jadual. Dalam keadaan biasa, untuk memadamkan kunci utama dalam jadual, anda mesti terlebih dahulu memastikan bahawa tiada kunci asing yang sama dalam jadual lain (iaitu, kunci utama dalam jadual tidak mempunyai kunci asing yang dikaitkan dengannya).

Apabila mentakrifkan kunci asing, anda perlu mematuhi peraturan berikut:

  • Jadual utama mesti sudah wujud dalam pangkalan data, atau menjadi jadual sedang dibuat . Jika ia adalah kes kedua, jadual induk dan jadual hamba adalah jadual yang sama dipanggil jadual rujukan sendiri, dan struktur ini dipanggil integriti rujukan sendiri.

  • Mesti menentukan kunci utama untuk jadual utama.

  • Kunci utama tidak boleh mengandungi nilai nol, tetapi nilai null dibenarkan dalam kunci asing. Iaitu, selagi setiap nilai bukan nol kunci asing muncul dalam kunci utama yang ditentukan, kandungan kunci asing adalah betul.

  • Nyatakan nama lajur atau gabungan nama lajur selepas nama jadual jadual utama. Lajur atau gabungan lajur ini mestilah kunci utama atau kunci calon jadual utama.

  • Bilangan lajur dalam kunci asing mestilah sama dengan bilangan lajur dalam kunci utama jadual utama.

  • Jenis data lajur dalam kunci asing mestilah sama dengan jenis data lajur yang sepadan dalam kunci utama jadual utama.

Buat Kunci Asing

MySQL Cipta Sintaks Kunci Asing

Sintaks berikut menggambarkan cara mencipta kunci asing dalam CREATE TABLE pernyataan Tentukan kunci asing dalam jadual anak.

CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name (columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action
Salin selepas log masuk

Mari kita lihat sintaks di atas dengan lebih terperinci: Klausa

  • CONSTRAINT membolehkan anda mentakrifkan nama kekangan untuk kekangan kunci asing. Jika anda meninggalkannya, MySQL akan menjana nama secara automatik. Klausa
  • FOREIGN KEY menentukan lajur dalam jadual anak yang merujuk lajur kunci utama dalam jadual induk. Anda boleh meletakkan nama kunci asing selepas klausa FOREIGN KEY, atau biarkan MySQL mencipta satu untuk anda. Ambil perhatian bahawa MySQL secara automatik mencipta indeks dengan nama foreign_key_name. Klausa
  • REFERENCES menentukan rujukan kepada lajur dalam jadual induk dan jadual anaknya. Bilangan lajur dalam jadual anak dan induk yang dinyatakan dalam FOREIGN KEY dan REFERENCES mestilah sama. Klausa
  • ON DELETE membolehkan anda menentukan cara rekod dalam jadual anak akan melaksanakan operasi apabila rekod dalam jadual induk dipadamkan. Jika anda meninggalkan klausa ON DELETE dan memadamkan rekod dalam jadual induk, MySQL akan menolak untuk memadamkan data yang berkaitan dalam jadual anak. Selain itu, MySQL juga menyediakan beberapa operasi supaya anda boleh menggunakan pilihan tambahan, seperti ON DELETE CASCADE , apabila memadam rekod dalam jadual induk, MySQL boleh memadam rekod dalam jadual anak yang merujuk rekod dalam induk. meja. Jika anda tidak mahu memadamkan rekod berkaitan dalam jadual anak, gunakan operasi ON DELETE SET NULL sebaliknya. Apabila rekod dalam jadual induk dipadamkan, MySQL akan menetapkan nilai lajur kunci asing dalam jadual anak kepada NULL, dengan syarat lajur kunci asing dalam jadual anak mesti menerima nilai NULL. Ambil perhatian bahawa MySQL akan menolak pemadaman jika operasi ON DELETE NO ACTION atau ON DELETE RESTRICT digunakan. Klausa
  • ON UPDATE membolehkan anda menentukan perkara yang berlaku kepada baris dalam jadual anak apabila baris dalam jadual induk dikemas kini. Anda boleh meninggalkan klausa ON UPDATE untuk meminta MySQL menolak sebarang kemas kini pada baris dalam jadual anak apabila baris dalam jadual induk dikemas kini. Tindakan ON UPDATE CASCADE membolehkan anda melakukan kemas kini tab silang dan apabila satu baris dalam jadual induk dikemas kini, tindakan ON UPDATE SET NULL menetapkan semula nilai dalam baris dalam jadual anak kepada nilai NULL. Tindakan ON UPDATE NO ACTION atau UPDATE RESTRICT menolak sebarang kemas kini.

Contoh MySQL mencipta kunci asing jadual

以下示例创建一个dbdemo数据库和两个表:categoriesproducts。每个类别都有一个或多个产品,每个产品只属于一个类别。 products表中的cat_id字段被定义为具有UPDATE ON CASCADEDELETE ON RESTRICT操作的外键。

CREATE DATABASE IF NOT EXISTS dbdemo;

USE dbdemo;

CREATE TABLE categories(
   cat_id int not null auto_increment primary key,
   cat_name varchar(255) not null,
   cat_description text
) ENGINE=InnoDB;

CREATE TABLE products(
   prd_id int not null auto_increment primary key,
   prd_name varchar(355) not null,
   prd_price decimal,
   cat_id int not null,
   FOREIGN KEY fk_cat(cat_id)
   REFERENCES categories(cat_id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT
)ENGINE=InnoDB;
Salin selepas log masuk

添加外键

MySQL添加外键语法

要将外键添加到现有表中,请使用ALTER TABLE语句与上述外键定义语法:

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;
Salin selepas log masuk

MySQL添加外键示例

现在,我们添加一个名为vendors的新表,并更改products表以包含供应商ID字段:

USE dbdemo;

CREATE TABLE vendors(
    vdr_id int not null auto_increment primary key,
    vdr_name varchar(255)
)ENGINE=InnoDB;

ALTER TABLE products 
ADD COLUMN vdr_id int not null AFTER cat_id;
Salin selepas log masuk

要在products表中添加外键,请使用以下语句:

ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;
Salin selepas log masuk

现在,products表有两个外键,一个是引用categories表,另一个是引用vendors表。

删除MySQL外键

您还可以使用ALTER TABLE语句将外键删除,如下语句:

ALTER TABLE table_name 
DROP FOREIGN KEY constraint_name;
Salin selepas log masuk

在上面的声明中:

  • 首先,指定要从中删除外键的表名称。
  • 其次,将约束名称放在DROP FOREIGN KEY子句之后。

请注意,constraint_name是在创建或添加外键到表时指定的约束的名称。 如果省略它,MySQL会为您生成约束名称。

要获取生成的表的约束名称,请使用SHOW CREATE TABLE语句,如下所示:

SHOW CREATE TABLE table_name;
Salin selepas log masuk

例如,要查看products表的外键,请使用以下语句:

SHOW CREATE TABLE products;
Salin selepas log masuk

以下是语句的输出:

CREATE TABLE products (
  prd_id int(11) NOT NULL AUTO_INCREMENT,
  prd_name varchar(355) NOT NULL,
  prd_price decimal(10,0) DEFAULT NULL,
  cat_id int(11) NOT NULL,
  vdr_id int(11) NOT NULL,
  PRIMARY KEY (prd_id),
  KEY fk_cat (cat_id),
  KEY fk_vendor(vdr_id),

  CONSTRAINT products_ibfk_2 
  FOREIGN KEY (vdr_id) 
  REFERENCES vendors (vdr_id) 
  ON DELETE NO ACTION 
  ON UPDATE CASCADE,

  CONSTRAINT products_ibfk_1 
  FOREIGN KEY (cat_id) 
  REFERENCES categories (cat_id) 
  ON UPDATE CASCADE
) ENGINE=InnoDB;
Salin selepas log masuk

products表有两个外键约束:products_ibfk_1products_ibfk_2

可以使用以下语句删除products表的外键:

ALTER TABLE products 
DROP FOREIGN KEY products_ibfk_1;

ALTER TABLE products 
DROP FOREIGN KEY products_ibfk_2;
Salin selepas log masuk

MySQL禁用外键检查

有时,因为某种原因需要禁用外键检查(例如将CSV文件中的数据导入表中)非常有用。 如果不禁用外键检查,则必须以正确的顺序加载数据,即必须首先将数据加载到父表中,然后再将数据加载导入到子表中,这可能是乏味的。 但是,如果禁用外键检查,则可以按任何顺序加载导入数据。

除非禁用外键检查,否则不能删除由外键约束引用的表。删除表时,还会删除为表定义的任何约束。

要禁用外键检查,请使用以下语句:

SET foreign_key_checks = 0;
Salin selepas log masuk

当然,可以使用以下语句启用它:

SET foreign_key_checks = 1;
Salin selepas log masuk

【相关推荐:mysql视频教程

Atas ialah kandungan terperinci apakah kunci asing dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

MySQL dan SQL: Kemahiran Penting untuk Pemaju MySQL dan SQL: Kemahiran Penting untuk Pemaju Apr 10, 2025 am 09:30 AM

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Cara Membina Pangkalan Data SQL Cara Membina Pangkalan Data SQL Apr 09, 2025 pm 04:24 PM

Membina pangkalan data SQL melibatkan 10 langkah: memilih DBMS; memasang DBMS; mewujudkan pangkalan data; mewujudkan jadual; memasukkan data; mengambil data; mengemas kini data; memadam data; menguruskan pengguna; Menyandarkan pangkalan data.

See all articles