Itu berasal dari standar sql asli, yang melalui beberapa lapisan tipuan akhirnya mendapatkan pengidentifikasi mulai blok, yang merupakan salah satu dari beberapa hal, tetapi terutama itu adalah "huruf latin sederhana". Ada juga hal lain yang dapat digunakan, tetapi jika Anda ingin melihat semua detailnya, kunjungi http://en.wikipedia.org/wiki/SQL-92 dan ikuti tautan ke standar sebenarnya ( halaman 85 )
Memiliki pengenal pengenal non numerik membuat penulisan parser untuk memecahkan kode sql untuk eksekusi lebih mudah dan lebih cepat, tetapi formulir yang dikutip juga bagus.
Edit:Mengapa parser lebih mudah?
Masalah untuk parser lebih pada SELECT
-list klausa daripada FROM
ayat. Select-list adalah daftar ekspresi yang dipilih dari tabel, dan ini sangat fleksibel, memungkinkan nama kolom sederhana dan ekspresi numerik. Pertimbangkan hal berikut:
SELECT 2e2 + 3.4 FROM ...
Jika nama tabel, dan nama kolom bisa dimulai dengan angka, adalah 2e2
nama kolom atau nomor yang valid (e
format biasanya diizinkan dalam literal numerik) dan 3.4
tabel "3
" dan kolom "4
" atau apakah itu nilai numerik 3.4
?
Memiliki aturan bahwa pengidentifikasi mulai dengan huruf latin sederhana (dan beberapa hal spesifik lainnya) berarti parser yang melihat 2e2
dapat dengan cepat membedakan ini akan menjadi ekspresi numerik, kesepakatan yang sama dengan 3.4
Meskipun dimungkinkan untuk merancang skema untuk memungkinkan karakter utama numerik, ini mungkin menyebabkan aturan (pendapat) yang lebih tidak jelas, jadi aturan ini adalah solusi yang bagus. Jika Anda mengizinkan angka terlebih dahulu, maka itu akan selalu membutuhkan kutipan, yang bisa dibilang tidak 'bersih'.
Penafian , Saya telah menyederhanakan sedikit di atas, mengabaikan nama korelasi agar tetap singkat. Saya tidak sepenuhnya akrab dengan postgres, tetapi telah memeriksa ulang jawaban di atas terhadap dokumentasi Oracle RDB dan spesifikasi sql