MariaDB / Come Usare Trattini e Punti nei Nomi dei Database
In MariaDB, per creare un database con un nome contenente un trattino (-) o un punto (.), racchiudi l'intero nome tra backtick (`). Ad esempio, scrivilo come CREATE DATABASE `test-test`; e CREATE DATABASE `test.test`;.
Perché i backtick sono necessari?
Un nome di database è un identificatore utilizzato da MariaDB per distinguere gli oggetti. Senza gli accenti gravi, MariaDB non interpreta il trattino in test-test come parte del nome, e il punto in test.test può essere interpretato come un separatore tra identificatori. Pertanto, nessuna delle seguenti istruzioni è una sintassi valida per creare il database desiderato.
CREATE DATABASE test-test;
CREATE DATABASE test.test;
Eseguire ciascuna istruzione genera un errore di sintassi. Il messaggio può variare a seconda della versione del server e del client. I backtick sono diversi dalle virgolette singole (') utilizzate per rappresentare le stringhe. Le regole sono descritte nella documentazione MariaDB sui nomi degli identificatori.
Creazione e verifica di un database
L'esempio seguente viene eseguito su un client SQL connesso a un server MariaDB. È necessario avere il permesso di creare un nuovo database e, se esiste già un database con lo stesso nome, controllarne l'utilizzo prima di crearlo. La pratica dovrebbe essere fatta in un ambiente di test separato senza dati esistenti.
CREATE DATABASE `test-test`;
CREATE DATABASE `test.test`;
SHOW DATABASES;
Se la creazione ha successo, è possibile vedere i nomi nell'elenco. La creazione può fallire se il nome esiste già o se non ci sono permessi sufficienti. Se è possibile rendere il nome semplice con lettere inglesi, numeri e underscore, si può stabilirlo come test_test per ridurre confusione con le virgolette e la compatibilità degli strumenti.
Uso di nomi con punti
Quando si seleziona un database, includere l'intero nome, compreso il punto, tra backtick. L'esecuzione delle seguenti istruzioni visualizza il nome del database corrente come test.test.
USE `test.test`;
SELECT DATABASE();
Quando si specificano sia un database sia una tabella insieme, racchiudere ciascuno separatamente e mettere un punto di separazione tra di essi. Nell'esempio seguente, il primo punto fa parte del nome del database, e il punto esterno ai backtick separa il database dalla tabella.
CREATE TABLE `test.test`.`example` (id INT);
INSERT INTO `test.test`.`example` VALUES (1);
SELECT id FROM `test.test`.`example`;
Se eseguito in un database di pratica vuoto separato, la query finale restituisce 1. Sono inoltre necessari i privilegi per la creazione di tabelle e l'inserimento dei dati. Al contrario, se si racchiude tutto in un'unica coppia come `test.test.example`, esso rappresenta un singolo identificatore contenente un punto, piuttosto che due identificatori diversi.
Punti da verificare durante l'operazione
Solo perché può essere racchiuso tra backtick non significa che tutti gli strumenti gestiscano i nomi con caratteri speciali allo stesso modo. Verifica separatamente se le impostazioni di connessione dell'applicazione, gli strumenti di backup e ripristino, gli strumenti di gestione e le versioni del server supportano tali nomi. Ad esempio, la funzionalità di catalogo di MariaDB ha restrizioni sui nomi dei database contenenti punti a seconda del client utilizzato per connettersi. Per le condizioni dettagliate, consulta la documentazione del catalogo di MariaDB .
La sensibilità alle maiuscole e minuscole dei nomi dei database è influenzata dal file system del sistema operativo e dalle impostazioni lower_case_table_names. Non dare per scontato che i nomi esistenti utilizzino casi diversi; verifica i nomi effettivi. Poiché questa impostazione riguarda l'inizializzazione del server, non modificarla arbitrariamente su un server di produzione esistente per scopi di risoluzione dei problemi.
Dopo aver terminato la pratica, controlla prima il nome e i contenuti prima di eliminare il database. DROP DATABASE elimina le tabelle e i dati al suo interno, quindi non eseguire i comandi di eliminazione di esempio sui database di servizio reali. Utilizza i seguenti comandi solo in un ambiente vuoto che hai creato per scopi di test.
DROP DATABASE `test-test`;
DROP DATABASE `test.test`;
Gli esempi sono stati confermati in un MariaDB 12.3.3 isolato su Windows per la creazione con o senza backtick, la selezione del database e le query sulle tabelle. In altre versioni o strumenti di gestione, controllare il comportamento e i permessi di quell'ambiente.




