Rumah > Artikel > pangkalan data > mysql pertanyaan kunci asing
Dalam pangkalan data MySQL, kunci asing bermakna satu atau lebih lajur dalam satu jadual boleh merujuk kepada lajur dalam jadual lain, membentuk hubungan antara jadual induk dan jadual hamba. Kunci asing adalah salah satu cara penting untuk memastikan integriti dan konsistensi data. Walau bagaimanapun, dalam pembangunan sebenar, kita selalunya perlu menanyakan data yang dikaitkan dengan kunci asing, dan operasi pertanyaan yang melibatkan kunci asing memerlukan perhatian kepada beberapa isu.
Artikel ini akan memperkenalkan secara terperinci pengetahuan berkaitan kekunci asing pertanyaan MySQL.
1. Pengenalan kepada kunci asing
Kunci asing, juga dikenali sebagai kunci luaran dan kunci berkaitan, ialah kekangan yang digunakan dalam pangkalan data MySQL untuk mengekalkan integriti dan konsistensi data. Ia mengaitkan lajur satu jadual dengan lajur jadual lain.
Apabila jadual mempunyai hubungan kunci asing dengan jadual lain, ia membentuk hubungan antara jadual induk dan jadual hamba. Lajur jadual induk dipanggil kunci utama, dan lajur jadual hamba dipanggil kunci asing.
Kekangan kunci asing boleh dibahagikan kepada dua kategori:
1 Kemas kini Cascade (KEMASKINI CASCADE): Apabila kunci utama jadual induk dikemas kini, kunci asing jadual hamba akan. dikemas kini dengan sewajarnya.
2. Padam lata (CASCADE DELETE): Apabila kunci utama jadual utama dipadamkan, kunci asing jadual hamba juga akan dipadamkan dengan sewajarnya.
2. Pertanyaan kunci asing
1 Pertanyaan kunci asing tunggal
Apabila kita perlu menanyakan data yang dikaitkan dengan kunci asing dalam lajur jadual, kita boleh menggunakan INNER JOIN melaksanakan pertanyaan berkaitan. Operasi khusus adalah seperti berikut:
SELECT 表1.列1, 表2.列2 FROM 表1 INNER JOIN 表2 ON 表1.外键列 = 表2.主键列
Antaranya, jadual 1 dan jadual 2 adalah jadual yang perlu dikaitkan, lajur 1 adalah lajur untuk disoal dalam jadual 1, lajur 2 adalah lajur yang perlu ditanya dalam jadual 2, dan lajur kunci asing ialah lajur dalam jadual 1 yang dikaitkan dengan jadual 2, dan lajur kunci utama ialah lajur kunci utama dalam jadual 2.
Contoh:
Kami mempunyai dua meja, satu meja pelajar dan satu lagi meja gred. Jadual pelajar mempunyai medan nombor pelajar dan jadual gred mempunyai medan kunci asing yang berkaitan dengan medan nombor pelajar dalam jadual pelajar. Kami perlu menanyakan nama, mata pelajaran dan gred pelajar dalam jadual gred Operasi khusus adalah seperti berikut:
SELECT s.name, c.subject, c.score FROM student s INNER JOIN score c ON s.sid = c.sid
2. Tanya berbilang kunci asing
Apabila kita perlu bertanya berbilang asing perkaitan utama jadual Semasa mengumpul data, kami boleh menggunakan berbilang INNER JOIN untuk melaksanakan pertanyaan berkaitan. Operasi khusus adalah seperti berikut:
SELECT 表1.列1, 表2.列2, 表3.列3, … FROM 表1 INNER JOIN 表2 ON 表1.外键列1 = 表2.主键列1 INNER JOIN 表3 ON 表2.外键列2 = 表3.主键列2 …
Antaranya, Jadual 1, Jadual 2, dan Jadual 3 adalah jadual yang perlu dikaitkan, Lajur 1 ialah lajur untuk disoal dalam Jadual 1, dan Lajur 2 ialah lajur untuk disoal dalam Jadual 2. Lajur 3 ialah lajur untuk disoal dalam jadual 3, lajur kunci asing 1 ialah lajur dalam jadual 1 yang dikaitkan dengan jadual 2, lajur kunci asing 2 ialah lajur dalam jadual 2 yang dikaitkan dengan jadual 3, dan lajur kunci utama 1 ialah lajur dalam jadual 2 Lajur kunci utama , lajur kunci utama 2 ialah lajur kunci utama dalam jadual 3.
Contoh:
Kami mempunyai tiga meja, satu meja pelajar, satu jadual mata pelajaran, dan satu jadual gred. Jadual pelajar dan jadual mata pelajaran masing-masing mempunyai medan id Terdapat dua medan kunci asing, id pelajar dan id subjek, dalam jadual gred yang berkaitan dengan medan id dalam jadual pelajar dan jadual mata pelajaran. Sekarang kita perlu menanyakan nama, mata pelajaran dan gred pelajar dalam jadual gred Operasi khusus adalah seperti berikut:
SELECT s.name, se.subject, c.score FROM student s INNER JOIN score c ON s.sid = c.sid INNER JOIN subject se ON c.subject_id = se.id
3. Langkah berjaga-jaga untuk menanyakan kunci asing
Apabila menggunakan kunci asing untuk. pertanyaan, anda perlu memberi perhatian kepada Beberapa aspek berikut:
1 Pastikan jadual yang berkaitan sudah wujud.
Sebelum mewujudkan hubungan kunci asing, anda perlu memastikan kedua-dua jadual sudah wujud. Jika tidak, ralat akan berlaku semasa mencipta hubungan kunci asing.
2. Pastikan jenis data dan panjang lajur kunci asing dan lajur kunci utama adalah konsisten.
Apabila mewujudkan perkaitan kunci asing, anda perlu memastikan bahawa jenis data dan panjang lajur kunci asing yang berkaitan dan lajur kunci utama adalah konsisten, jika tidak, ralat akan berlaku. Pada masa yang sama, anda juga perlu memberi perhatian semasa membuat pertanyaan, jika tidak mungkin terdapat masalah dengan hasil pertanyaan.
3. Elakkan nilai NULL dalam lajur kunci asing.
Apabila melakukan pertanyaan kunci asing, elakkan nilai NULL dalam lajur kunci asing. Kehadiran nilai NULL akan menyebabkan hasil pertanyaan yang tidak konsisten.
4. Elakkan gabungan data yang besar.
Apabila melakukan pertanyaan berbilang jadual, berhati-hati untuk mengelakkan gabungan data dalam jumlah besar, jika tidak prestasi pertanyaan akan terjejas dengan teruk.
5. Beri perhatian kepada operasi lata perhubungan utama asing.
Apabila membuat pertanyaan menggunakan perhubungan kunci asing, anda perlu memberi perhatian kepada operasi melata bagi kekangan kunci asing untuk mengelakkan operasi pemadaman atau kemas kini daripada menyebabkan kesan buruk pada jadual yang berkaitan.
4. Ringkasan
Melalui pengenalan artikel ini, saya percaya bahawa semua orang telah memahami konsep asas dan kaedah operasi pertanyaan kunci asing MySQL, serta isu yang perlu dibayar perhatian apabila melakukan pertanyaan kunci asing. Dalam pembangunan sebenar, adalah perlu untuk menggunakan perhubungan utama asing secara munasabah untuk pertanyaan data berdasarkan keperluan perniagaan tertentu dan reka bentuk struktur jadual pangkalan data, yang bukan sahaja dapat meningkatkan kecekapan pertanyaan, tetapi juga memastikan integriti dan konsistensi data.
Atas ialah kandungan terperinci mysql pertanyaan kunci asing. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!