Rumah pangkalan data tutorial mysql Apakah kunci asing mysql

Apakah kunci asing mysql

Apr 11, 2023 am 10:45 AM
mysql kunci asing

Kunci asing Mysql ialah fungsi pemprosesan data yang sangat berguna yang boleh mengemas kini data antara jadual secara ringkas, ia boleh mewujudkan perkaitan antara dua jadual dan melaksanakan operasi Apabila satu jadual dikemas kini, data dalam jadual lain; juga akan berubah serentak.

Apakah kunci asing mysql

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

Apakah kunci asing mysql?

Penggunaan kunci asing Mysql

Kunci asing adalah perkara yang sangat, sangat mudah digunakan, dan ia juga merupakan fungsi yang dimiliki oleh banyak pangkalan data hubungan, ia boleh mewujudkan perkaitan antara dua jadual, yang boleh dilakukan apabila mengendalikan satu jadual. data dalam jadual lain juga akan berubah serentak.

Contoh:
一个学生表里面有学生的所有信息,其中有一个字段是班级id,又有一个班级表,记录着所有的班级信息,按照逻辑来说,如果我们删除了班级
表里面的某个班级,学生表里面是这个班级id的信息就应该修改。

Contoh di atas boleh dilengkapkan seperti biasa jika kita menggunakan program Padam kelas dahulu, dan kemudian tambahkannya pada jadual pelajar Di sini, medan id kelas, iaitu maklumat pelajar kelas ini, diubah suai dan dibahagikan kepada dua bahagian. Tetapi jika kita menggunakan kunci asing, ia hanya mengambil satu langkah Selagi salah satu kunci asing dikaitkan, yang satu lagi akan dikemas kini secara automatik. Jelas sekali, ini lebih sesuai dengan program. Ia juga lebih mudah

Butiran sebelum digunakan
  1. Apabila memilih enjin storan untuk pangkalan data, anda mesti memilih enjin storan yang menyesuaikan diri dengan kunci asing, seperti sebagai storan lalai mysql Engine innodb
  2. Jenis medan medan kunci asing yang berkaitan mestilah konsisten Contohnya, class_id jadual pelajar adalah jenis int, maka jenis class_id jadual kelas hendaklah. juga jenis int. Ini sangat penting
Buat kekangan kunci asing dalam jadual baharu
	create table stu_study (
	  sid int primary key auto_increment,-- 定义Sid  
      sname varchar(15) not null,
      course_id int default null,  -- 定义课程id 课程id是外键所以要与关联的主表的字段类型保持一致
      constraint stu_study_class -- 一个表里可能有多个表之间关联,所以外键需要起一个名字
      foreign key (class_id) -- 关联的外键名
      references classes(id)  -- 关联的主表和主表的字段
      on delete cascade  -- 当删除的时候触发
    )engine=InnoDB default charset utf8  -- 默认存储引擎和编码的字符串

Apakah kunci asing mysql

dalam jadual sedia ada Tambah dan padam kekunci asing dalam jadual
  1. Padam kunci asing
    ···
    – Padam kunci asing (kekangan kunci asing)
    alter table stu_study drop foreign key stu_study_classes ;
    ···
    Apakah kunci asing mysql
    Memadamkan kunci asing dilakukan dengan memadamkannya mengikut nama kunci asing dalam jadual Ini juga secara tidak langsung memberitahu kami perkara itu nama kunci asing tidak boleh diulang.
  2. Tambah kekunci asing
	-- 添加外键
  alter table stu_study add
  constraint stu_study_classes  -- 外键名 是一定不能够重复的,通常会用关联的两个表名进行命名
  foreign key(course_id)
  references classes(id)
  on delete cascade;

Apakah kunci asing mysql
Menambah kunci asing pada jadual sedia ada adalah sangat serupa dengan menambah kunci asing semasa membuat jadual bahawa dia perlu menggunakan nama kunci asing kekangan untuk menetapkan nama kunci asing
Kami akan mendapati bahawa menambah dan mengubah suai kunci asing sangat serupa dengan menambah dan mengubah suai medan jadual Kata kunci yang digunakan ialah tambah, lepas, dsb.

Operasi tindakan yang berkaitan

