Gunakan tata letak untuk melihat pertanyaan
Sebuah pernyataan SQL dibangun dari token seperti kata kunci, identifikator, literal dan operator. Spasi dan pergantian baris sering memisahkan token, sementara tanda baca memiliki maknanya sendiri. MultiVerto’s formatter menambahkan break sebelum klausa umum, sehingga SELECT name,score FROM results WHERE score>10 ORDER BY score DESC menjadi lebih mudah untuk discan. Pemeriksa dapat melihat kolom yang dipilih, tabel sumber, filter dan pemesanan sebagai keputusan terpisah. Alat kompak sebaliknya mengurangi ruang redundan sementara mempertahankan teks token. Tidak ada alat yang menjalankan pertanyaan terhadap basis data, memeriksa bahwa hasil adalah tabel nyata, atau membuktikan bahwa skor memiliki jenis yang diinginkan. Perlakukan keluaran sebagai bantuan membaca, bukan sertifikat kebenaran.
Ikuti contoh review konkret
Bayangkan sebuah laporan yang menunjukkan hasil dengan skor di atas 10, diurutkan dari skor tertinggi ke bawah. Formatting memaparkan SELECT, FROM, WHERE dan ORDER BY pada baris terpisah; Anda dapat kemudian bertanya apakah perbandingan secara ketat lebih besar dari 10 atau harus termasuk 10. Jika ORDER BY hilang, urutan baris yang dikembalikan dapat tidak didefinisikan, seperti dokumen SQLite. Sebuah kueri yang diringkas mungkin lebih pendek untuk disimpan dalam sebuah tes kecil, tetapi tidak memberitahu Anda apa-apa tentang rencana eksekusi atau penggunaan indeks. Salin pertanyaan yang diformat ke dalam lingkungan basis data yang sebenarnya, periksa hasil dan bandingkan dengan kasus tes yang diketahui. Peformat teks tidak dapat menggantikan eksekusi itu.
- format token menjadi klausa yang dapat dibaca
- periksa filter dan maksud ORDER BY
- jalankan query uji di basis data target
Mengendalikan komentar dan string secara sengaja
String SQL dan identifikator quoted tidak boleh dibagi sebagai kata biasa. Komentar baris yang dimulai dengan dua tanda hubung berjalan ke baris baru; menghapus atau memindahkan baris baru yang tidak hati-hati dapat mengubah teks yang dikomentari. Pemformat SQL MultiVerto saat ini secara sengaja menolak pernyataan yang berisi komentar daripada menebak di mana untuk meletakkannya. Alat kompak mempertahankan komentar dan batas pembalikan barisnya, tetapi Anda harus tetap menilai hasil sebelum menggunakannya. Dialek SQL juga berbeda dalam kutipan dan sintaks string khusus. Sebuah alat browser-side kecil tidak dapat menjanjikan dukungan untuk setiap vendor ekstensi. Simpan teks asli Anda dan gunakan pembacaan sendiri basis data untuk validasi akhir.
Pemformatan bukanlah kontrol keamanan
Sebuah pertanyaan yang rapi secara visual masih dapat mengembalikan baris yang salah atau dibangun secara tidak aman. Jangan menghubungkan input s orang yang tidak dipercaya ke SQL dan asumsikan bahwa formatnya telah membuatnya aman; gunakan parameter melalui API basis data di mana yang sesuai. Jangan tempelkan kredensial atau rahasia produksi ke dalam contoh yang dipublikasikan. Editor lokal bekerja di browser, tetapi sebuah prefilled embed yang dibagikan berisi masukannya dalam fragmen URL untuk pembaca untuk melihat. Ketika mengubah pernyataan, periksa kondisi, join dan batas terpisah dari ruang kosong. Sebuah string kompak bukanlah enkripsi atau obfuscation yang melindungi logika bisnis. Tujuan praktisnya di sini adalah membandingkan bentuk yang dapat dibaca dengan serialisasi yang lebih pendek.
Validasi dalam basis data yang penting
Mulai dengan salinan pertanyaan singkat tanpa komentar dan formatnya di bawah. Periksa bahwa string kutipan, identifikator, operator dan tanda baca tetap ada. Jika pertanyaan Anda berisi komentar atau vendor- spesifik konstruksi, gunakan formatter dirancang untuk dialek itu atau biarkan tidak berubah. Kemudian jalankan query di database uji yang aman dengan baris perwakilan, termasuk nilai batas seperti skor 10 dan 11. Bandingkan data yang dikembalikan, urutan dan kinerja sebelum menerapkan pertanyaan yang diubah. Jika Anda meringkasnya setelah itu, uji keluaran itu juga. Transformasi teks dapat membantu manusia memeriksa niat, tetapi database dan data menentukan perilaku sebenarnya.