Vorteile der Verwendung von Backtick (`) in MySQL-Abfragen?

25

In MySQL können wir Abfragen mit oder ohne das `Symbol backtick ( ) erstellen . Beispiel:

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

Beides funktioniert gut in der MySQL-Konsole.

Gibt es einen technischen Unterschied zwischen ihnen?

Hat die Verwendung von ( `) gegenüber einfachen Abfragen einen Vorteil ?

Satish Pandey
quelle

Antworten:

32

Sie werden als Bezeichner in Anführungszeichen bezeichnet und weisen den Parser an, den Text zwischen ihnen als Literalzeichenfolge zu behandeln. Sie sind nützlich, wenn Sie eine Spalte oder Tabelle haben, die ein Schlüsselwort oder ein Leerzeichen enthält. Zum Beispiel würde das folgende nicht funktionieren:

CREATE TABLE my table (id INT);

Aber das folgende würde:

CREATE TABLE `my table` (id INT);

Außerdem würde Folgendes einen Fehler erhalten, da COUNTes sich um ein reserviertes Schlüsselwort handelt:

SELECT count FROM some_table

Aber das Folgende würde korrekt analysiert:

SELECT `count` FROM some_table

Ich hoffe das hilft dir.

Herr Brownstone
quelle
24

Wenn Sie etwas um Objektbezeichner verwenden möchten, verwenden Sie mindestens die doppelten Anführungszeichen: "

Dies funktioniert unter MySQL, PostgreSQL, SQL Server, Oracle usw. Für MySQL benötigen Sie möglicherweise den SQL-Modus ansi_quotes , abhängig von der Standardkonfiguration:

SET sql_mode = 'ANSI_QUOTES';

Backticks `werden nur in MySQL verwendet, Sie lernen eine Art von SQL, die in keiner anderen DBMS-Marke funktioniert.

Frank Heikens
quelle
6

Es bedeutet, dass Sie Leerzeichen in Tabellennamen haben können. Natürlich nicht besonders ansprechend. Dasselbe gilt für SQL Server [].

Rob Farley
quelle
3

Es kann hilfreich sein, wenn Sie eine Spalte mit einem reservierten Namen haben.

zB: Sie können eine Aussage wie diese abfragen:

select * from tablename group by `group`;
HVNSweeting
quelle
1

Aus meiner Sicht ist @ Mr.Brownstone Antwort nur teilweise richtig.

Das Backtick `wird in MySQL verwendet, um Literale abzugrenzen, die Bezeichner darstellen (keine Zeichenfolgen).

Auf diese Weise können Sie normalerweise nicht akzeptierte Zeichen wie Leerzeichen, reservierte Wörter usw. als Bezeichner verwenden. Beispielsweise:

SELECT * FROM `Strange table name`;

Wichtig ist auch, dass der Parser erkennt, ob Sie etwas falsch gemacht haben, z. B. eine Spalte auszuwählen, die nicht vorhanden ist. Beispielsweise:

SELECT notexistingcolumn FROM atable;

Wenn atableeine notexistingcolumnSpalte vorhanden ist, diese jedoch nicht vorhanden ist, wird sie als Literalzeichenfolge "nicht vorhandene Spalte" interpretiert, die sie als Wert auswählt (und möglicherweise eine Warnung ausgibt).

Wenn Sie stattdessen Folgendes verwenden:

SELECT `notexistingcolumn` FROM `atable`;

Es erkennt, dass dies notexistingcolumnder Name einer Spalte ist, die nicht vorhanden ist, und löst einen Fehler aus.

Ich denke, es ist immer vorzuziehen, Bezeichner mit Backticks einschließlich des Alias ​​zu umgeben und zu vermeiden, reservierte Wörter und seltsame Zeichen für Bezeichner zu verwenden.

Weitere Informationen zum Backtick von MySQL finden Sie unter https://dev.mysql.com/doc/refman/8.0/en/identifiers.html .

PhoneixS
quelle