MySQL: Cara Dapetin Nama Schema, Tabel, & Kolom

Ini query-query yang bisa dipake di MySQL buat ngedapetin nama semua schema (database), tabel, & field yang terdaftar. Normalnya sih kalo kita mau dapetin informasi-informasi itu kita bisa pake perintah-perintah di bawah ini.

show databases;
show tables;
describe (nama tabel);

Yang di atas ini udah pernah gw bahas di postingan ini, & normalnya sih kalo kita jalanin MySQL dari command line Windows atau Linux pasti lebih enak make perintah-perintah di atas daripada yang bakal gw bahas di sini. Tapi ya, kalo kita lagi mau…ehem…ngebobol website pake SQL injection, rasanya sih query-query yang di bawah ini lebih memungkinkan buat dipake daripada tiga perintah di atas. Apalagi query yang bakal gw jelasin di bawah ini bisa disambung dengan query asli dari websitenya pake operator UNION.

Ah ya, query-query ini juga harusnya bisa jalan di Microsoft SQL Server & Oracle. Tapi berhubung informasi tentang schema, tabel, & kolom di SQL Server & Oracle disimpen di schema & tabel yang beda dengan yang dipake di MySQL, jadi querynya perlu diubah dikit. Kalo di MySQL sih semuanya disimpen dalam satu schema yang namanya information_schema. Di dalam information_schema ini ada tabel yang namanya SCHEMATA yang nyimpen informasi semua schema yang terdaftar, kalo informasi tabel-tabel yang terdaftar ada di tabel TABLES, & informasi kolomnya ada di tabel COLUMNS. Kita udah tau di mana informasi schema, tabel, & kolomnya disimpen, sekarang kita bisa dong kalo disuruh bikin query buat ngeluarin data dari situ.

SELECT * FROM information_schema.SCHEMATA;
SELECT * FROM information_schema.TABLES;
SELECT * FROM information_schema.COLUMNS;

Query di atas kayaknya udah nggak perlu terlalu banyak gw jelasin lagi, berhubung ini cuma query SELECT biasa. Di sini kita tinggal milih kolom mana yang mau ditampilin & dikasih filter pake WHERE di query-nya. Yang perlu diperhatiin, jangan lupa kita nempelin string “information_schema” pake tanda titik ke nama tabel yang mau kita akses. Secara, hampir nggak mungkin orang yang bikin websitenya naroh tabel-tabelnya di schema yang udah ada dari sononya kayak information_schema atau mysql. Biasanya sih mereka bakal bikin satu schema baru & naroh semua tabel-tabel yang dipake buat website itu di schema yang mereka buat. Jadi anggep aja kita harus ngakses tabel yang ada di information_schema dari schema lain. Karena itu kita harus nempelin nama information_schema dalam query biar waktu dieksekusi nanti dia bakal nyari tabel yang ada di dalam information_schema.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s