Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menambah kekangan kunci asing dalam mysql

Bagaimana untuk menambah kekangan kunci asing dalam mysql

青灯夜游
青灯夜游asal
2021-12-27 18:52:0012542semak imbas

Pernyataan "ALTER TABLE" dan kata kunci "FOREIGN KEY" boleh digunakan untuk menambah kunci asing dalam mysql Sintaksnya ialah "ALTER TABLE table name ADD CONSTRAINT foreign key name FOREIGN KEY (nama lajur) RUJUKAN utama. nama jadual (nama lajur) ;".

Bagaimana untuk menambah kekangan kunci asing dalam mysql

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

Kekangan kunci asing MySQL (KUNCI ASING) ialah medan khas jadual, sering digunakan bersama dengan kekangan kunci utama. Untuk dua jadual dengan perhubungan yang berkaitan, jadual tempat kunci utama dalam medan yang berkaitan terletak ialah jadual utama (jadual induk), dan jadual tempat kunci asing terletak ialah jadual kedua (jadual anak).

Kunci asing digunakan untuk mewujudkan hubungan antara jadual induk dan jadual hamba, mewujudkan sambungan untuk data dalam dua jadual, dan mengekang ketekalan dan integriti data dalam dua jadual.

Apabila mentakrifkan kunci asing, peraturan berikut perlu dipatuhi:

  • Jadual utama mesti sudah wujud dalam pangkalan data, atau jadual yang 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.

mysql menambah kekangan kunci asing pada jadual

Kekangan kunci asing boleh ditambah apabila mengubah suai jadual, tetapi menambah kekangan kunci asing Premis kekangan utama ialah: data dalam lajur kunci asing dalam jadual sekunder mesti konsisten dengan data dalam lajur kunci utama dalam jadual utama atau tiada data.

Format sintaks untuk menambah kekangan kunci asing semasa mengubah suai jadual data adalah seperti berikut:

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

Contoh

Ubah suai jadual data tb_emp2 dan tukar Set deptId medan sebagai kunci asing, dikaitkan dengan id kunci utama jadual data tb_dept1

mysql> ALTER TABLE tb_emp2
    -> ADD CONSTRAINT fk_tb_dept1
    -> FOREIGN KEY(deptId)
    -> REFERENCES tb_dept1(id);
Query OK, 0 rows affected (1.38 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_emp2\G
*************************** 1. row ***************************
       Table: tb_emp2
Create Table: CREATE TABLE `tb_emp2` (
  `id` int(11) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `deptId` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_tb_dept1` (`deptId`),
  CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.12 sec)

Nota: Apabila menambah kekangan kunci asing pada jadual data yang dibuat, pastikan untuk tambah lajur kekangan kunci asing Nilai semua berasal dari lajur kunci utama, dan lajur kunci asing tidak boleh kosong.

[Cadangan berkaitan: tutorial video mysql]

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

Kenyataan:
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