¿Qué estándar SQL es más amplio y completamente compatible?

8

Quiero concentrarme en una de las especificaciones del lenguaje SQL para fines de aprendizaje y referencia. ¿Qué versión del estándar SQL es más ampliamente compatible con todos los DBMS para que pueda concentrar mi tiempo y energía en él?

mumtaz
fuente

Respuestas:

15

Creo que está tratando de vivir en el mundo de los sueños de Joe Celko, donde solo puede usar SQL estándar y en cualquier semana puede tener que transferir todo su código de SQL Server a Oracle y luego de Oracle a DB2 y luego nuevamente a SQL Server. . Dos veces.

Si bien los aspectos centrales y fundamentales del SQL estándar lo ayudarán en cualquier parte, tratar de limitarse a ese conjunto de lenguaje por temor a la portabilidad futura (o simplemente por principio) no es un camino que recomendaría. Personalmente, me apego a las cosas estándar ANSI cuando puedo (por ejemplo, <> vs.! =, COALESCE vs. ISNULL, CURRENT_TIMESTAMP vs. GETDATE (), etc.), pero tampoco tengo miedo de usar el SQL Server específico cosas que facilitan mi trabajo.

Es importante comprender cómo funciona SQL en general; Es igualmente importante entender cómo funciona el lenguaje en su RDBMS, incluidas las desviaciones del estándar, las desviaciones de la forma en que otro RDBMS podría haber implementado el mismo concepto y las extensiones propietarias que no existen en otros lugares.

SQL Server, como ejemplo, cubre una buena parte del estándar y se acerca al cumplimiento total de cada nueva versión. ¿Alguna vez cubrirá el 100%? Muy dudoso. ¿Continuará agregando extensiones propietarias que no están en el estándar? Ciertamente. Si todos cubrieran el estándar y nadie saliera de él, entonces no habría ventajas al elegir una plataforma sobre otra, y todos estaríamos usando lo mismo.

Aaron Bertrand
fuente
1
+1 Por mencionar que menos del 100% de cumplimiento no es necesariamente algo malo. Si bien la capacidad de transferir su código a varias plataformas puede parecer una gran cosa, el hecho es que eligió su RDBMS por una razón (o al menos espero que la elección fuera más que una arbitraria). En el mundo real, el costo de transferir su código a una nueva plataforma a menudo es más costoso que descubrir cómo hacerlo en su plataforma actual.
Matt M
11

Ninguno de ellos. Puede aprender SQL estándar (-ish) para cualquier RDBMS.

El SQL estándar no se usa en el mundo real para pagar trabajos en proyectos exitosos ...

Dicho esto, MySQL es un buen lugar para comenzar y aquí hay un tutorial

gbn
fuente
"El SQL estándar no se usa en el mundo real para pagar trabajos en proyectos exitosos ...", lo más tonto publicado en todo el intercambio de pila.
Jonesome Reinstate Monica
3
@samsmith ¿por qué? El hecho de que no estés de acuerdo no lo hace tonto. ¿Quizás podrías explicar por qué no estás de acuerdo, en lugar de simplemente llamarlo tonto?
Aaron Bertrand
1
@samsmith también, y especialmente si eres un voto negativo, entonces encuentro tu atractivo anterior paraconstructive guidance increíblemente hipócrita. ¿Dónde está su guía constructiva aquí para que gbn mejore su respuesta?
Aaron Bertrand
3
@samsmith Si su objetivo es un "proyecto exitoso", entonces debe aprovechar todas sus funciones RDBMS. Si no lo hace, y solo usar SQL estándar solo está desperdiciando las capacidades de su software
Lamak
1
@samsmith ¿De dónde sacas tus estadísticas para "gran%"? ¿Y qué% de los sistemas de bases de datos del mundo real están siendo diseñados por los desarrolladores de todos modos? En mi experiencia personal, y la de cada compromiso con el cliente que he tenido, todavía tengo que encontrar una tienda de SQL Server que cumpla con el estándar. Siempre. Es simplemente insensato hacerlo, independientemente de lo que tus amigos desarrolladores digan que están haciendo.
Aaron Bertrand
10

Todos los RDBMS principales admiten las diferentes versiones de la especificación SQL en diferentes grados, y las versiones anteriores de la especificación son más compatibles. No todos toman la conformidad con la misma seriedad (por ejemplo, Oracle comenzó a admitir 'uniones ansi' en 2001, casi una década después de SQL-92 ) y, como ya dijo @gbn, en la práctica debe conocer el sabor de SQL utilizado por cada producto tu usas.

Postgres es una excepción porque se enorgullece del cumplimiento de las normas . Para "fines de aprendizaje y referencia", necesita práctica práctica con una base de datos, no solo el conocimiento de un libro o estándar, y postgres es una plataforma ideal para aprender las cuerdas porque:

  1. Es gratis y está disponible en la mayoría de las plataformas.
  2. El cumplimiento de estándares antes mencionado
  3. Tiene excelente documentación
  4. Es maduro y ampliamente utilizado.
  5. Tiene muchas de las características que se encuentran en los RDBMS comerciales más populares, y algunas que no lo son.
Jack dice que intente topanswers.xyz
fuente
3

De acuerdo con Jack y gbn, no existe un estándar y debe tomar una decisión. Para hacer esta elección, primero debe seleccionar RDBMS. Recomiendo pensar en las siguientes cosas: 1) ¿quieres ser DB-developer o DBA? 2) ¿Con qué sistemas operativos desea trabajar? Estoy de acuerdo, esta pregunta es un poco extraña, pero cuando hablo con los estudiantes, dicen que es importante.

Por ejemplo (solo un ejemplo, tal vez estoy equivocado) si quiere ser un DBA y no quiere trabajar con Windows, no necesita pensar en MSSQL. Y si desea ser DBA y le gusta trabajar con cadenas de comandos y archivos de configuración, tal vez Oracle sea lo que necesita. Si quieres ser desarrollador, quieres usar tu conocimiento en proyectos independientes, ¿tal vez necesites MySQL?

Alex_L
fuente
2
Espero que estos no sean los únicos criterios que las startups usan para elegir su plataforma. :-)
Aaron Bertrand