Hannes: Backticks in MySQL

Hallo,

man findet beide Versionen im Netz

SELECT foo FROM tabelle

als auch

SELECT foo FROM tabelle

was spricht dagegen die backticks nicht zu schreiben?

viele Grüsse
Hannes

  1. Hi,

    was spricht dagegen die backticks nicht zu schreiben?

    sofern Du für die Tabellen und Spalten keine Namen verwendest, die Sonderzeichen enthalten oder reservierten Wörtern entsprechen: Absolut und überhaupt gar nichts. Im Gegenteil. Lautet z.B. ein Spaltennamen jedoch "select" oder "erste Spalte" (warum auch immer), bist Du auf die Backticks angewiesen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. oder auch "right", "user" oder mein absoluter favorit "date". da bin ich schon des öfteren drüber gestolpert.

      Gruß,
      Niklas

    2. Hi,

      was spricht dagegen die backticks nicht zu schreiben?

      sofern Du für die Tabellen und Spalten keine Namen verwendest, die Sonderzeichen enthalten oder reservierten Wörtern entsprechen: Absolut und überhaupt gar nichts. Im Gegenteil. Lautet z.B. ein Spaltennamen jedoch "select" oder "erste Spalte" (warum auch immer), bist Du auf die Backticks angewiesen.

      Kann es sein, dass die Backticks in anderen SQL-Dialekten verwendet werden _müssen_? Oder irre ich mich da?

      mfG,
      steckl

      1. Hallo,

        Kann es sein, dass die Backticks in anderen SQL-Dialekten verwendet werden _müssen_? Oder irre ich mich da?

        Du irrst. Escapezeichen sind in SQL für erlaubte Bezeichner selbstverständlich nicht erforderlich. Zudem ist das Escapezeichen dialektspezifisch:
        MS SQL Server und MS Access verwenden zum Beispiel eckige Klammern, DB2 laut Recherche doppelte Anführungszeichen.

        Freundliche Grüße

        Vinzenz

        1. Hi,

          Du irrst. Escapezeichen sind in SQL für erlaubte Bezeichner selbstverständlich nicht erforderlich.

          Danke, dann hab ich da wohl was durcheinandergebracht.

          mfG,
          steckl

      2. Hi,

        Kann es sein, dass die Backticks in anderen SQL-Dialekten verwendet werden _müssen_? Oder irre ich mich da?

        ich kenne zwar keinen, aber ich mag es auch nicht ausschließen. Die Backtickeritis ist IMHO eine Folge automatisch generierter Statements - insbesondere aus PhpMyAdmin heraus - welche ohne Prüfung auf Notwendigkeit einfach gesetzt wurden; nach dem Motto "syntaktisch gesehen sind sie nie falsch".

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. welche ohne Prüfung auf Notwendigkeit einfach gesetzt wurden; nach dem Motto "syntaktisch gesehen sind sie nie falsch".

          was sich bei den vielen abfragen wahrscheinlich sogar positiv auf die performance auswirkt ;) php ist nunmal nicht das schnellste :D

          Gruß,
          Niklas

          1. Hi,

            was sich bei den vielen abfragen wahrscheinlich sogar positiv auf die performance auswirkt ;) php ist nunmal nicht das schnellste :D

            das mag sein, aber was hat das mit PHP zu tun?

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hello,

              das mag sein, aber was hat das mit PHP zu tun?

              Oh, ja was hat der phpMyAdmin mit PHP zu tun?
              Der ist doch in Visual Basic geschreiben, oder?

              (ich kann beides nicht leiden!)

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                das mag sein, aber was hat das mit PHP zu tun?
                Oh, ja was hat der phpMyAdmin mit PHP zu tun?

                was hat die Performance von MySQL-Statements mit und ohne Backticks mit PhpMyAdmin zu tun?

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. was hat die Performance von MySQL-Statements mit und ohne Backticks mit PhpMyAdmin zu tun?

                  es hat damit zu tun, dass php sonst überprüfen müsste, ob backquotes erforderlich sind oder nicht...

                  1. Hello,

                    was hat die Performance von MySQL-Statements mit und ohne Backticks mit PhpMyAdmin zu tun?

                    es hat damit zu tun, dass php sonst überprüfen müsste, ob backquotes erforderlich sind oder nicht...

                    Nun schimpf doch nicht so mit unserem Cheatah. ;-))

                    Den "phpMyAdmin" hat er zwar selber ins Gespräch gebracht, aber sicherlich dabei nicht daran gedacht, dass der (üblicherweise) in PHP geschrieben ist.

                    Ich habe zwar heute darüber gelesen, dass den jetzt jemand auch als C-Programm für Linux nachgebaut hätte, aber gesehen habe ich so eine Version noch nicht.

                    Ein harzliches Glückauf

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. Hi,

                      Nun schimpf doch nicht so mit unserem Cheatah. ;-))

                      kann er ruhig, wenn er einen Grund dazu sieht. Im Zweifel muss er lediglich das Echo vertragen können.

                      Den "phpMyAdmin" hat er zwar selber ins Gespräch gebracht, aber sicherlich dabei nicht daran gedacht, dass der (üblicherweise) in PHP geschrieben ist.

                      Öhm, ich glaube nicht, dass mir das entgehen würde ;-) Vielmehr bin ich nicht auf die Idee gekommen, dass jemand in einem System zur manuellen Verwaltung von DB-Schemata ein Performance-Problem sehen könnte.

                      Ich habe zwar heute darüber gelesen, dass den jetzt jemand auch als C-Programm für Linux nachgebaut hätte, aber gesehen habe ich so eine Version noch nicht.

                      Konsequenterweise müsste es dann cMyAdmin heißen ...

                      Cheatah

                      --
                      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                      X-Will-Answer-Email: No
                      X-Please-Search-Archive-First: Absolutely Yes
                      1. Hello,

                        Konsequenterweise müsste es dann cMyAdmin heißen ...

                        Da stimme ich Dir allerdings zu.
                        Sollte ich beim Gurgeln nochmal drüber nachdenken ;-)

                        Ein harzliches Glückauf

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
            2. ich meinte, dass das überprüfen, ob backquotes erforderlich sind, wahrscheinlich allein länger dauert als die datenbankabfrage selbst.

              1. Hi,

                ich meinte, dass das überprüfen, ob backquotes erforderlich sind, wahrscheinlich allein länger dauert als die datenbankabfrage selbst.

                ach so. Das halte ich für unwahrscheinlich - zumal die Menge der generierten Statements pro Vorgang gering sein dürfte. _Das_ ist nicht zeitkritisch.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
        2. Wie sagte mein Programmierdozent immer?

          'Redundante Klammern schaden nie.'

          Genauso ists mit den Backticks. Falsch sind sie nicht.

          --
          Trau Dich!
           
          1. Hello,

            Wie sagte mein Programmierdozent immer?

            'Redundante Klammern schaden nie.'

            Genauso ists mit den Backticks. Falsch sind sie nicht.

            Das ist auch meine Meinung!

            MySQL ist ursprünglich im Kinderkacke-Segment entstanden und hat daher auch zusätzliche Sicherheiten.  Die echten[tm] DMBS brauchen sowas natürlich nicht, weil sie ja nur von Profis[tm] benutzt werden, die immer wissen, was sie zu tun und zu lassen haben...

            Grüße aus Syburg

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
          2. echo $begrüßung;

            Wie sagte mein Programmierdozent immer?
            'Redundante Klammern schaden nie.'

            Und damit hat er nicht Recht. Beispiel PHP: Eine Klammer um eine Variable macht aus ihr einen Ausdruck. Auf Ausdrücke kann man nicht referenzieren.

            Genauso ists mit den Backticks. Falsch sind sie nicht.

            Kein Einwand.

            echo "$verabschiedung $name";

            1. Hi!

              Und damit hat er nicht Recht. Beispiel PHP: Eine Klammer um eine Variable macht aus ihr einen Ausdruck. Auf Ausdrücke kann man nicht referenzieren.

              Sind die Klammern dann redundant?

              --
              Trau Dich!
               
              1. echo $begrüßung;

                Und damit hat er nicht Recht. Beispiel PHP: Eine Klammer um eine Variable macht aus ihr einen Ausdruck. Auf Ausdrücke kann man nicht referenzieren.

                Sind die Klammern dann redundant?

                Dass sie in dem Fall nicht redundant sondern schlicht falsch sind, fiel mir nach dem Absenden auch ein. Es hätte ja sein können, dass du den Unterschied nicht merkst :-) Viele werden nicht wissen, dass sie mit den Klammern einen Ausdruck erstellen, der andere behandelt wird als eine einfache Variable (wenn es keinen Compiler gibt, der das wegoptimiert).

                echo "$verabschiedung $name";

          3. Hi,

            'Redundante Klammern schaden nie.'

            a = b + c;

            Da redundante Klammern nicht schaden:

            a = (b + c);

            Oder noch redundanter:
            a = ((b + c));

            oder:

            oder
            a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((b +   c))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

            usw.

            Das kann man soweit weiterführen, bis das interpretierende Programm wegen zu tiefer Verschachtelung auf die Schnauze fällt (Stack overflow, out of memory, ...).
            Aber schaden tut's ja nicht ;-)

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hello,

              oder
              a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((b +   c))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

              usw.

              Es gibt eben immer Leute, die kein Maß kennen, und alles übertreiben müssen !!!!!!!!!

              *g*
              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                Es gibt eben immer Leute, die kein Maß kennen, und alles übertreiben müssen !!!!!!!!!

                Wer hat denn übertrieben?
                Ich hab doch die Forensoftware gar nicht abstürzen lassen ... ;-)

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Hallo

                  Ich hab doch die Forensoftware gar nicht abstürzen lassen ... ;-)

                  dem sei die maximale Beitragsgröße vor :-)

                  Abgesehen davon ist unter MySQL

                  SELECT  
                      ```spalte```  
                  FROM  
                      `beispiel`
                  

                  etwas ganz anderes als

                  SELECT  
                      `spalte`  
                  FROM  
                      `beispiel`
                  

                  letzteres  bewirkt bei MySQL allerdings das gleiche wie

                  SELECT  
                      spalte  
                  FROM  
                      beispiel
                  

                  siehe Handbuch.

                  Drei ist manchmal 1, zwei ist manchmal 1 und 1 ist manchmal 0, eine ideale Ausgangsbasis für exaktes Rechnen :-)

                  Freundliche Grüße

                  Vinzenz

            2. Moin Moin!

              a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((b +   c))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));

              LISP!

              Alexander

              --
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
  2. Hallo,

    vielen Dank für die Antworten, ist nun klarer.

    viele Grüsse
    Hannes