Thommy: Kompatibilität von SQL DBs

Ich habe eine Frage zur Kompatibilität
von SQL-Datenbanken. Und zwar würde mich einmal interessieren,
inwieweit sich die Befehle von zum Beispiel der Oracle8i
und einer MySQL gleichen ?

Ich muss vielleicht sagen, daß ich davon ausgehe,
daß SQL wie eine Programmiersprache eben einen Befehlssatz
besitzt, den eben verschiedene Datanbanken (Oracle, Informix..)
umsetzten/interpretieren ( wie Ansi C von verschiedenen Compilern
compiliert werden kann), was dazu führt, daß man zum Beispiel
für SAP im prinzip jede SQL-Datenbank verwendne könnte.
Oder ist diese Annahme grundlegend falsch ?!

Bin für jede Aufklärung dankbar

Thommy

  1. Hi Thommy,

    Ich habe eine Frage zur Kompatibilität
    von SQL-Datenbanken. Und zwar würde mich einmal interessieren,
    inwieweit sich die Befehle von zum Beispiel der Oracle8i
    und einer MySQL gleichen ?

    Da sowohl MySQL als auch Oracle sich sehr stark an den Ansi-Standard für SQL halten, hast Du bei einem Upgrade von MySQL auf Oracle sicher fast keine Probleme. Anders sieht es aus, wenn Du alle Möglichkeiten von Oracle ausnutzt, und dann z.B. auf MySQL downgraden willst - MySQL implementiert zumindest im Moment nicht das ganze Ansi-SQL, noch schwieriger wird es natürlich, wenn Du die sehr praktischen Funktionen von Oracle verwendest, die nicht Teil des normalen SQL-Standards sind (naja, dafür kauft man Oracle ja normalerweise). Generell gilt: Bei normalen selects, inserts oder updates wirst du keine probleme haben, die kommen erst mit solchen Dingen wie subselects, group by oder dem Gebrauch von Funktionen in SQL-Statements.
    (Eine Ausnahme ist wie fast immer MSSQL: unsinnigerweise hat MS z.B. die Syntax für delete um einen * verändert...)

    Ich muss vielleicht sagen, daß ich davon ausgehe,
    daß SQL wie eine Programmiersprache eben einen Befehlssatz
    besitzt, den eben verschiedene Datanbanken (Oracle, Informix..)
    umsetzten/interpretieren ( wie Ansi C von verschiedenen Compilern
    compiliert werden kann), was dazu führt, daß man zum Beispiel
    für SAP im prinzip jede SQL-Datenbank verwendne könnte.
    Oder ist diese Annahme grundlegend falsch ?!

    Die Annahme ist richtig, SQL ist auch ein Ansi-Standard, gegenüber C hast Du aber wohl das Problem, daß viele dbs nur eine Teilmenge implementieren (schlicht und einfach wegen der Komplexität), und das normale Problem, daß sich viele Entwickler in einigen Teilbereichen einfach denken 'naja, Standard hin oder her, das wäre eine viel bessere Lösung...' - und damit ist die Kompatibilität hin.

    Viele Grüße
    Stephan

    1. Danke !
      sehr aufschlussreich ! und das M$ den SQL Standard wieder
      verunreinigt hätte ich mir ja fast wieder denken können.

      Eins frage ich mich dann aber noch: Wenn jeder Hersteller
      viele eigene Sonderfunktionen einbaut, weist das ja auf
      einen sehr Lückenhaften Ansi SQL Standard hin oder kann
      man das nicht sagen ?

      thx

      1. Hallo Thommy,

        Eins frage ich mich dann aber noch: Wenn jeder Hersteller
        viele eigene Sonderfunktionen einbaut, weist das ja auf
        einen sehr Lückenhaften Ansi SQL Standard hin oder kann
        man das nicht sagen ?

        Naja, der Standard ist insofern lückenhaft, wie jeder Standard Probleme hat, mit der technischen Entwicklung mitzuhalten - der letzte ist SQL92, aus dem entsprechenden Jahr (im Moment wird soweit ich weiß gerade über SQL3 gestritten). Da sich die Anforderungen an eine db seitdem auch verändert haben, bleibt einem in der Zwischenzeit wohl nichts anderes, als eigene Sonderfunktionen einzubauen, und zu hoffen, daß die dann in die nächste Version von Ansi-SQL aufgenommen werden (Analogie: bei Browsern war das ja teilweise auch der Fall, teilweise wurden Erweiterungen implementiert, die erst später Teil der vom W3C-Konsortium abgesegneten Standards wurden, z.B. JavaScript)

        Viele Grüße
        Stephan