cari
Rumahpangkalan datatutorial mysqlmysql 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!

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
Kurangkan penggunaan memori MySQL di DockerKurangkan penggunaan memori MySQL di DockerMar 04, 2025 pm 03:52 PM

Artikel ini meneroka mengoptimumkan penggunaan memori MySQL di Docker. Ia membincangkan teknik pemantauan (statistik Docker, skema prestasi, alat luaran) dan strategi konfigurasi. Ini termasuk had memori docker, swapping, dan cgroups, bersama -sama

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersamaCara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersamaMar 04, 2025 pm 04:01 PM

Artikel ini menangani ralat "tidak dapat membuka perpustakaan kongsi" MySQL. Isu ini berpunca daripada ketidakupayaan MySQL untuk mencari perpustakaan bersama yang diperlukan (.so/.dll fail). Penyelesaian melibatkan mengesahkan pemasangan perpustakaan melalui pakej sistem m

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?Mar 19, 2025 pm 03:51 PM

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)Mar 04, 2025 pm 03:54 PM

Artikel ini membandingkan memasang MySQL pada Linux secara langsung berbanding menggunakan bekas podman, dengan/tanpa phpmyadmin. Ia memperincikan langkah pemasangan untuk setiap kaedah, menekankan kelebihan Podman secara berasingan, mudah alih, dan kebolehulangan, tetapi juga

Apa itu SQLite? Gambaran Keseluruhan KomprehensifApa itu SQLite? Gambaran Keseluruhan KomprehensifMar 04, 2025 pm 03:55 PM

Artikel ini memberikan gambaran menyeluruh tentang SQLite, pangkalan data relasi tanpa server tanpa mandiri. Ia memperincikan kelebihan SQLITE (kesederhanaan, mudah alih, kemudahan penggunaan) dan kekurangan (batasan konkurensi, cabaran skalabiliti). C

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi LangkahMenjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi LangkahMar 04, 2025 pm 03:49 PM

Panduan ini menunjukkan pemasangan dan menguruskan pelbagai versi MySQL pada macOS menggunakan homebrew. Ia menekankan menggunakan homebrew untuk mengasingkan pemasangan, mencegah konflik. Pemasangan Butiran Artikel, Permulaan/Perhentian Perkhidmatan, dan PRA Terbaik

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?Mar 18, 2025 pm 12:01 PM

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?Mar 21, 2025 pm 06:28 PM

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

See all articles

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

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),