Qual padrão SQL é mais amplo e completamente suportado?

8

Quero me concentrar em uma das especificações da linguagem SQL para fins de aprendizado e referência. Qual versão do padrão SQL é mais amplamente suportada nos DBMS, para que eu possa concentrar meu tempo e energia nela?

mumtaz
fonte

Respostas:

15

Eu acho que você está tentando viver no mundo dos sonhos de Joe Celko, onde você só pode usar o SQL padrão e, em qualquer semana, pode ser necessário portar todo o seu código do SQL Server para o Oracle e, em seguida, do Oracle para o DB2 e depois voltar para o SQL Server novamente . Duas vezes.

Embora os aspectos principais e fundamentais do SQL padrão o ajudem em qualquer lugar, tentar limitar-se a esse conjunto de idiomas por medo de futuras portagens (ou apenas por princípio) não é um caminho que eu recomendaria. Pessoalmente, eu adiro ao padrão ANSI quando posso (por exemplo, <> vs.! =, COALESCE vs. ISNULL, CURRENT_TIMESTAMP vs. GETDATE () etc.), mas também não tenho medo de usar o SQL Server específico coisas que facilitam meu trabalho.

É importante entender como o SQL funciona em geral; é igualmente importante entender como o idioma funciona no (s) seu (s) RDBMS (s) - incluindo desvios do padrão, desvios da maneira como outro RDBMS pode ter implementado o mesmo conceito e extensões proprietárias que não existem em outros lugares.

O SQL Server, por exemplo, cobre uma boa parte do padrão e fica mais próximo da total conformidade com cada nova versão. Será que nunca vai cobrir 100%? Altamente duvidoso. Continuará a adicionar extensões proprietárias que não estão no padrão? Certamente. Se todo mundo cobrisse o padrão e ninguém saísse dele, não haveria vantagens em escolher uma plataforma em vez de outra, e todos estaríamos usando a mesma coisa.

Aaron Bertrand
fonte
11
+1 Por mencionar que menos de 100% de conformidade não é necessariamente uma coisa ruim. Embora a capacidade de portar seu código para várias plataformas possa parecer uma grande coisa, o fato é que você escolheu seu RDBMS por um motivo (ou pelo menos espero que a escolha tenha sido mais do que arbitrária). No mundo real, o custo de transferir seu código para uma nova plataforma geralmente é mais caro do que descobrir como fazê-lo na plataforma atual.
Matt M
11

Nenhum deles. Você pode aprender SQL (-ish) padrão para qualquer RDBMS.

O SQL padrão não é usado no mundo real para pagar trabalhos em projetos de sucesso ...

Dizendo isso, o MySQL é um bom lugar para começar e aqui está um tutorial

gbn
fonte
"O SQL padrão não é usado no mundo real para pagar trabalhos em projetos bem-sucedidos ..." - a coisa mais absurda publicada em todas as trocas de pilhas.
Jonesome Restabelece Monica
3
@samsmith porque? Só porque você não concorda, não é bobagem. Talvez você possa explicar por que discorda, em vez de apenas chamá-lo de bobo?
Aaron Bertrand
11
@samsmith também, e especialmente se você é um voto negativo, acho seu apelo anteriorconstructive guidance incrivelmente hipócrita. Onde está sua orientação construtiva aqui para o gbn melhorar sua resposta?
Aaron Bertrand
3
@samsmith Se seu objetivo é um "projeto bem-sucedido", você precisa aproveitar todos os recursos do RDBMS. Deixar de fazer isso, e apenas usar o SQL padrão está apenas desperdiçando recursos do seu software
Lamak
11
@samsmith Onde você está obtendo suas estatísticas para "% grande"? E que% dos sistemas de banco de dados do mundo real estão sendo projetados pelos desenvolvedores? Na minha experiência pessoal e em todos os engajamentos de clientes que já tive, ainda não encontrei uma loja do SQL Server que cumpra o padrão. Sempre. É simplesmente imprudente fazê-lo, independentemente do que seus amigos desenvolvedores afirmam que estão fazendo.
Aaron Bertrand
10

Todos os principais RDBMSs suportam as diferentes versões da especificação SQL em diferentes graus, com as versões mais antigas da especificação mais totalmente suportadas. Nem todos levam a conformidade igualmente a sério (por exemplo, a Oracle começou a oferecer suporte a 'ansi joins' em 2001, quase uma década após o SQL-92 ) e, como o @gbn já disse, na prática, você precisa conhecer o sabor do SQL usado por cada produto você usa.

O Postgres é uma exceção, pois "se orgulha da conformidade com os padrões" . Para "fins de aprendizado e referência", você precisa de prática prática com um banco de dados, não apenas conhecimento de um livro ou padrão, e o postgres é uma plataforma ideal para aprender as cordas porque:

  1. É gratuito e está disponível na maioria das plataformas
  2. A conformidade com os padrões acima mencionados
  3. Possui excelente documentação
  4. É maduro e amplamente utilizado
  5. Ele possui muitos dos recursos encontrados nos RDBMSs comerciais mais populares e alguns que não são
Jack diz que tenta topanswers.xyz
fonte
3

Concordado com Jack e gbn, não há um padrão e você precisa fazer uma escolha. Para fazer essa escolha, você precisa selecionar o RDBMS primeiro. Eu recomendo pensar nas seguintes coisas: 1) você quer ser desenvolvedor de banco de dados ou DBA? 2) Com quais sistemas operacionais você deseja trabalhar? Eu concordo, essa pergunta é um pouco estranha, mas quando falo com os alunos, eles dizem que é importante.

Por exemplo (apenas exemplo, talvez eu esteja errado) se você quer ser um DBA e não quer trabalhar com o Windows, não precisa pensar no MSSQL. E se você quer ser DBA e gosta de trabalhar com cadeia de comando e arquivos de configuração - talvez o Oracle seja o que você precisa. Se você quer ser desenvolvedor, quer usar seu conhecimento em projetos freelancers, talvez precise do MySQL?

Alex_L
fonte
2
Espero que esses não sejam os únicos critérios usados ​​pelas startups para escolher sua plataforma. :-)
Aaron Bertrand