Rumah >pangkalan data >tutorial mysql >Mengapa Adakah 'PILIH * KE new_table DARI old_table;' Gagal dalam Oracle dan Bagaimana Saya Boleh Mencipta Jadual Baharu dengan Betul?
ELECT IN Unexpected Mischief in Oracle
Dalam bidang SQL, pernyataan SELECT INTO memegang kedudukan yang menonjol, membolehkan pengekstrakan data yang mudah dan sisipan ke destinasi baharu. Walau bagaimanapun, dalam konteks dialek unik Oracle, operasi ini mendedahkan kelainan yang mengejutkan.
Bertentangan dengan jangkaan konvensional, pertanyaan "SELECT * INTO new_table FROM old_table;" mencetuskan ralat yang tidak dijangka: "Ralat SQL: ORA-00905: kata kunci hilang." Anomali ini berpunca daripada tafsiran Oracle yang berbeza tentang klausa INTO.
Menyingkap Pelaksanaan Oracle
Oracle menyimpang daripada gelagat SELECT INTO standard, memilih pendekatan alternatif. Jika jadual sasaran sudah wujud, Oracle melaksanakan operasi INSERT INTO tersirat, mematuhi sintaks berikut:
insert into new_table select * from old_table /
Sebagai alternatif, untuk mencipta jadual serba baharu berdasarkan rekod sedia ada, Oracle menggunakan sintaks berikut:
create table new_table as select * from old_table /
Menariknya, Oracle turut menawarkan penyelesaian untuk mencipta jadual:
create table new_table as select * from old_table where 1 = 2 /
Dengan menambahkan klausa WHERE dengan keadaan yang sememangnya palsu, Oracle dengan bijak membina jadual kosong tanpa menyalin data daripada sumber.
Pendekatan tersendiri Oracle untuk SELECT INTO membentangkan pelepasan daripada norma yang ditetapkan, menarik pembangun untuk menyesuaikan diri dengan sintaks dan semantiknya yang unik. Walau bagaimanapun, di sebalik kejutan awal, sisihan ini menawarkan fleksibiliti dan kawalan ke atas manipulasi data dalam ekosistem pangkalan data Oracle yang luas.
Atas ialah kandungan terperinci Mengapa Adakah 'PILIH * KE new_table DARI old_table;' Gagal dalam Oracle dan Bagaimana Saya Boleh Mencipta Jadual Baharu dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!