Tidak juga. Anda dapat menggunakan *
karakter pengganti kolom
untuk memilih semua kolom. Jika Anda menggabungkan beberapa tabel, Anda dapat memilih semua kolom dari tabel tertentu dengan mengawali *
dengan nama tabel atau alias:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Namun, Anda tidak boleh menggunakan *
kecuali Anda sedang menulis program administrasi DB.
Atau, Anda dapat membuat pernyataan dalam SQL atau bahasa lain dengan mengambil metadata tabel untuk mendapatkan nama kolom. Dengan hanya menggunakan MySQL, Anda dapat menanyakan COLUMNS
tabel di INFORMATION_SCHEMA
database untuk mendapatkan nama kolom dan menggunakan GROUP_CONCAT
untuk membangun daftar kolom untuk pernyataan tersebut.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Ganti ":db", ":tabel" dan "..." dengan nilai yang sesuai. Anda bahkan dapat mengubahnya menjadi pernyataan siap pakai sehingga Anda dapat menggunakannya untuk tabel apa pun. Dari sana, PREPARE
dan EXECUTE
pernyataan yang dibuat.
Jika Anda tidak terbatas pada SQL untuk pemrograman, itu seharusnya tidak terlalu berantakan. Driver DB untuk bahasa pilihan Anda kemungkinan menawarkan metode untuk mendapatkan metadata. Implementasi sebenarnya akan mirip dengan pendekatan SQL murni (dapatkan nama kolom, pernyataan assemble, persiapkan, jalankan), tetapi tidak boleh terlalu jelek, karena Anda akan menggunakan bahasa algoritmik, bukan deklaratif.
Saya akan sangat tertarik melihat situasi bahwa ini benar-benar diperlukan..