AhANiBoy: Wann welches? ` ' "

hi

Es gibt in MySQL  Single Quotes '  sowie Backticks ` und Double Quotes "
Es ist mir aber nicht ganz klar wo ich welche verwenden darf.
Folgendes funktionierte nicht:

mysql> INSERT INTO foo (id, foo, bar) VALUES (``, abc, def);
ERROR 1054: Unknown column '' in 'field list'
mysql>

In der Annahme dass ` Probleme machte ging ich her und nahm '

mysql> INSERT INTO 'foo' ('id', 'foo', 'bar') VALUES ('', 'abc', 'def');
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ''foo' ('id', 'foo', 'bar') VALUES ('', 'abc', 'def')' at line 1
mysql>

Nur " gehen auch nicht:

mysql> INSERT INTO "foo" ("id", "foo", "bar") VALUES ("", "abc", "def");
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '"foo" ("id", "foo", "bar") VALUES ("", "abc", "def")' at line 1
mysql>

Wo soll ich welche verwenden?
Derzeit sind meine Test-Felder noch alle durchgehende Wörter und würden
keine Single Quotes, Backticks und Double Quotes brauchen.
aber es kommen bald Werte und Feldnamen mit
LEERZEICHEN und diversen Sonderzeichen da muss ich sehrwohl was machen.
^^^^^^^^^^^              ^^^^^^^^^^^^^

Auch das hier ist unklar:

PRIMARY KEY  (id),
UNIQUE INDEX id (id)

Welche ` oder '  oder " braucht man hier?

Dankende Grüße!
Schönen Tag noch wünscht
Euer AhANiBoy

  1. Hi AhANiBoy

    ` Brauchst du für Spalten- und Tabellennamen, die mit Schlüsselwörtern kollidieren oder Leer-/Sonderzeichen beinhalten. Idealer wäre es aber, auf solche Namen zu verzichten.

    ' Brauchst du für alle Stringwerte.

    " Gibt es afaik nicht.

    An einem Beispiel:

    SELECT datetime
      FROM where
    WHERE stringfeld = 'stringwert'

    Gruss Daniela

    1. hi Daniela!

      Danke für die prompte Antwort.

      Ist also das hier auch richtig, oder?

      Sagen wir ich habe ein FELD wie Du auch "where" genannt.

      PRIMARY KEY (where),
      UNIQUE INDEX myindexname (where, is)

      Da sind nur Backticks `
      Sollte so stimmen, ne?

      Dankende Grüße,
      AhANiBoy

    2. ` Brauchst du für Spalten- und Tabellennamen, die mit Schlüsselwörtern kollidieren oder Leer-/Sonderzeichen beinhalten. Idealer wäre es aber, auf solche Namen zu verzichten.

      Ideal wäre es auch zu wissen, welche Wörter in nachfolgenden Versionen plötzlich Schlüsselwörter/Funktionsnamen werden... Dann backticke ich lieber doch alles gleich von Anfang an.

      Wobei ich persönlich ohne Not auch keine Leer- oder Sonderzeichen (außer dem Unterstrich) in DB-/Tabellen-/Spaltennamen verwenden würde.

      1. Hi dedlfix

        Ideal wäre es auch zu wissen, welche Wörter in nachfolgenden Versionen plötzlich Schlüsselwörter/Funktionsnamen werden... Dann backticke ich lieber doch alles gleich von Anfang an.

        Kuck dir mal die Listen mit den reservierten Wörtern an. Da sind üblicherweise auch welche dabei, die für später verplant sind. Es gibt aber natürlich keine Garantie dafür.

        Gruss Daniela

        P.S: Gruss und Verabschiedung sind hier üblich und deren Fehlen unhöflich.

        1. yo,

          blumen für die dame, es gibt halt keine gentlemen mehr.....

          gruß
          Ilja