Max: Anpassbarkeit der Kommandos an versch. DBs

Hallo!

Ich hab bisher meine Web-Projekte mit Perl/MySQL entwickelt und dachte mir naiverweise, dass die Syntax bei allen SQL-Systemen gleich sei. Pustekuchen, wie ich neulich feststellen musste. Weiß jemand, wo es eine Übersicht über die wichtigsten SQL-Kommandos (select, insert, delete, tabellen erzeugen/löschen, einträge ändern) der verschiedenen Systeme (mysql, mmsql, mssql, oracle, etc.) gibt? Gibt es eventuell im Perl-DBI-Modul eine Funktion, die die Kommandos und die verschiedenen Arten von Typen (wie z.b. varchar, int, etc.) automatisch an die DBI-Treiber anpasst?

Danke,

Max

  1. Hi, hallo

    wahnsinns Erkenntnis hast du da gemacht ;-)

    Es gibt einen SQL Standart  SQL ANSI '92  auf den sich eigentlich die meisten aktuell verfügbaren DBMS beziehen sollten. Der beinhaltet die Basics wie SELECT WHERE FROM ORDER .....

    Darüber hinaus hat jedes DBMS seinen eigenen Dialekt!! z.b.

    Micsoft = Transact-SQL (T-SQL)
    Oracle = PL/SQL

    Ich hab irgendwo mal einen Vergleich verschiedener SQL-Funktionen zwischen Mickysoft und Oracle im Netz gesehen ... irgendwie mit Google nach "Oracle Replace SQL" gesucht ...

    am besten du liest dir mal die Dokus und Referenzen im Netz zu den jeweiligen DBMS durch. zu Oracle gibts auch viele eBooks.

    Tschau, tschüß,
    Frank

    1. Hi Frank aus Ulm,

      Darüber hinaus hat jedes DBMS seinen eigenen Dialekt!! z.b.
      Micsoft = Transact-SQL (T-SQL)
      Oracle = PL/SQL

      sorry, aber PL/SQL hat IMHO mit "SQL-Dialekt" genau _nichts_ zu tun.

      Sicherlich hat Oracle auch seinen eigenen SQL-Dialekt (alleine die Optionen von CREATE TABLE sind eine Wissenschaft für sich ...), aber PL/SQL ist eine 3GL, in welche der Oracle-SQL-Dialekt als Teilmenge eingebettet ist, mit der man aber zusätzlich auch algorithmische Programme schreiben kann (und insbesondere trigger und stored procedures). Also ungefähr eine Obermenge aus Oracle-SQL und etwas Ähnlichem wie PASCAL.

      Viele Grüße
            Michael

      --
      T'Pol: I apologize if I acted inappropriately.
      V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
      (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
       => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
      Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
      1. Hi, hallo

        Hi Frank aus Ulm,

        "Frank" würde ausreichen .. ich bin mal so frei :-)

        von mir aus auch so. Für mich definiere ich PL/SQL als Dialekt-Pendant zu anderen SQL Dialekten.

        Ändert aber nichts an der Tatsache, daß sich an dieser Stelle DBMSse unterscheiden, teils recht gewaltig.

        Aber was ist 3GL, 4GL ... hab ich irgendwo nicht aufgepasst ... sollte ich diese Abkürzung kennen? (als Profi ;-) ??)

        Viele Grüße, Frank

        1. Hi Frank,

          "Frank" würde ausreichen .. ich bin mal so frei :-)

          sorry - ich mache mir die Segnungen dieses wunderbaren Forums manchmal etwas gedankenlos zunutze.

          Aber was ist 3GL, 4GL ... hab ich irgendwo nicht aufgepasst ... sollte ich diese Abkürzung kennen? (als Profi ;-) ??)

          Ich verwende diese Bezeichnungen für Programmiersprachen der 3. und 4. Generation (algorithmisch bzw. deskriptiv).
          PL/SQL kann Schleife und Vergleiche verwenden, beschreibt also den _Weg_ zur Berechnung eines Ergebnisses; (reines) SQL (ohne "hints" und ähnliche Sauereien ...) beschreibt lediglich die _Eigenschaften_ des Ergebnisses und überläßt die Algorithmuswahl dem Codegenerator des RDBMS.
          (3GL ist "was will ich tun", 4GL ist "was will ich haben".)

          Viele Grüße
                Michael

          --
          T'Pol: I apologize if I acted inappropriately.
          V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
          (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
           => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
          Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
          1. Hi, hallo

            moin :-)

            auf 3. Generation hatte ich fast schon getippt, aber das Thema 3G ist ja woanders etwas präsenter :-)

            Aber danke für die Aufklärung... !!

            Tschau, bis demnext mal wieder.

            Frank