Vantaggi dell'utilizzo di backtick (`) nelle query MySQL?


25

In MySQL possiamo creare query con o senza il `simbolo backtick ( ). Esempio:

  1. SELECT * FROM TEST;
  2. SELECT * FROM `TEST`;

Entrambi funzionano bene in mysql-console.

C'è qualche differenza tecnica tra loro?

Ci sono dei vantaggi nell'usare ( `) rispetto alle semplici query?

Risposte:


32

Sono chiamati identificatori tra virgolette e dicono al parser di gestire il testo tra loro come una stringa letterale. Sono utili quando hai una colonna o una tabella che contiene una parola chiave o uno spazio. Ad esempio, i seguenti non funzionerebbero:

CREATE TABLE my table (id INT);

Ma quanto segue:

CREATE TABLE `my table` (id INT);

Inoltre, si verificherebbe un errore in quanto COUNTè una parola chiave riservata:

SELECT count FROM some_table

Ma quanto segue verrebbe analizzato correttamente:

SELECT `count` FROM some_table

Spero che questo ti aiuta.


24

Se vuoi usare qualcosa attorno agli identificatori di oggetti, usa almeno le doppie virgolette standard: "

Funziona in MySQL, PostgreSQL, SQL Server, Oracle, ecc. Ecc. Per MySQL potresti aver bisogno della modalità SQL ansi_quotes , a seconda della configurazione predefinita:

SET sql_mode = 'ANSI_QUOTES';

I backtick `sono usati solo in MySQL, impari un tipo di SQL che non funzionerà in nessun altro marchio di DBMS.


6

Significa che puoi avere spazi nei nomi delle tabelle. Naturalmente non allettante. Lo stesso con SQL Server [].


3

Può essere utile se hai una colonna con nome riservato,

ad esempio: è possibile eseguire una query su un'istruzione come questa:

select * from tablename group by `group`;

1

Dal mio punto di vista, la risposta di Mr.Brownstone è solo parzialmente corretta.

Il backtick `viene utilizzato in MySQL per delimitare i letterali che rappresentano identificatori (non stringhe).

Ciò consente di utilizzare come identificatori caratteri non generalmente accettati come spazi, parole riservate, ecc. Per esempio:

SELECT * FROM `Strange table name`;

Inoltre è importante che consenta anche al parser di sapere se stai facendo qualcosa di sbagliato come selezionare una colonna che non esiste. Per esempio:

SELECT notexistingcolumn FROM atable;

Se atableesiste ma la notexistingcolumncolonna non esiste, verrà interpretata come la stringa letterale "colonna inesistente" selezionandola come valore (e probabilmente emettendo un avviso).

Invece, se usi:

SELECT `notexistingcolumn` FROM `atable`;

Riconoscerà che notexistingcolumnè il nome di una colonna che non esiste e genererà un errore.

Penso che sia sempre preferibile circondare gli identificatori con i backtick incluso l'alias e cercare di evitare di usare parole riservate e caratteri strani per gli identificatori.

Puoi leggere di più sul backtick di MySQL su https://dev.mysql.com/doc/refman/8.0/en/identifiers.html .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.