Program mysql adalah pintu masuk yang paling sering kita pakai untuk berbicara dengan MySQL Server. Program client ini berjalan di terminal, menerima statement SQL yang kita ketik, mengirimkannya ke server, lalu menampilkan hasilnya dalam bentuk tabel teks. Pada Chapter ini kita akan membahas opsi koneksi saat memanggil mysql, pola kerja sesi interaktif, perintah backslash yang mempermudah hidup kita, serta mode batch untuk menjalankan SQL tanpa masuk ke sesi interaktif.
Opsi Koneksi mysql Client #
Saat dipanggil tanpa argumen apa pun, mysql mencoba terhubung ke server di localhost port 3306 memakai nama user sistem operasi kita. Kita hampir selalu ingin mengatur sendiri ke mana dan sebagai siapa client terhubung, dan itulah pekerjaan lima opsi berikut:
| Opsi | Bentuk panjang | Fungsi |
|---|---|---|
-h 127.0.0.1 | --host=127.0.0.1 | Alamat server yang dituju |
-P 3306 | --port=3306 | Port TCP server |
-u root | --user=root | Nama user MySQL untuk koneksi |
-p | --password | Meminta kata sandi secara interaktif |
-D belajar | --database=belajar | Database awal yang langsung dipilih |
Bentuk pemakaian yang paling umum menggabungkan keempat opsi pertama:
mysql -h 127.0.0.1 -P 3306 -u root -pSetelah perintah ini dijalankan, client menampilkan baris Enter password: dan menunggu kita mengetik kata sandi untuk user root. Ketikan kita tidak tampil di layar supaya kata sandi tidak terbaca orang lain; tekan Enter dan koneksi pun dibuat. Huruf kapital pada -P memang sengaja: opsi kecil -p sudah terpakai untuk kata sandi, jadi port memakai huruf besar.
Sesi Interaktif: Menjalankan Statement #
Koneksi yang berhasil membawa kita ke sesi interaktif: sebuah prompt mysql> yang sabar menunggu perintah. Setiap statement SQL harus diakhiri titik koma (;) atau \g baru dieksekusi, sehingga kita bebas memecah statement panjang ke beberapa baris. Mari kita mulai dengan statement pertama:
SELECT 'Halo MySQL' AS sapaan;Output yang Dihasilkan:
+------------+
| sapaan |
+------------+
| Halo MySQL |
+------------+
1 row in set (0.00 sec)Statement di atas tidak menyentuh data apa pun; SELECT konstanta seperti ini adalah cara klasik memastikan sesi hidup dan hasil tercetak rapi dalam tabel ASCII. Client balik bertugas penuh selama sesi berlangsung, dan perintah client bawaan yang paling informatif adalah status:
-- @check
statusOutput yang Dihasilkan:
Laporan status merangkum identitas client dan server sekaligus: versi keduanya, user yang dipakai koneksi, port TCP, hingga character set yang aktif. Nilai seperti Connection id, Uptime, dan Threads berbeda-beda di setiap sesi, jadi jangan heran bila angka di layar kita tidak sama persis dengan contoh di atas. Perintah status ditulis tanpa titik koma karena perintah client dijalankan begitu Enter ditekan.
Bagaimana bila kita salah mengetik statement? Server menolak statement yang bukan SQL valid namun sesi tetap hidup, sehingga kita bisa langsung memperbaiki ketikan:
-- @error
SELEC 1;Output yang Dihasilkan:
Query OK, 0 rows affected (0.00 sec)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEC 1' at line 1
ByeGalat ERROR 1064 berarti parser server tidak mengenali statement tersebut, dan pesannya bahkan menunjukkan potongan near 'SELEC 1' sebagai sumber masalah. Perhatikan pula bahwa prompt tetap muncul setelah galat ini; koneksi hanya terputus bila kita sendiri keluar atau jaringan bermasalah.
Perintah Backslash: \G, \c, dan \q #
Selain statement SQL, sesi interaktif mengenal perintah backslash yang diproses oleh client, bukan oleh server. Perintah pertama yang sebaiknya jadi kebiasaan adalah \G — pengganti titik koma yang menampilkan hasil secara vertikal:
SELECT VERSION() AS versi, 'server latihan' AS keterangan\GOutput yang Dihasilkan:
*************************** 1. row ***************************
versi: 8.4.11
keterangan: server latihan
1 row in set (0.00 sec)Dengan terminator biasa, dua kolom di atas tampil berdampingan dan melebar ke samping. Dengan \G, setiap baris data dicetak ke bawah dengan format nama_kolom: nilai, sehingga hasil berkolom banyak tetap terbaca tanpa geser-geser layar. Perintah kedua, \c, membatalkan statement yang sedang kita ketik setengah jalan:
SELECT * FROM tabel_latihan
\c
SELECT 'input dibatalkan, sesi tetap hidup' AS status;Output yang Dihasilkan:
+------------------------------------+
| status |
+------------------------------------+
| input dibatalkan, sesi tetap hidup |
+------------------------------------+
1 row in set (0.00 sec)Baris SELECT * FROM tabel_latihan sengaja tidak diakhiri titik koma, sehingga client menganggap statement belum selesai. Ketikan \c lalu membatalkan seluruh input yang belum dieksekusi itu — tidak ada query yang dikirim ke server, dan statement berikutnya tetap berjalan normal. Perintah ketiga, \q, menutup sesi dan mengembalikan kita ke shell:
SELECT 'sesi selesai' AS pesan;
\q
SELECT 'baris ini tidak pernah dieksekusi' AS pesan;Output yang Dihasilkan:
+--------------+
| pesan |
+--------------+
| sesi selesai |
+--------------+
1 row in set (0.00 sec)Statement pertama tampil normal, lalu \q memutus koneksi seketika. Statement ketiga di blok tersebut tidak pernah sampai ke server karena client sudah keluar — bukti bahwa \q berlaku seketika, bukan di akhir input. Seperti status, seluruh perintah backslash dieksekusi begitu Enter ditekan tanpa menunggu titik koma.
Mode Batch: Opsi –execute dan File SQL #
Sesi interaktif bukan satu-satunya cara memakai mysql. Opsi --execute (bentuk pendeknya -e) menjalankan statement langsung dari shell tanpa membuka prompt:
mysql -h 127.0.0.1 -P 3306 -u root -e "SELECT VERSION();"Output yang Dihasilkan:
Perhatikan perbedaan formatnya: tanpa sesi interaktif, client tidak menggambar tabel ASCII. Hasil SELECT dicetak dengan pemisah tab antar kolom, dan baris Query OK untuk statement non-query tidak dicetak sama sekali. Bentuk ringkas semacam ini cocok untuk skrip shell yang hanya butuh satu nilai.
Untuk pekerjaan yang lebih besar, mysql dapat membaca seluruh statement dari sebuah file SQL lewat redirection shell:
mysql -h 127.0.0.1 -P 3306 -u root < skema.sqlClient membaca file skema.sql baris demi baris persis seperti membaca ketikan kita, lalu mengeksekusinya berurutan tanpa membuka prompt. Bila salah satu statement gagal, mode batch berhenti di titik itu, mencetak galat dengan awalan ERROR ... at line N yang menunjukkan nomor baris file, lalu mengembalikan status keluar non-nol ke shell. Perilaku ini membuat file SQL ideal untuk skrip inisialisasi: berhasil semua atau gagal terlihat jelas di baris mana. Di dalam sesi interaktif, kita juga bisa memuat file memakai perintah SOURCE nama_file.sql — cara ini akan kita pakai intensif saat menyusun struktur proyek latihan pada akhir section ini.
Referensi #
Kita kini bisa mengendalikan mysql client dari opsi koneksi sampai mode batch. Bagi yang lebih nyaman menatap antarmuka grafis, MySQL menyediakan alat resmi bernama MySQL Workbench; chapter berikutnya membahas cara memasang koneksi, memakai SQL editor, dan memutuskan kapan GUI lebih produktif daripada terminal.