Welcher SQL-Standard wird am umfassendsten und vollständigsten unterstützt?


8

Ich möchte mich zu Lern- und Referenzzwecken auf eine der SQL-Sprachspezifikationen konzentrieren. Welche Version des SQL-Standards wird von DBMS am umfassendsten unterstützt, damit ich meine Zeit und Energie darauf konzentrieren kann?

Antworten:


15

Ich denke, Sie versuchen, in der Traumwelt von Joe Celko zu leben, in der Sie nur Standard-SQL verwenden können. In einer bestimmten Woche müssen Sie möglicherweise Ihren gesamten Code von SQL Server nach Oracle und dann von Oracle nach DB2 und dann wieder zurück zu SQL Server portieren . Zweimal.

Während die Kern- und Grundaspekte von Standard-SQL Ihnen überall helfen werden, ist der Versuch, sich aus Angst vor einer zukünftigen Portierung (oder nur aus Prinzip) auf diese Sprache zu beschränken, kein von mir empfohlener Weg. Persönlich halte ich mich an ANSI-Standard, wenn ich kann (z. B. <> vs.! =, COALESCE vs. ISNULL, CURRENT_TIMESTAMP vs. GETDATE () usw.), aber ich habe auch keine Angst davor, SQL Server-spezifisch zu verwenden Sachen, die mir die Arbeit erleichtern.

Es ist wichtig zu verstehen, wie SQL im Allgemeinen funktioniert. Ebenso wichtig ist es, die Funktionsweise der Sprache in Ihren RDBMS zu verstehen - einschließlich Abweichungen vom Standard, Abweichungen von der Art und Weise, wie ein anderes RDBMS möglicherweise dasselbe Konzept implementiert hat, und proprietäre Erweiterungen, die an keiner anderen Stelle vorhanden sind.

Beispielsweise deckt SQL Server einen Großteil des Standards ab und nähert sich der vollständigen Konformität mit jeder neuen Version. Wird es jemals 100% abdecken? Sehr zweifelhaft. Wird es weiterhin proprietäre Erweiterungen hinzufügen, die nicht im Standard enthalten sind? Bestimmt. Wenn alle den Standard abdecken würden und niemand außerhalb des Standards treten würde, hätte die Auswahl einer Plattform gegenüber einer anderen keine Vorteile, und wir würden alle dasselbe verwenden.


1
+1 Zu erwähnen, dass weniger als 100% Compliance nicht unbedingt eine schlechte Sache ist. Die Möglichkeit, Ihren Code auf verschiedene Plattformen zu portieren, scheint zwar eine großartige Sache zu sein, aber die Tatsache ist, dass Sie Ihr RDBMS aus einem bestimmten Grund ausgewählt haben (oder zumindest hoffe ich, dass die Auswahl mehr als nur eine willkürliche war). In der realen Welt sind die Kosten für die Portierung Ihres Codes auf eine neue Plattform häufig höher als die Kosten für die aktuelle Plattform.
Matt M

11

Keines von denen. Sie können Standard-SQL (-ish) für jedes RDBMS lernen.

Standard-SQL wird in der realen Welt nicht zum Bezahlen von Jobs für erfolgreiche Projekte verwendet ...

Davon abgesehen ist MySQL ein guter Anfang und hier ist ein Tutorial


"Standard-SQL wird in der realen Welt nicht verwendet, um Aufträge für erfolgreiche Projekte zu bezahlen ..." - die dümmste Sache, die auf dem gesamten Stapelaustausch veröffentlicht wurde.
Jonesome Reinstate Monica

3
@samsmith warum? Nur weil Sie nicht zufällig zustimmen, wird es nicht albern. Vielleicht könnten Sie erklären, warum Sie nicht einverstanden sind, anstatt es nur albern zu nennen?
Aaron Bertrand

1
@samsmith auch, und vor allem, wenn Sie die Abwahl sind, dann finde ich Ihren vorherigen Appell fürconstructive guidance unglaublich scheinheilig. Wo ist Ihre konstruktive Anleitung für gbn, um seine Antwort zu verbessern?
Aaron Bertrand

3
@samsmith Wenn Ihr Ziel ist ein „erfolgreiches Projekt“ ist, dann Sie müssen alle Vorteile Ihrer RDBMS - Funktionen nutzen. Wenn Sie dies nicht tun und nur Standard-SQL verwenden, verschwenden Sie nur die Funktionen Ihrer Software
Lamak,

1
@samsmith Woher bekommst du deine Statistiken für "große%"? Und wie viel Prozent der realen Datenbanksysteme werden überhaupt von Entwicklern entworfen? Nach meiner persönlichen Erfahrung und bei jedem Kundenengagement, das ich jemals hatte, bin ich noch nicht auf einen SQL Server-Shop gestoßen, der dem Standard entspricht. Je. Es ist einfach tollkühn, dies zu tun, unabhängig davon, was Ihre Entwicklerfreunde behaupten.
Aaron Bertrand

10

Alle wichtigen RDBMS unterstützen die verschiedenen Versionen der SQL-Spezifikation in unterschiedlichem Maße, wobei die älteren Versionen der Spezifikation vollständiger unterstützt werden. Nicht alle nehmen die Konformität gleich ernst (Oracle hat beispielsweise 2001, fast ein Jahrzehnt nach SQL-92 , mit der Unterstützung von "ansi joins" begonnen ), und wie @gbn bereits sagte, müssen Sie in der Praxis die von jedem Produkt verwendete SQL- Version kennen Sie nutzen.

Postgres ist insofern eine Ausnahme, als es "stolz auf die Einhaltung von Standards ist" . Für "Lern- und Referenzzwecke" benötigen Sie praktische Übungen mit einer Datenbank, nicht nur Kenntnisse aus einem Buch oder Standard, und postgres ist eine ideale Plattform, um die Seile zu lernen, weil:

  1. Es ist kostenlos und auf den meisten Plattformen verfügbar
  2. Die oben genannten Normen entsprechen
  3. Es hat eine ausgezeichnete Dokumentation
  4. Es ist ausgereift und weit verbreitet
  5. Es verfügt über viele der Funktionen, die in den beliebtesten kommerziellen RDBMS enthalten sind, und einige, die dies nicht sind

3

In Übereinstimmung mit Jack und gbn gibt es keinen Standard und Sie müssen eine Wahl treffen. Um diese Auswahl zu treffen, müssen Sie zuerst RDBMS auswählen. Ich würde empfehlen, über folgende Dinge nachzudenken: 1) Möchten Sie DB-Entwickler oder DBA werden? 2) Mit welchen Betriebssystemen möchten Sie arbeiten? Ich stimme zu, diese Frage ist wenig seltsam, aber wenn ich mit Studenten spreche, sagen sie, dass es wichtig ist.

Zum Beispiel (nur zum Beispiel, vielleicht irre ich mich), wenn Sie ein DBA sein und nicht mit Windows arbeiten möchten, müssen Sie nicht an MSSQL denken. Und wenn Sie DBA sein möchten und gerne mit Befehlszeichenfolgen und Konfigurationsdateien arbeiten möchten, ist Oracle möglicherweise das, was Sie brauchen. Wenn Sie Entwickler werden möchten und Ihr Wissen in freiberuflichen Projekten einsetzen möchten, benötigen Sie möglicherweise MySQL?


2
Ich hoffe, dass dies nicht die einzigen Kriterien sind, nach denen Startups ihre Plattform auswählen. :-)
Aaron Bertrand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.