Satu server MySQL mampu menampung banyak database sekaligus: database latihan, database aplikasi toko, sampai database sistem milik server itu sendiri. Ketika kita mengetik perintah seperti CREATE TABLE, MySQL harus tahu database mana yang menjadi konteks perintah tersebut — inilah yang disebut database aktif (current database). Pada Chapter ini kita akan memilih database dengan perintah USE, memeriksa pilihan kita dengan SELECT DATABASE(), dan membongkar satu galat yang paling sering dialami pemula: No database selected.

Membuat Database Tidak Otomatis Memilihnya #

Kita mulai dengan membuat database latihan belajar_sql:

sql
CREATE DATABASE belajar_sql;

Output yang Dihasilkan:

text
Query OK, 1 row affected (0.00 sec)

Respons Query OK menandakan database berhasil dibuat, namun ada satu detail penting: perintah CREATE DATABASE tidak menjadikan belajar_sql sebagai database aktif. Kita hanya menyiapkan wadahnya, belum masuk ke dalamnya. Akibatnya, perintah yang butuh konteks database akan ditolak server:

sql
-- @error
CREATE TABLE pelanggan (id INT);

Output yang Dihasilkan:

text
Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected
Bye

Galat ERROR 1046 (3D000): No database selected muncul karena CREATE TABLE membutuhkan database tempat tabel baru disimpan, sedangkan sesi kita belum menunjuk database mana pun. Galat ini tidak merusak apa pun — perintah ditolak sebelum dieksekusi — tetapi menghentikan skrip yang sedang berjalan. Solusinya ada dua: memilih database dengan USE lebih dulu, atau menyebutkan database secara eksplisit dengan nama seperti belajar_sql.pelanggan.

Memilih Database dengan USE #

Perintah USE mengubah database aktif untuk sesi yang sedang berjalan:

sql
USE belajar_sql;

Output yang Dihasilkan:

text
Database changed

Respons Database changed memastikan pilihan kita diterima. Mulai baris ini, semua perintah yang menyebut nama tabel tanpa awalan database akan dicari di dalam belajar_sql. Kita bisa memastikan database aktif yang sedang berlaku dengan fungsi DATABASE():

sql
SELECT DATABASE();

Output yang Dihasilkan:

text
+-------------+
| DATABASE()  |
+-------------+
| belajar_sql |
+-------------+
1 row in set (0.00 sec)

Fungsi DATABASE() mengembalikan nama database aktif sebagai satu baris hasil. Nilai ini berguna ketika kita masuk ke sesi yang sudah berjalan lama atau membaca skrip orang lain: alih-alih menebak konteks, kita tinggal menanyakan langsung ke server. Bila tidak ada database aktif, fungsi ini mengembalikan NULL — situasi yang menghasilkan galat No database selected pada contoh sebelumnya.

Melihat Isi Database dengan SHOW TABLES #

Setelah memilih database, langkah alami berikutnya adalah melihat isinya. Perintah SHOW TABLES menampilkan seluruh tabel di database aktif:

sql
SHOW TABLES;

Output yang Dihasilkan:

text
Empty set (0.00 sec)

Respons Empty set bukanlah galat: database belajar_sql baru saja dibuat dan memang belum berisi tabel apa pun. Kita isi dengan satu tabel sederhana — struktur lengkap CREATE TABLE akan dibedah tuntas pada chapter berikutnya:

sql
CREATE TABLE pelanggan (id INT, nama VARCHAR(100));
SHOW TABLES;

Output yang Dihasilkan:

text
Query OK, 0 rows affected (0.00 sec)

+-----------------------+
| Tables_in_belajar_sql |
+-----------------------+
| pelanggan             |
+-----------------------+
1 row in set (0.00 sec)

Tabel pelanggan kini terdaftar di database aktif. Perhatikan bahwa SHOW TABLES hanya menampilkan nama tabelnya; untuk melihat kolom dan tipe datanya kita akan memakai perintah DESC yang dibahas pada chapter Melihat Struktur Tabel.

Berganti Database Aktif #

Sesi kita tidak terikat pada satu database selamanya. Untuk berpindah, cukup jalankan USE dengan nama database tujuan:

sql
CREATE DATABASE belajar_toko;
USE belajar_toko;
SELECT DATABASE();

Output yang Dihasilkan:

text
Query OK, 1 row affected (0.00 sec)

Database changed
+--------------+
| DATABASE()   |
+--------------+
| belajar_toko |
+--------------+
1 row in set (0.00 sec)

Blok di atas membuat database kedua bernama belajar_toko, berpindah ke sana, lalu memastikan pindahannya berhasil — fungsi DATABASE() kini mengembalikan belajar_toko. Perintah CREATE TABLE berikutnya akan menargetkan belajar_toko, bukan belajar_sql. Kita kembali ke database utama latihan dengan cara yang sama:

sql
USE belajar_sql;

Output yang Dihasilkan:

text
Database changed

Membersihkan Database Latihan #

Database belajar_toko sudah menjalankan tugasnya sebagai contoh pergantian, jadi kita hapus supaya server latihan tetap rapi:

sql
DROP DATABASE belajar_toko;

Output yang Dihasilkan:

text
Query OK, 0 rows affected (0.00 sec)

Perintah DROP DATABASE menghapus database beserta seluruh isi di dalamnya tanpa konfirmasi. Nilai 0 rows affected muncul karena belajar_toko masih kosong — tidak ada tabel yang ikut dibuang. Perilaku DROP DATABASE dan DROP TABLE secara menyeluruh akan kita bahas pada chapter Menghapus Database dan Tabel.

Referensi #

Database aktif sudah terpasang, dan SHOW TABLES menunjukkan isi belajar_sql masih sebatas satu tabel sederhana. Chapter berikutnya mengisi database tersebut dengan benar: kita akan mendefinisikan kolom, memilih tipe data, dan menerapkan aturan NOT NULL pada tabel pertama kita.