MariaDB / Cara Menggunakan Tanda Hubung dan Titik dalam Nama Database

Di MariaDB, untuk membuat database dengan nama yang mengandung tanda hubung (-) atau titik (.), bungkus seluruh nama dengan backtick (`). Sebagai contoh, tulis seperti CREATE DATABASE `test-test`; dan CREATE DATABASE `test.test`;.

Mengapa backtick diperlukan?

Nama database adalah pengenal yang digunakan oleh MariaDB untuk membedakan objek. Tanpa backtick, MariaDB tidak menafsirkan tanda hubung pada test-test sebagai bagian dari nama, dan titik pada test.test dapat ditafsirkan sebagai pemisah antara pengenal. Oleh karena itu, kedua pernyataan berikut bukan sintaks yang sah untuk membuat database yang dimaksud.

CREATE DATABASE test-test;
CREATE DATABASE test.test;

Menjalankan setiap pernyataan menghasilkan kesalahan sintaks. Rincian pesan kesalahan dapat bervariasi tergantung pada versi server dan klien. Backtick berbeda dari tanda kutip tunggal (') yang digunakan untuk mewakili string. Aturan untuk pengenal di MariaDB dapat ditemukan di Dokumen Nama Pengenal MariaDB.

Membuat dan Memeriksa Database

Contoh berikut dijalankan di klien SQL yang terhubung ke server MariaDB. Anda memerlukan izin untuk membuat database baru, dan jika database dengan nama yang sama sudah ada, periksa penggunaannya sebelum membuatnya. Latihan harus dilakukan di lingkungan uji terpisah tanpa data yang ada.

CREATE DATABASE `test-test`;
CREATE DATABASE `test.test`;
SHOW DATABASES;

Jika pembuatan berhasil, Anda dapat melihat nama-nama dalam daftar. Pembuatan bisa gagal jika nama sudah ada atau jika izin tidak mencukupi. Jika Anda dapat membuat nama sederhana dengan huruf Inggris, angka, dan garis bawah, Anda bisa membuatnya seperti test_test untuk mengurangi kebingungan dengan penandaan dan kompatibilitas alat.

Menggunakan Nama dengan Titik

Saat memilih database, sertakan seluruh nama, termasuk titik, dalam backtick. Menjalankan pernyataan berikut menampilkan nama database saat ini sebagai test.test.

USE `test.test`;
SELECT DATABASE();

Saat menentukan database dan tabel secara bersamaan, sertakan masing-masing secara terpisah dan letakkan titik pemisah di antara keduanya. Dalam contoh di bawah, titik pertama adalah bagian dari nama database, dan titik di luar backtick memisahkan database dan tabel.

CREATE TABLE `test.test`.`example` (id INT);
INSERT INTO `test.test`.`example` VALUES (1);
SELECT id FROM `test.test`.`example`;

Jika dijalankan di database latihan kosong yang terpisah, kueri akhir mengembalikan 1. Hak untuk membuat tabel dan menyisipkan data juga diperlukan. Sebaliknya, jika Anda menyertakan semuanya sebagai satu pasangan seperti `test.test.example`, itu mewakili satu pengenal yang berisi titik, bukan dua pengenal yang berbeda.

Poin-poin yang perlu diperiksa selama operasi

Hanya karena dapat dimasukkan dalam backtick tidak berarti semua alat menangani nama dengan karakter khusus dengan cara yang sama. Uji secara terpisah apakah pengaturan koneksi aplikasi, alat cadangan dan pemulihan, alat manajemen, dan versi server mendukung nama-nama tersebut. Sebagai contoh, fungsionalitas katalog MariaDB memiliki batasan pada nama database yang mengandung titik tergantung pada klien yang digunakan untuk terhubung. Untuk kondisi rinci, merujuk ke dokumentasi katalog MariaDB .

Sensitivitas huruf besar-kecil pada nama database dipengaruhi oleh sistem file pada sistem operasi dan pengaturan lower_case_table_names. Jangan mengasumsikan nama yang sudah ada menggunakan huruf berbeda; periksa nama yang sebenarnya. Karena pengaturan ini berkaitan dengan inisialisasi server, jangan mengubahnya secara sembarangan pada server produksi yang sudah ada untuk tujuan pemecahan masalah.

Setelah menyelesaikan praktik, periksa nama dan isinya terlebih dahulu sebelum menghapus database. DROP DATABASE akan menghapus tabel dan data di dalamnya, jadi jangan jalankan perintah hapus contoh pada database layanan yang sebenarnya. Gunakan perintah berikut hanya di lingkungan kosong yang Anda buat untuk tujuan pengujian.

DROP DATABASE `test-test`;
DROP DATABASE `test.test`;

Contoh-contoh tersebut telah dikonfirmasi di MariaDB 12.3.3 yang terisolasi pada Windows untuk pembuatan dengan atau tanpa backtick, pemilihan database, dan kueri tabel. Di versi lain atau alat manajemen lainnya, periksa perilaku dan izin dari lingkungan tersebut.