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?

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.


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


"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

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?


2
Espero que esses não sejam os únicos critérios usados ​​pelas startups para escolher sua plataforma. :-)
— Aaron Bertrand
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.