apakah kunci asing dalam mysql
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.
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
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. KlausaFOREIGN KEY
menentukan lajur dalam jadual anak yang merujuk lajur kunci utama dalam jadual induk. Anda boleh meletakkan nama kunci asing selepas klausaFOREIGN KEY
, atau biarkan MySQL mencipta satu untuk anda. Ambil perhatian bahawa MySQL secara automatik mencipta indeks dengan namaforeign_key_name
. KlausaREFERENCES
menentukan rujukan kepada lajur dalam jadual induk dan jadual anaknya. Bilangan lajur dalam jadual anak dan induk yang dinyatakan dalamFOREIGN KEY
danREFERENCES
mestilah sama. KlausaON DELETE
membolehkan anda menentukan cara rekod dalam jadual anak akan melaksanakan operasi apabila rekod dalam jadual induk dipadamkan. Jika anda meninggalkan klausaON 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 operasiON DELETE SET NULL
sebaliknya. Apabila rekod dalam jadual induk dipadamkan, MySQL akan menetapkan nilai lajur kunci asing dalam jadual anak kepadaNULL
, dengan syarat lajur kunci asing dalam jadual anak mesti menerima nilaiNULL
. Ambil perhatian bahawa MySQL akan menolak pemadaman jika operasiON DELETE NO ACTION
atauON DELETE RESTRICT
digunakan. KlausaON UPDATE
membolehkan anda menentukan perkara yang berlaku kepada baris dalam jadual anak apabila baris dalam jadual induk dikemas kini. Anda boleh meninggalkan klausaON UPDATE
untuk meminta MySQL menolak sebarang kemas kini pada baris dalam jadual anak apabila baris dalam jadual induk dikemas kini. TindakanON UPDATE CASCADE
membolehkan anda melakukan kemas kini tab silang dan apabila satu baris dalam jadual induk dikemas kini, tindakanON UPDATE SET NULL
menetapkan semula nilai dalam baris dalam jadual anak kepada nilaiNULL
. TindakanON UPDATE NO ACTION
atauUPDATE RESTRICT
menolak sebarang kemas kini.
Contoh MySQL mencipta kunci asing jadual
以下示例创建一个dbdemo
数据库和两个表:categories
和products
。每个类别都有一个或多个产品,每个产品只属于一个类别。 products
表中的cat_id
字段被定义为具有UPDATE ON CASCADE
和DELETE 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;
添加外键
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;
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;
要在products
表中添加外键,请使用以下语句:
ALTER TABLE products ADD FOREIGN KEY fk_vendor(vdr_id) REFERENCES vendors(vdr_id) ON DELETE NO ACTION ON UPDATE CASCADE;
现在,products
表有两个外键,一个是引用categories
表,另一个是引用vendors
表。
删除MySQL外键
您还可以使用ALTER TABLE
语句将外键删除,如下语句:
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
在上面的声明中:
- 首先,指定要从中删除外键的表名称。
- 其次,将约束名称放在
DROP FOREIGN KEY
子句之后。
请注意,
constraint_name
是在创建或添加外键到表时指定的约束的名称。 如果省略它,MySQL会为您生成约束名称。
要获取生成的表的约束名称,请使用SHOW CREATE TABLE
语句,如下所示:
SHOW CREATE TABLE table_name;
例如,要查看products
表的外键,请使用以下语句:
SHOW CREATE TABLE products;
以下是语句的输出:
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;
products
表有两个外键约束:products_ibfk_1
和products_ibfk_2
。
可以使用以下语句删除products
表的外键:
ALTER TABLE products DROP FOREIGN KEY products_ibfk_1; ALTER TABLE products DROP FOREIGN KEY products_ibfk_2;
MySQL禁用外键检查
有时,因为某种原因需要禁用外键检查(例如将CSV文件中的数据导入表中)非常有用。 如果不禁用外键检查,则必须以正确的顺序加载数据,即必须首先将数据加载到父表中,然后再将数据加载导入到子表中,这可能是乏味的。 但是,如果禁用外键检查,则可以按任何顺序加载导入数据。
除非禁用外键检查,否则不能删除由外键约束引用的表。删除表时,还会删除为表定义的任何约束。
要禁用外键检查,请使用以下语句:
SET foreign_key_checks = 0;
当然,可以使用以下语句启用它:
SET foreign_key_checks = 1;
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci apakah kunci asing dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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.

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 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.

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.

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 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.

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

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.