Sub jadual
Apakah kunci asing mysql
Jadual utama
Apakah kunci asing mysql
Kita boleh secara ringkas Difahamkan bahawa jadual dengan set kunci asing ialah sub-jadual
Terdapat banyak jenis tindakan yang berkaitan, seperti cascade, set Null dan no action ketiga-tiga ini adalah tindakan yang berkaitan apabila menetapkan kunci asing , seperti
Apakah kunci asing mysql
mewakili tindakan yang dilakukan semasa memadamkan Perbezaan utama adalah seperti berikut:

  1. cascade 删除主表的某个字段的时候,子表含有这个字段的数据会被清空,这个还是属于相对危险的一个操作的
  2. +set null 删除主表的某个字段的时候,子表含有这个字段的这个哪一行的这个字段会用null来显示,但是有个细节就是设置外键的这个字段字段类型就不能设置为not null类型的,否则会报错
  3. no action 这个字段会比较有意思,也就是说当主表要删除某个行的时候,如果外键关联有含有这个主表的外键的字段数据的话,就不会删除成功,系统会直接报错
关联更新操作

之前是主要讲了关联删除,是因为外键在使用的时候关联删除操作是使用的比较频繁的,关联更新的频率是相对来说低一点儿的
关联更新的三个关联操作和删除时一样的,分别是cascade,set null,no action意思是也是一样的,主表某个字段更新了,子表也会更新那个字段!!,主表更新的某条数据,子表的使用的那个数据会变成空,和子表在使用的情况下,主表就不能够更新数据

	alter table stu_study drop foreign key stu_study_classes;  -- 删除外键
	-- 添加外键
	alter table stu_study add 
    constraint stu_study_classes 
    foreign key (course_id) 
    references classes(id) 
    on delete set null -- 一次性设置外键的两种动作
    on update cascade

Apakah kunci asing mysql
Apakah kunci asing mysql

总结
  • 数据库的外键是非常非常好用的一个技术,可以让我们快速的进行表之间的数据的更新
  • 外键可以简单的理解成会自动的替我们做一个数据变动的处理

推荐学习:《MySQL视频教程

Atas ialah kandungan terperinci Apakah kunci asing 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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Topik panas

Tutorial PHP
1596
276
Cara Menunjukkan Semua Pangkalan Data di MySQL Cara Menunjukkan Semua Pangkalan Data di MySQL Aug 08, 2025 am 09:50 AM

Untuk memaparkan semua pangkalan data dalam MySQL, anda perlu menggunakan perintah ShowDatabases; 1. Selepas log masuk ke pelayan MySQL, anda boleh melaksanakan showdatabases; perintah untuk menyenaraikan semua pangkalan data bahawa pengguna semasa mempunyai kebenaran untuk mengakses; 2. Pangkalan data sistem seperti Maklumat_Schema, MySQL, Performance_Schema dan SYS wujud secara lalai, tetapi pengguna yang mempunyai kebenaran yang tidak mencukupi mungkin tidak dapat melihatnya; 3. Anda juga boleh menanyakan dan menapis pangkalan data melalui selectschema_namefrominformation_schema.schemata; Sebagai contoh, tidak termasuk pangkalan data sistem untuk hanya memaparkan pangkalan data yang dibuat oleh pengguna; Pastikan untuk menggunakan

Bagaimana untuk menambah kunci utama ke jadual yang sedia ada di MySQL? Bagaimana untuk menambah kunci utama ke jadual yang sedia ada di MySQL? Aug 12, 2025 am 04:11 AM

Untuk menambah kunci utama ke jadual yang sedia ada, gunakan pernyataan altertable dengan klausa AddPrimaryKey. 1. Pastikan lajur sasaran tidak mempunyai nilai null, tiada duplikasi dan ditakrifkan sebagai notnull; 2. Sintaks utama utama tunggal-lajur adalah nama meja altertable AddPrimaryKey (nama lajur); 3. Sintaks utama utama kombinasi Kombinasi Multi-lajur adalah nama jadual Altertable AddPrimaryKey (lajur 1, lajur 2); 4 Jika lajur membenarkan batal, anda mesti terlebih dahulu melaksanakan Modify to menetapkan notnull; 5. Setiap jadual hanya boleh mempunyai satu kunci utama, dan kunci utama lama mesti dipadamkan sebelum menambah; 6. Jika anda perlu meningkatkannya sendiri, anda boleh menggunakan Modify untuk menetapkan auto_increment. Pastikan data sebelum beroperasi

