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?
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.