MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang popular yang menyokong banyak fungsi dan ciri seperti subkueri dan ungkapan jadual biasa. Antaranya, Common Table Expressions (CTE) ialah ciri yang agak baharu yang membenarkan penciptaan set hasil nama yang tidak berterusan dalam pertanyaan, serupa dengan penggunaan pernyataan WITH AS dalam pangkalan data hubungan lain. Artikel ini akan meneroka cara MySQL melaksanakan Dengan AS.
Pernyataan With AS ialah kaedah mencipta ungkapan jadual biasa yang sangat biasa dalam sistem pengurusan pangkalan data hubungan lain. Biasanya, pernyataan WITH AS terdiri daripada satu set klausa dipisahkan koma yang menyenaraikan nama lajur dan nilai lajur (serupa dengan pernyataan SELECT) dan pertanyaan utama. Dalam pertanyaan utama, set hasil ungkapan jadual umum boleh dirujuk sebagai jadual untuk pertanyaan.
Sebagai contoh, berikut ialah contoh menggunakan pernyataan WITH AS:
WITH salary AS ( SELECT employee_id, salary FROM employees ) SELECT employee_id FROM salary WHERE salary > 50000;
Dalam contoh ini, kita mula-mula mentakrifkan generik bernama WITH
menggunakan salary
klausa A ungkapan jadual mengandungi lajur employees
dan employee_id
daripada jadual salary
. Kami kemudian merujuk jadual salary
dalam pertanyaan utama dan mengembalikan semua ID pekerja dengan gaji lebih tinggi daripada 50000.
Pelaksanaan MySQL adalah berbeza daripada sistem pengurusan pangkalan data hubungan yang lain. Ia tidak menyokong pernyataan WITH AS. Walau bagaimanapun, MySQL menyediakan ciri serupa yang dipanggil subquery, yang boleh mencapai hasil yang serupa dengan WITH AS.
Sebagai contoh, kita boleh menggunakan pertanyaan berikut untuk mensimulasikan contoh di atas:
SELECT employee_id FROM ( SELECT employee_id, salary FROM employees ) AS salary WHERE salary > 50000;
Dalam pertanyaan ini, kami menggunakan subkueri menggantikan pernyataan WITH AS. Subkueri adalah serupa dengan ungkapan jadual umum kerana ia mentakrifkan set hasil di dalamnya yang boleh dirujuk dalam pertanyaan utama. Tidak seperti sistem pengurusan pangkalan data hubungan lain seperti PostgreSQL, MySQL tidak memerlukan klausa WITH sebelum nama subquery.
Perlu diperhatikan bahawa apabila menggunakan subkueri dalam MySQL, kita perlu merawat subkueri itu sebagai jadual dan menamakannya menggunakan klausa AS. Dalam pertanyaan utama, kami menggunakan nama jadual ini untuk merujuk kepada set hasil subkueri. Dalam contoh ini, kami menamakan subkueri salary
dan menggunakan salary
sebagai nama jadual untuk memilih semua ID pekerja dengan gaji lebih tinggi daripada 50,000.
Walaupun MySQL tidak menyokong pernyataan With AS, kami boleh menggunakan subqueries untuk mencapai kesan yang serupa. Menggunakan pendekatan subkueri sedikit berbeza daripada ungkapan jadual generik, tetapi hasil yang sama boleh dicapai dengan mudah.
Akhir sekali, perlu diingatkan bahawa keadaan dan kerumitan yang berbeza mungkin memerlukan kaedah pertanyaan yang berbeza. Dalam situasi sebenar, kita perlu memilih kaedah yang sesuai mengikut keperluan khusus pertanyaan untuk memastikan prestasi dan kesan pertanyaan.
Atas ialah kandungan terperinci Terokai cara MySQL melaksanakan Dengan AS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!