2
respostas

update e delete

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?

2 respostas

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software