Rumah > Soal Jawab > teks badan
P粉5417963222023-08-22 09:55:13
Dalam MySQL, beberapa perkataan seperti SELECT
,INSERT
,DELETE
adalah perkataan terpelihara. Oleh kerana ia mempunyai makna yang istimewa, MySQL menganggapnya sebagai ralat sintaks apabila anda menggunakannya sebagai nama jadual, nama lajur atau jenis pengecam lain - melainkan anda menyertakan pengecam dalam tanda belakang.
Seperti yang dinyatakan dalam dokumentasi rasmi, dalam bahagian 10.2 Nama Objek Skema (penekanan ditambah):
Senarai lengkap kata kunci dan perkataan terpelihara boleh didapati di Bahagian 10.3 Kata Kunci dan Perkataan Terpelihara . Dalam halaman ini, perkataan dengan "(R)" ialah perkataan terpelihara. Beberapa perkataan terpelihara disenaraikan di bawah, termasuk banyak yang boleh menyebabkan masalah ini.
Anda ada dua pilihan.
Penyelesaian paling mudah adalah dengan mengelak daripada menggunakan perkataan yang dikhaskan sebagai pengecam. Anda mungkin boleh mencari nama lajur lain yang munasabah yang bukan perkataan simpanan.
Terdapat beberapa kelebihan untuk melakukan ini:
Ia menghapuskan kemungkinan anda atau pembangun lain bekerja dengan pangkalan data anda secara tidak sengaja menulis ralat sintaks kerana mereka terlupa atau tidak tahu bahawa pengecam tertentu ialah perkataan yang dikhaskan. Terdapat banyak perkataan terpelihara dalam MySQL, dan tidak mungkin kebanyakan pembangun mengetahui kesemuanya. Dengan tidak menggunakan perkataan ini pada mulanya, anda mengelak daripada menetapkan perangkap untuk diri sendiri atau pembangun masa depan.
Cara pengecam dipetik berbeza antara dialek SQL. Walaupun MySQL menggunakan tanda belakang untuk memetik pengecam secara lalai, SQL yang mematuhi ANSI (dan MySQL dalam mod ANSI SQL, seperti yang diterangkan di sini) menggunakan petikan berganda untuk memetik pengecam. Oleh itu, pertanyaan yang menggunakan tanda belakang untuk memetik pengecam kurang mudah alih kepada dialek SQL yang lain.
Untuk mengurangkan risiko kesilapan pada masa hadapan, ia selalunya lebih bijak daripada memetik pengecam dengan tanda belakang.
Jika jadual atau lajur tidak boleh dinamakan semula, sertakan dalam tanda tanda belakang () seperti yang diterangkan dalam 10.2 Nama Objek Skema `
yang dirujuk sebelum ini.
Berikut ialah contoh menunjukkan penggunaan (diambil daripada 10.3 Kata Kunci dan Perkataan Terpelihara):
Sekali lagi, pertanyaan dalam soalan boleh dibetulkan dengan membungkus kata kunci key
dalam tanda belakang, seperti ini:
INSERT INTO user_details (username, location, `key`) VALUES ('Tim', 'Florida', 42)"; ^ ^