MariaDB / Verwendung von Bindestrichen und Punkten in Datenbanknamen
In MariaDB erstellen Sie eine Datenbank mit einem Namen, der einen Bindestrich (-) oder einen Punkt (.) enthält, indem Sie den gesamten Namen in Backticks einschließen (`). Zum Beispiel schreiben Sie ihn wie CREATE DATABASE `test-test`; und CREATE DATABASE `test.test`;.
Warum sind Backticks notwendig?
Ein Datenbankname ist ein Bezeichner, der von MariaDB verwendet wird, um Objekte zu unterscheiden. Ohne Backticks interpretiert MariaDB den Bindestrich in test-test nicht als Teil des Namens, und der Punkt in test.test kann als Trenner zwischen Bezeichnern interpretiert werden. Daher ist keine der folgenden Anweisungen eine gültige Syntax zum Erstellen der beabsichtigten Datenbank.
CREATE DATABASE test-test;
CREATE DATABASE test.test;
Die Ausführung jeder Anweisung führt zu einem Syntaxfehler. Die Einzelheiten der Fehlermeldung können je nach Serverversion und Client variieren. Backticks unterscheiden sich von einfachen Anführungszeichen ('), die zur Darstellung von Zeichenfolgen verwendet werden. Die Regeln für Bezeichner in MariaDB sind im MariaDB Identifier Names Document zu finden.
Erstellen und Überprüfen einer Datenbank
Das folgende Beispiel wird auf einem SQL-Client ausgeführt, der mit einem MariaDB-Server verbunden ist. Sie benötigen die Berechtigung, eine neue Datenbank zu erstellen, und wenn eine Datenbank mit demselben Namen bereits existiert, überprüfen Sie deren Nutzung, bevor Sie sie erstellen. Die Übung sollte in einer separaten Testumgebung ohne vorhandene Daten durchgeführt werden.
CREATE DATABASE `test-test`;
CREATE DATABASE `test.test`;
SHOW DATABASES;
Wenn die Erstellung erfolgreich ist, können Sie die Namen in der Liste sehen. Die Erstellung kann fehlschlagen, wenn der Name bereits existiert oder wenn unzureichende Berechtigungen vorliegen. Wenn Sie den Namen einfach mit englischen Buchstaben, Zahlen und Unterstrichen gestalten können, können Sie ihn wie test_test erstellen, um Verwirrungen durch Anführungszeichen und die Kompatibilität von Werkzeugen zu reduzieren.
Verwendung von Namen mit Punkten
Beim Auswählen einer Datenbank sollte der gesamte Name, einschließlich des Punkts, in Backticks eingeschlossen werden. Das Ausführen der folgenden Anweisungen zeigt den aktuellen Datenbanknamen als test.test an.
USE `test.test`;
SELECT DATABASE();
Wenn sowohl eine Datenbank als auch eine Tabelle zusammen angegeben werden, sollten beide getrennt in Backticks eingeschlossen werden, und ein Punkt dazwischen gesetzt werden. Im folgenden Beispiel ist der erste Punkt Teil des Datenbanknamens, und der Punkt außerhalb der Backticks trennt die Datenbank und die Tabelle.
CREATE TABLE `test.test`.`example` (id INT);
INSERT INTO `test.test`.`example` VALUES (1);
SELECT id FROM `test.test`.`example`;
Wenn in einer separaten leeren Übungsdatenbank ausgeführt, liefert die endgültige Abfrage 1. Auch Berechtigungen zum Erstellen von Tabellen und Einfügen von Daten sind erforderlich. Im Gegensatz dazu stellt das Einschließen von allem als ein einzelnes Paar wie `test.test.example` einen einzelnen Bezeichner dar, der einen Punkt enthält, anstatt zwei verschiedene Bezeichner.
Punkte, die während des Betriebs überprüft werden sollten
Nur weil es in Backticks eingeschlossen werden kann, bedeutet das nicht, dass alle Werkzeuge Namen mit Sonderzeichen auf die gleiche Weise behandeln. Testen Sie separat, ob Anwendung-Verbindungseinstellungen, Backup- und Wiederherstellungswerkzeuge, Verwaltungswerkzeuge und Serverversionen diese Namen unterstützen. Zum Beispiel hat die Katalogfunktionalität von MariaDB Einschränkungen für Datenbanknamen, die Punkte enthalten, abhängig davon, welcher Client für die Verbindung verwendet wird. Für detaillierte Bedingungen siehe die MariaDB-Katalogdokumentation .
Die Groß-/Kleinschreibung von Datenbanknamen wird durch das Dateisystem des Betriebssystems und lower_case_table_names-Einstellungen beeinflusst. Gehen Sie nicht davon aus, dass vorhandene Namen unterschiedliche Schreibweisen verwenden; überprüfen Sie die tatsächlichen Namen. Da diese Einstellung die Serverinitialisierung betrifft, ändern Sie sie nicht willkürlich auf einem bestehenden Produktionsserver zu Testzwecken.
Überprüfen Sie nach Abschluss der Übung zuerst den Namen und den Inhalt, bevor Sie die Datenbank löschen. DROP DATABASE löscht die Tabellen und Daten darin, führen Sie daher die Beispiel-Löschbefehle nicht auf tatsächlichen Servicedatenbanken aus. Verwenden Sie die folgenden Befehle nur in einer leeren Umgebung, die Sie zu Testzwecken erstellt haben.
DROP DATABASE `test-test`;
DROP DATABASE `test.test`;
Die Beispiele wurden in einer isolierten MariaDB 12.3.3 unter Windows für die Erstellung mit oder ohne Backticks, die Datenbankauswahl und Tabellenabfragen bestätigt. In anderen Versionen oder Verwaltungstools überprüfen Sie das Verhalten und die Berechtigungen dieser Umgebung.




