Bahagian 1 - Gabungan dan Kesatuan
Menyertai Dua atau Lebih Jadual Menggunakan Gabungan Dalam
select
a.ID,
b.model
from
cars a
join models b
on a.model=b.ID
Menggunakan Pertanyaan Kesatuan
select
a.ID,
b.model,
c.color
from
cars a
join models b
on a.model=b.ID
join colors c
on a.color=c.ID
where
b.ID=1
union all
select
a.ID,
b.model,
c.color
from
cars a
join models b
on a.model=b.ID
join colors c
on a.color=c.ID
where
b.ID=3
Kiri dan Kanan Luar Menyertai
select
a.brand
from
brands a
left outer join cars b
on a.ID=b.brand
Pertanyaan Intersect
select
*
from
colors
where
ID>2
intersect
select
*
from
colors
where
id<4
Bahagian 2 - Subkueri
Apakah itu, di mana ia boleh digunakan dan perkara yang perlu diberi perhatian
Subkueri ialah pernyataan pilihan yang bersarang dalam pernyataan pilih yang lain. Subqueries boleh digunakan untuk melaksanakan operasi mendapatkan data yang kompleks, seperti penapisan, pengisihan dan pengagregatan.
Tempat ia boleh digunakan
Subqueries boleh digunakan dalam perkara berikut tempat:
- Dalam klausa WHERE untuk menapis baris yang dikembalikan oleh bahagian luar pertanyaan.
- Dalam klausa HAVING untuk menapis kumpulan baris yang dikembalikan oleh pertanyaan luar.
- Dalam klausa SELECT untuk menentukan lajur yang dikembalikan oleh pertanyaan luar.
- Dalam klausa FROM untuk menentukan jadual yang dicantumkan oleh bahagian luar pertanyaan.
Perkara yang perlu diberi perhatian
Apabila menggunakan subkueri, adalah penting untuk mengetahui perkara berikut:
- Subqueries boleh mahal untuk dilaksanakan, jadi penting untuk menggunakannya hanya apabila perlu.
- Subqueries boleh menjadi sukar untuk dibaca dan difahami, jadi adalah penting untuk mendokumentasikannya dengan baik.
- Subkueri boleh terdedah kepada serangan suntikan SQL, jadi adalah penting untuk menggunakan pertanyaan berparameter apabila menggunakan subkueri dalam SQL dinamik.
Bahagian 3 - Trik dan Cekap Kod
Helah
- Gunakan alias untuk nama jadual supaya pertanyaan anda lebih mudah dibaca dan difahami.
- Gunakan kurungan untuk mengumpulkan subquery anda untuk menjadikannya lebih mudah dibaca dan difahami.
- Gunakan pernyataan EXPLAIN untuk melihat bagaimana pertanyaan anda dilaksanakan oleh pangkalan data.
- Gunakan indeks untuk meningkatkan prestasi pertanyaan anda.
Kod Cekap
- Gunakan yang betul jenis data untuk lajur anda.
- Elakkan menggunakan SELECT * dalam anda pertanyaan.
- Gunakan klausa WHERE untuk menapis baris yang dikembalikan oleh pertanyaan anda.
- Gunakan klausa ORDER BY untuk mengisih baris yang dikembalikan oleh pertanyaan anda.
- Gunakan klausa LIMIT untuk mengehadkan bilangan baris yang dikembalikan oleh anda pertanyaan.
Bahagian 4 - Subkueri dalam Klausa Daripada
Subkueri boleh digunakan dalam klausa FROM untuk menentukan jadual yang dicantumkan oleh pertanyaan luar. Ini dikenali sebagai jadual terbitan. Jadual terbitan boleh digunakan untuk melaksanakan operasi pengambilan data yang kompleks, seperti penapisan, pengisihan dan pengagregatan.
Contoh berikut menunjukkan cara menggunakan subkueri dalam klausa FROM untuk menapis baris yang dikembalikan oleh bahagian luar pertanyaan:
select
a.ID,
b.model
from
cars a
join models b
on a.model=b.ID
Bahagian 5 - Beg Campuran Helah John
Helah John
- Gunakan pernyataan KES untuk menilai ungkapan secara bersyarat.
- Gunakan fungsi COALESCE untuk mengembalikan nilai bukan NULL pertama dalam senarai ungkapan.
- Gunakan fungsi TERHEBAT untuk mengembalikan nilai terbesar dalam senarai ungkapan.
- Gunakan fungsi LEAST untuk mengembalikan nilai terkecil dalam senarai ungkapan.
- Gunakan fungsi MOD untuk mengira baki operasi bahagi.
- Gunakan fungsi NOW untuk mendapatkan tarikh semasa dan masa.
- Gunakan fungsi RAND untuk menjana nombor rawak.
- Gunakan fungsi ROUND untuk membundarkan nombor kepada integer terdekat.
- Gunakan fungsi TRUNCATE untuk memotong a nombor kepada bilangan tempat perpuluhan yang ditentukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan SQL Menggunakan Gabungan, Kesatuan, Subkueri dan Fungsi Lanjutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!