Rumah > pangkalan data > tutorial mysql > Adakah terdapat apa-apa dengan sebagai mysql?

Adakah terdapat apa-apa dengan sebagai mysql?

WBOY
Lepaskan: 2023-05-08 18:57:08
asal
1474 orang telah melayarinya

Ya, WITH AS ialah pernyataan pertanyaan yang biasa digunakan dalam MySQL, digunakan untuk mencipta jadual sementara dan menggunakannya dalam pertanyaan seterusnya. Di bawah ini kami memperkenalkan penggunaan dan aplikasi praktikal WITH AS secara terperinci.

  1. WITH as sintaks

WITH as sintaks terutamanya dibahagikan kepada dua bahagian berikut:

1) WITH: kata kunci, digunakan untuk memperkenalkan atau Berbilang jadual sementara.

2) AS: kata kunci, digunakan untuk mentakrifkan satu atau lebih jadual sementara. Sintaks umum

WITH as pernyataan adalah seperti berikut:

WITH [RECURSIVE] cte_name (column_name1,column_name2,...) AS
(
subquery1
UNION [SEMUA]
subquery2
UNION [SEMUA]
subquery3
...
)
PILIH *
DARI cte_name;

di mana,

nama_cte: nama jadual sementara;

nama_lajur1, nama_lajur2,...: nama lajur dalam jadual sementara; .

Aplikasi praktikal WITH sebagai
  1. Senario aplikasi praktikal WITH sebagai kenyataan terutamanya merangkumi aspek berikut:

1) Pertanyaan rekursif

WITH as statement boleh melakukan pertanyaan rekursif untuk mendapatkan set hasil dengan struktur hierarki. Berikut mengambil jadual pekerja sebagai contoh untuk menggambarkan:

DENGAN RECURSIVE emp AS (

PILIH emp_id, emp_name, emp_manager_id

DARIPADA pekerja
DI MANA emp_manager_id ADALAH NULL
UNIT 🎜 > PILIH e2.emp_id, e2.emp_name, e2.emp_manager_id
DARIPADA pekerja e2
DALAM SERTAI emp DI e2.emp_manager_id = emp.emp_id
)
PILIH * DARI emp;Dalam pernyataan di atas, bahagian asas pertanyaan rekursif ialah mencari nod akar dalam jadual (iaitu, pekerja tanpa pengurus Dalam setiap lelaran rekursif, subkueri jadual mencari subordinat setiap nod sekali gus). dan menambahnya kepada hasilnya.

2) Susun set keputusan

DENGAN kerana kenyataan boleh menyusun berbilang hasil pertanyaan bersama-sama dan melaksanakan pertanyaan bersama berbilang jadual. Berikut mengambil jadual jualan dan inventori produk sebagai contoh untuk menggambarkan:

DENGAN jualan SEBAGAI (

PILIH p.product_id, p.product_name, s.sale_id, s.sale_date, s.quantity, s . harga

DARI produk p

INNER JOIN sales s ON p.product_id = s.product_id

), inventori AS (

PILIH p.product_id, p.product_name, i.inventory_id, i.quantity
DARI produk p
INNER JOIN inventori i ON p.product_id = i.product_id
)
SELECT s.sale_id, s.sale_date, s.product_id, s.product_name, s.quantity, s . harga, i.inventori_id, i.kuantiti sebagai inventori_kuantiti
DARI jualan s
INNER JOIN inventori i ON s.product_id = i.product_id;

Dalam pernyataan di atas, kami mula-mula mentakrifkan jualan dan Inventori dua jadual sementara, dan kemudian lakukan pertanyaan bersama pada kedua-dua jadual ini untuk mengeluarkan set hasil. Set hasil ini mengandungi maklumat jualan daripada jadual jualan dan maklumat inventori daripada jadual inventori.

3) Pengoptimuman subquery

WITH as statement juga boleh digunakan untuk mengoptimumkan subqueries. Biasanya, kecekapan pelaksanaan pernyataan subkueri adalah sangat rendah, dan mudah menyebabkan kekeliruan dan ralat kod. Pernyataan WITH sebagai boleh meningkatkan kebolehbacaan dan kebolehselenggaraan pertanyaan. Berikut mengambil jadual butiran pesanan dan pesanan sebagai contoh:

BERSAMA pesanan (

PILIH order_id

DARI pesanan

DI MANA tarikh_pesanan > '2022-01-01'

)

PILIH *
FROM order_details
WHERE order_id IN (SELECT order_id FROM ord);

Dalam pernyataan di atas, kami mula-mula mentakrifkan jadual sementara atau untuk menyimpan maklumat pesanan keperluan. Kemudian dalam pertanyaan berikutnya, gunakan terus pernyataan WHERE order_id IN (SELECT order_id FROM ord) untuk menanyakan butiran pesanan. Ini bukan sahaja meningkatkan kecekapan pertanyaan, tetapi juga meningkatkan kebolehbacaan dan kebolehselenggaraan kod.

Ringkasan:

Artikel ini memperkenalkan senario penggunaan dan aplikasi praktikal WITH sebagai pernyataan dalam MySQL. Dalam pembangunan sebenar, kami boleh menggunakan WITH sebagai pernyataan secara fleksibel mengikut keperluan khusus untuk meningkatkan kecekapan pertanyaan dan kebolehbacaan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Adakah terdapat apa-apa dengan sebagai mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan