Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis pernyataan pertanyaan dalam php mysql pelbagai jadual

Bagaimana untuk menulis pernyataan pertanyaan dalam php mysql pelbagai jadual

PHPz
PHPzasal
2023-05-23 09:00:38562semak imbas

Apabila menggunakan PHP dan MySQL untuk operasi data, menggunakan pernyataan pertanyaan berbilang jadual boleh membantu kami membuat pertanyaan dan mengendalikan data dengan lebih baik dalam setiap jadual data, dengan itu mengembangkan fungsi aplikasi dan senario aplikasi. Dalam artikel ini, kami akan memberikan penjelasan terperinci dan operasi praktikal pernyataan pertanyaan berbilang jadual php mysql.

1. Gambaran keseluruhan pertanyaan berbilang jadual

Dalam operasi MySQL, kami sering menggunakan berbilang jadual data. Pertanyaan berbilang jadual merujuk kepada penggunaan berbilang jadual data semasa menanyakan data Ini adalah salah satu kaedah sintaks SQL yang paling biasa digunakan, dan ia juga merupakan salah satu kaedah pertanyaan yang paling asas dan penting. Dalam pertanyaan berbilang jadual, cantuman diperlukan untuk menyambungkan berbilang jadual data untuk mencapai tujuan pertanyaan dan operasi data. Terdapat dua cara sambungan: sambungan dalaman dan sambungan luaran Kaedah sambungan yang berbeza digunakan mengikut situasi yang berbeza.

2. Kaedah sambungan pertanyaan berbilang jadual

1. Pertanyaan gabungan dalaman

Pertanyaan gabungan dalaman merujuk kepada pertanyaan dengan mengaitkan data yang sepadan dalam dua jadual.

PILIH table1.field1, table2.field2…
DARI jadual1 INNER JOIN table2
ON table1.field1=table2.field1;

INNER JOIN di sini menentukan kandungan yang akan melakukan pertanyaan Sertai. Kata kunci ON menentukan dua medan untuk disambungkan semasa melakukan pertanyaan penyertaan.

2. Pertanyaan sertai kiri

Pertanyaan sertai kiri merujuk kepada semua rekod dalam jadual kiri, dan hanya rekod yang sepadan disoal dalam jadual kanan.

PILIH table1.field1, table2.field2…
DARI jadual1 LEFT JOIN table2
ON table1.field1=table2.field1;

LEFT JOIN di sini mewakili pertanyaan join kiri . Semua rekod dalam jadual kiri akan disimpan dan rekod yang memenuhi syarat dalam jadual kanan akan disoal bersama. Jika tiada rekod yang sepadan dalam jadual yang betul, ia akan dipaparkan sebagai nol.

3. Pertanyaan join kanan

Pertanyaan join kanan merujuk kepada semua rekod dalam jadual kanan, dan hanya rekod yang sepadan disoal dalam jadual kiri.

PILIH table1.field1, table2.field2…
DARI jadual1 KANAN JOIN table2
PADA table1.field1=table2.field1;

RIGHT JOIN di sini mewakili pertanyaan cantuman kanan . Semua rekod dalam jadual kanan akan disimpan dan rekod yang memenuhi syarat dalam jadual kiri akan disoal bersama. Begitu juga, jika tiada rekod yang sepadan dalam jadual kiri, ia akan dipaparkan sebagai batal.

4. Pertanyaan sertai penuh

Pertanyaan gabungan penuh bermakna kedua-dua jadual kiri dan jadual kanan mesti disoal.

PILIH table1.field1, table2.field2…
DARI jadual1 FULL OUTER JOIN table2
ON table1.field1=table2.field1;

FULL OUTER JOIN di atas mewakili penuh sertai Query. Rekod dari kedua-dua jadual kiri dan jadual kanan akan disoal.

3. Contoh pertanyaan berbilang jadual

Sekarang mari kita lihat contoh praktikal. Katakan kita mempunyai dua jadual, satu adalah jadual pesanan, dan satu lagi adalah jadual pelanggan Kita boleh menanyakan nilai medan dengan nama yang sama dengan menggunakan gabungan dalam. Kedua-dua belah pertanyaan mengandungi nama pelanggan dan rekod pesanan untuk produk tersuai dikembalikan.

PILIH order.orderid, customers.customername
DARI pesanan
INNER JOIN pelanggan
ON orders.customerid=customers.customerid;

Di sini kami menggunakan spesifikasi INNER JOIN Untuk melakukan pertanyaan gabungan dalaman, kata kunci HIDUP menentukan medan untuk menyambung dua jadual.

Jadi, jika kita ingin menanyakan semua pesanan pelanggan tertentu, apakah yang perlu kita lakukan?

PILIH pesanan.orderid, pesanan.tarikh pesanan, pelanggan.nama pelanggan
DARI pesanan
KIRI SERTAI pelanggan
PADA pesanan.customerid=customer.customerid
WHERE customers.customername='John ';

Di sini kami menggunakan LEFT JOIN untuk menanyakan semua rekod pesanan dan hanya memaparkan rekod dengan nama pelanggan John. Semasa penyertaan, jadual pesanan dikekalkan, tetapi untuk jadual pelanggan, hanya rekod yang memenuhi syarat akan disoal.

4. Kemahiran pertanyaan berbilang jadual

1 Gunakan alias

Menggunakan alias boleh meningkatkan kelajuan pertanyaan, mengurangkan masa pertanyaan dan juga memudahkan ingatan dan pertanyaan kami.

PILIH o.orderid, c.customername
DARI pesanan SEBAGAI o
INNER JOIN pelanggan SEBAGAI c
ON o.customerid=c.customerid;

Di sini kami gunakan Kata kunci AS digunakan untuk menentukan alias untuk meningkatkan kecekapan pertanyaan dan kebolehbacaan.

2 Ikut amalan pertanyaan terbaik

Apabila melakukan pertanyaan berbilang jadual, kita perlu mengikuti beberapa amalan asas, seperti mengurangkan hasil pertanyaan dahulu, menanyakan data yang diperlukan sahaja dan mengelak daripada menggunakan pilihan. * Tunggu pertanyaan yang tidak perlu; elakkan menggunakan subkueri, dan cuba kurangkan penggunaan IO semasa pertanyaan berbilang jadual, dsb.

3. Optimumkan prestasi pertanyaan

Apabila melakukan pertanyaan khusus, kami boleh mengoptimumkan prestasi pertanyaan dengan mengoptimumkan pernyataan pertanyaan, memilih indeks yang paling sesuai, dsb.

Ringkasan

Dalam artikel ini kami memperkenalkan sintaks asas, kaedah operasi dan aplikasi praktikal pernyataan pertanyaan berbilang jadual php mysql. Apabila melakukan pertanyaan berbilang jadual, kami perlu menguasai kaedah gabungan yang berbeza dan mengikuti amalan pertanyaan terbaik untuk mengoptimumkan prestasi pertanyaan dan meningkatkan ketepatan dan kecekapan pertanyaan dan operasi data.

Atas ialah kandungan terperinci Bagaimana untuk menulis pernyataan pertanyaan dalam php mysql pelbagai jadual. 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