Buscar

Porque a sintaxe do mysql é diferente da sintaxe do sql do oracle?

💡 2 Respostas

User badge image

RD Resoluções

Existe uma coisa chamada SQL ANSI. ANSI é uma entidade de padronização do Estados Unidos, equivalente a ABNT nossa.

Na verdade existe uma entidade chamado ISO que é a entidade padronizadora mundial. Em geral padronizações mundial são submetidas por entidades nacionais ou macro regionais e se aprovado pelo corpo dos demais padronizadores se torna um padrão que todos devem seguir.

Apesar de comumente chamarmos de SQL ANSI, o SQL é padronizado pela ISO também. Então qualquer produto deveria seguir fielmente o que o padrão diz. Seria melhor chamar de SQL padrão.


Em muitas linguagens isto ocorre. Em SQL nunca ocorreu.

O fato é que não há nenhum produto que implemente todo o padrão SQL moderno. Até existe quem faça isto baseado em uma padronização antiga, a SQL-92 por exemplo. E obviamente vários procutos colocam coisas que não existe no padrão para seu produto se destacar. A mais recente quando escrevi esta resposta era a SQL:2016.


Existe dificuldade em implementar certas características do SQL. Em alguns o problema é a interpretação do que está no padrão. Embora a sintaxe possa ser a mesma, a semântica não é. Tem casos que o produto não se comporta bem com o padrão.

Para o básico tudo funciona igual, pelo menos na sintaxe, se não fosse assim o produto não teria a vantagem de dizer que usa SQL e que você aprendendo a linguagem já sabe usá-lo.

Neste caso SELECTFROMWHEREORDER BY e GROUP BY são padrões mesmo. LIMIT é respeitado por quase todos os produtos. Mas tem produto que não permite limitar ou usa outra sintaxe, o caso mais óbvio é o SQL Server que usa TOP como palavra chave. Tem produto que estende a sintaxe do LIMIT.

Na verdade a sintaxe é o de menos. A semântica diferente, a forma de otimizar, e outros detalhes do produto tem muito mais importância. A mesma sintaxe pode dar resultados diferentes ou ter performance absurdamente diferente em produtos diferentes.


Ou seja, o SQL é um padrão adotado pelas linguagens, ou quase um padrão. Então as duas linguagens, mySQL e SQL Oracle se baseiam no SQL.


Fonte: https://pt.stackoverflow.com/questions/252582/diferen%C3%A7a-de-sintaxe-entre-banco-de-dados

0
Dislike0
User badge image

Andrei Augusto Fransozi

5




Existe uma coisa chamada SQL ANSI.

ANSI é uma entidade de padronização do Estados Unidos, equivalente a ABNT nossa.

Na verdade existe uma entidade chamado ISO que é a entidade padronizadora mundial. Em geral padronizações mundial são submetidas por entidades nacionais ou macro regionais e se aprovado pelo corpo dos demais padronizadores se torna um padrão que todos devem seguir.

Apesar de comumente chamarmos de SQL ANSI, o SQL é padronizado pela ISO também. Então qualquer produto deveria seguir fielmente o que o padrão diz. Seria melhor chamar de SQL padrão.

Em muitas linguagens isso ocorre. Em SQL nunca ocorreu.

O fato é que não há nenhum produto que implemente todo o padrão SQL moderno. Até existe quem faça isto baseado em uma padronização antiga, a SQL-92 por exemplo. E obviamente vários produtos colocam coisas que não existe no padrão para seu produto se destacar. A mais recente quando escrevi esta resposta era a SQL:2016.

Isso se torna um problema porque um dia padroniza-se uma forma e esse produto não pode mais se conformar com o padrão.

Alguns produtos na verdade nunca ligaram para o padrão. Nunca acharam que isso era importante. Na verdade é bom para eles porque prende o cliente no produto deles. Alguns acham que eles é que devem ditar o que o padrão deve ter. Alguns enganam provendo a sintaxe que não faz nada.

Existe dificuldade em implementar certas características do SQL. Em alguns o problema é a interpretação do que está no padrão. Embora a sintaxe possa ser a mesma, a semântica não é. Tem casos que o produto não se comporta bem com o padrão.

Para o básico tudo funciona igual, pelo menos na sintaxe, se não fosse assim o produto não teria a vantagem de dizer que usa SQL e que você aprendendo a linguagem já sabe usá-lo.

Neste caso SELECTFROMWHEREORDER BY e GROUP BY são padrões mesmo. LIMIT é respeitado por quase todos os produtos. Mas tem produto que não permite limitar ou usa outra sintaxe, o caso mais óbvio é o SQL Server que usa TOP como palavra chave. Tem produto que estende a sintaxe do LIMIT.

Na verdade a sintaxe é o de menos. A semântica diferente, a forma de otimizar, e outros detalhes do produto tem muito mais importância. A mesma sintaxe pode dar resultados diferentes ou ter performance absurdamente diferente em produtos diferentes.

Por isso que é uma bobagem essas frameworks que tentam abstrair os vários SGDBs, ainda mais os que tentam fazer isto quando aceitam filosofias bem diferentes. Resolver a sintaxe é fácil, mas isto não é o mais importante.

SQL é uma das coisas mais mal criadas e conduzidas na computação, como tudo que é criado por comitês, um dos motivos de ninguém se conformar integralmente.

Note que SQL não é uma linguagem de programação, pelo menos não na sua forma básica original. Com algumas extensões a ela pode fazer o todo ser uma linguagem de programação e muitos produtos fazem isto pelo menos para suas procedures. Na verdade já mostraram que é possível mesmo SQL padrão mais moderno ser uma linguagem de programação, mas depende da implementação e tem que fazer coisas malucas para conseguir o resultado.

https://pt.stackoverflow.com/questions/252582/diferen%C3%A7a-de-sintaxe-entre-banco-de-dados

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais