Quale standard SQL è ampiamente e completamente supportato?


8

Voglio concentrarmi su una delle specifiche del linguaggio SQL a fini di apprendimento e di riferimento. Quale versione dello standard SQL è ampiamente supportata su tutti i DBMS in modo da poter concentrare il mio tempo ed energia su di esso?

Risposte:


15

Penso che tu stia provando a vivere nel mondo dei sogni di Joe Celko dove puoi usare solo SQL standard e in una determinata settimana potresti dover portare tutto il tuo codice da SQL Server a Oracle e quindi Oracle a DB2 e poi di nuovo a SQL Server . Due volte.

Mentre gli aspetti fondamentali e fondamentali dell'SQL standard ti aiuteranno ovunque, cercare di limitarti a quel set di linguaggio per paura del futuro porting (o solo per principio) non è un percorso che consiglierei. Personalmente, mi attengo alle cose standard ANSI quando posso (ad esempio <> vs.! =, COALESCE vs. ISNULL, CURRENT_TIMESTAMP vs. GETDATE (), ecc.), Ma non ho nemmeno paura di usare lo specifico SQL Server cose che mi semplificano il lavoro.

È importante capire come funziona SQL in generale; è altrettanto importante capire come funziona la lingua nei tuoi RDBMS - comprese le deviazioni dallo standard, le deviazioni dal modo in cui un altro RDBMS potrebbe aver implementato lo stesso concetto e le estensioni proprietarie che non esistono altrove.

SQL Server, ad esempio, copre buona parte dello standard e si avvicina alla piena conformità con ogni nuova versione. Coprirà mai il 100%? Altamente dubbioso. Continuerà ad aggiungere estensioni proprietarie non nello standard? Certamente. Se tutti coprissero lo standard e nessuno ne uscisse, allora non ci sarebbero vantaggi nella scelta di una piattaforma piuttosto che di un'altra, e tutti useremmo la stessa cosa.


1
+1 Per menzionare che una conformità inferiore al 100% non è necessariamente una cosa negativa. Mentre la possibilità di trasferire il tuo codice su varie piattaforme potrebbe sembrare una cosa grandiosa, il fatto è che hai scelto il tuo RDBMS per un motivo (o almeno spero che la scelta sia stata più di una semplice scelta arbitraria). Nel mondo reale, il costo del porting del codice su una nuova piattaforma è spesso più costoso che capire come farlo sulla piattaforma attuale.
Matt M

11

Nessuno di loro. Puoi imparare l'SQL standard (-ish) per qualsiasi RDBMS.

SQL standard non viene utilizzato nel mondo reale per pagare lavori su progetti di successo ...

Detto questo, MySQL è un buon punto di partenza ed ecco un tutorial


"SQL standard non viene utilizzato nel mondo reale per pagare lavori su progetti di successo ..." - la cosa più sciocca pubblicata su tutto lo scambio di stack.
Jonesome ripristina Monica il

3
@samsmith perché? Solo perché non sei d'accordo non lo rende sciocco. Forse potresti spiegare perché non sei d'accordo, invece di chiamarlo sciocco?
Aaron Bertrand

1
@samsmith anche, e soprattutto se sei il voto negativo, trovo il tuo precedente appello perconstructive guidance incredibilmente ipocrita. Dov'è la tua guida costruttiva qui per gbn per migliorare la sua risposta?
Aaron Bertrand

3
@samsmith Se l'obiettivo è un "progetto di successo", allora avete bisogno di approfittare di tutte le funzionalità RDBMS. Non riuscendo a farlo, e usare solo l'SQL standard significa solo sprecare le capacità del tuo software
Lamak

1
@samsmith Dove prendi le tue statistiche per "% grande"? E quale% dei sistemi di database del mondo reale viene comunque progettata dagli sviluppatori? Nella mia esperienza personale e in quella di ogni impegno con i clienti che abbia mai avuto, devo ancora imbattermi in un negozio di SQL Server che aderisce allo standard. Mai. È semplicemente stupido farlo, indipendentemente da ciò che i tuoi amici sviluppatori affermano di fare.
Aaron Bertrand

10

Tutti i principali RDBMS supportano le diverse versioni della specifica SQL in misura diversa, con le versioni precedenti della specifica più supportate. Non tutti prendono la conformità allo stesso modo sul serio (ad esempio, Oracle ha iniziato a supportare "ansi joins" nel 2001, quasi un decennio dopo SQL-92 ), e come già detto da @gbn, in pratica è necessario conoscere il sapore dell'SQL utilizzato da ciascun prodotto usate.

Postgres è un'eccezione in quanto "è orgoglioso della conformità agli standard" . Per "scopi di apprendimento e di riferimento", è necessaria una pratica pratica con un database, non solo la conoscenza di un libro o di uno standard, e Postgres è una piattaforma ideale per imparare le corde perché:

  1. È gratuito e disponibile sulla maggior parte delle piattaforme
  2. La conformità alle norme sopra menzionate
  3. Ha un'ottima documentazione
  4. È maturo e ampiamente usato
  5. Ha molte delle funzionalità che si trovano nei RDBMS commerciali più popolari e molte altre no

3

D'accordo con Jack e gbn, non esiste uno standard e devi fare una scelta. Per fare questa scelta, devi prima selezionare RDBMS. Consiglierei di pensare alle seguenti cose: 1) vuoi essere DB-developer o DBA? 2) Con quali sistemi operativi vuoi lavorare? Sono d'accordo, questa domanda è un po 'strana, ma quando parlo con gli studenti, dicono che è importante.

Ad esempio (solo un esempio, forse mi sbaglio) se vuoi essere un DBA e non vuoi lavorare con Windows, non devi pensare a MSSQL. E se vuoi essere DBA e ti piace lavorare con la stringa di comando e i file di configurazione, forse Oracle è ciò di cui hai bisogno. Se vuoi diventare sviluppatore vuoi usare le tue conoscenze in progetti freelance, forse hai bisogno di MySQL?


2
Spero che questi non siano gli unici criteri utilizzati dalle startup per scegliere la loro piattaforma. :-)
Aaron Bertrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.