Boa noite caros colegas. Alguém poderia me explicar o porque que eu uso o FROM junto ao DELETE, e não uso o FROM junto ao UPDATE?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite caros colegas. Alguém poderia me explicar o porque que eu uso o FROM junto ao DELETE, e não uso o FROM junto ao UPDATE?
A sintaxe do SQL é definida pela International Organization for Standardization pela norma ISO/IEC 9075-1 que é revista a cada 5 anos. Estamos atualmente na ISO/IEC 9075-1:2016 então a próxima revisão será em 2021. A ISO define todos os padrões que você imagina na vida, padrão de parafuso, de instalação elétrica, dimensões de uma cadeira e tudo mais.
Os padrões servem para que se facilite a vida dos desenvolvedores para não ter que se preocupar com vários padrões de parafuso ou com vários padrões de instalação elétrica e por aí vai. Porém mesmo com a ISO as empresas resolvem às vezes fazer diferente por estratégias de mercado, só ver os conectores de celular, tem muitos padrões.
Cada norma é revista/feita por um comitê de pessoas especializadas no assunto. Essas normas são pagas mas dá para ver um preview aqui da ISO/IEC 9075-1:2016 https://www.iso.org/obp/ui/#iso:std:iso-iec:9075:-1:ed-5:v1:en .
Na internet até se consegue achar uma versão de estudante da ISO 9000 (Gestão da Qualidade e Garantia da Qualidade) para baixar mas a ISO/IEC 9075-1 não.
Em empresas que possuem controle de qualidade é comum que para ser certificadas pelo órgão auditor de qualidade (o INMETRO é um exemplo) tenha que ter impresso ou salvo em mídia digital as normas vigentes sobre o negócio da empresa.
Então na auditoria do controle de qualidade das empresas criadoras de software de banco de dados é obrigatório seguir as regras da norma.
Então apenas para manter os códigos sempre no padrão e compatíveis desde quando o SQL foi criado em 1974 a ISO resolveu manter dessa forma a sintaxe, mas poderia ser escrito de qualquer forma. Porém hoje segue esse padrão pelos motivos que citei.
Oi Renan, Acho que o André deu boa explicação do motivo. Mas sendo prático, quando você executa uma instrução de DELETE você fala pro banco: delete as linhas da tabela TABELA_1 quando encontrar na coluna COLUNA_ID o valor 1.
Se você traduzir o Statement do inglês para português realmente: delete(delete) from(da) TABELA_1 where(onde) COLUNA_ID =(é igual a) 1
//Inglês
DELETE
FROM TABELA_1
WHERE COLUNA_ID = 1;
//Português
DELETE
DA TABELA_1
ONDE COLUNA_ID = 1;Mas em alguns bancos o uso do FROM não é necessário para executar o comando com sucesso. No Microsoft SQL Server por exemplo você consegue deletar linhas utilizando ambos os comandos abaixo.
DELETE
FROM TABELA_1
WHERE COLUNA_ID = 1;
// Ou
DELETE TABELA_1
WHERE COLUNA_ID = 1;Se você traduzir do inglês para o português o comando UPDATE verá que também faz sentido. Atualize a tabela TABELA_1, setando na coluna PRECO o valor 50 quando encontrar na coluna COLUNA_ID o valor 1.
//Inglês
UPDATE TABELA_1
SET PRECO= 50
WHERE COLUNA_ID = 1;
//Português
ATUALIZE TABELA_1
ALTERADO VALOR = 50
ONDE COLUNA_ID = 1;No SQL Server você também consegue fazer um UPDATE utilizando FROM. Exemplo:
/*Esse primeiro exemplo não é muito usado em updates normais, é mais utilizando quando você precisa fazer um join com outra tabela mas só irá atualizar uma delas*/
UPDATE TABELA_1
SET PRECO = 50
FROM TABELA_1
WHERE COLUNA_ID = 1;
// Ou
UPDATE TABELA_1
SET PRECO = 50
WHERE COLUNA_ID = 1;Ambos os exemplos acima funcionam no SQL Server.
Lembrando que cada banco tem suas particularidades alguns aceitando algumas coisas, outros não. No Oracle não é diferente, mas o importante é que a maioria segue o padrão ISO.