Bagaimana cara menyelesaikan kesilapan sambungan mysql biasa? Bagaimana cara menyelesaikan kesilapan sambungan mysql biasa? Aug 08, 2025 am 06:44 AM

Semak sama ada perkhidmatan MySQL sedang berjalan, gunakan sudosystemctlstatusmysql untuk mengesahkan dan memulakan; 2. Pastikan alamat pengikat ditetapkan kepada 0.0.0.0 untuk membolehkan sambungan jauh dan mulakan semula perkhidmatan; 3. Sahkan sama ada pelabuhan 3306 dibuka, periksa dan konfigurasikan peraturan firewall untuk membenarkan pelabuhan; 4. Untuk ralat "Accessdenied", anda perlu menyemak nama pengguna, kata laluan dan nama hos, dan kemudian log masuk ke MySQL dan menanyakan jadual MySQL.user untuk mengesahkan kebenaran. Jika perlu, buat atau kemas kini pengguna dan membenarkannya, seperti menggunakan 'your_user'@'%'; 5. Sekiranya pengesahan hilang kerana caching_sha2_password

Cara Menyandarkan Pangkalan Data di MySQL Cara Menyandarkan Pangkalan Data di MySQL Aug 11, 2025 am 10:40 AM

Menggunakan mysqldump adalah cara yang paling biasa dan berkesan untuk menyokong pangkalan data MySQL. Ia boleh menjana skrip SQL yang mengandungi struktur meja dan data. 1. Sintaks asas ialah: mysqldump-u [nama pengguna] -p [nama pangkalan data]> backup_file.sql. Selepas pelaksanaan, masukkan kata laluan untuk menghasilkan fail sandaran. 2. Menyokong pelbagai pangkalan data dengan-pilihan-Databases: mysqldump-usoot-p-databasesdb1db2> multiple_dbs_backup.sql. 3. Menyandarkan semua pangkalan data dengan-semua-data: mysqldump-usoot-p

Terangkan strategi pengindeksan pangkalan data (mis., B-Tree, teks penuh) untuk aplikasi PHP yang disokong MySQL. Terangkan strategi pengindeksan pangkalan data (mis., B-Tree, teks penuh) untuk aplikasi PHP yang disokong MySQL. Aug 13, 2025 pm 02:57 PM

B-treeindexesareBestFormostPhpapplications, astheysupportequalityandrangequeries, sorting, andareidealforcolumnsusedinwhere, gabungan, ororderbyclauses;

Apakah perbezaan antara Kesatuan dan Kesatuan semua di MySQL? Apakah perbezaan antara Kesatuan dan Kesatuan semua di MySQL? Aug 14, 2025 pm 05:25 PM

Unionremovesduplicateswhileunionallkeepsallrowsincludingduplicates; 1.UnionperformSdeduplicationBySortingAndComparingRows, ReturnlyNyUniquerSults, whitmakeslowerOnlargedatasets;

Cara menukar pemisah kumpulan_concat di mysql Cara menukar pemisah kumpulan_concat di mysql Aug 22, 2025 am 10:58 AM

Anda boleh menyesuaikan pemisah dengan menggunakan kata kunci pemisah dalam fungsi Group_Concat (); 1. Gunakan pemisah untuk menentukan pemisah tersuai, seperti pemisah '; 'Pemisah boleh diubah menjadi titik titik koma dan ditambah; 2. Contoh umum termasuk menggunakan watak paip '|', ruang '', watak pemecah garis '\ n' atau rentetan adat '->' sebagai pemisah; 3. Perhatikan bahawa pemisah mestilah rentetan literal atau ekspresi, dan panjang hasilnya terhad oleh pembolehubah kumpulan_concat_max_len, yang boleh diselaraskan oleh setSessionGroup_concat_max_len = 10000; 4. Pemisah adalah pilihan

Bagaimana cara menggunakan pengendali di MySQL? Bagaimana cara menggunakan pengendali di MySQL? Aug 12, 2025 pm 03:46 PM

TheinoperatorinmysqlChecksifavalueMatchesanyInaspiedList, SimplyingMultipleOrconditions; ITWorksWithLiterals, Strings, Date, andSubqueries, InfroveSqueryreadability, properswellonIndexedColumns, supportsNotin (WithCombeRoRls)

See all articles