MySQL – Como inserir uma nova linha somente se os dados não existirem

Mysql Como Inserir Uma Nova Linha Somente Se Os Dados Nao Existirem



MySQL é um famoso RDBMS de código aberto para armazenar dados em bancos de dados. Inserir dados nas tabelas do seu banco de dados é uma tarefa comum. Às vezes, os usuários não desejam inserir dados duplicados para eliminar a redundância. O MySQL permite que os usuários insiram dados apenas se dados semelhantes ainda não existirem.

Esta postagem discutirá a inserção de uma nova linha somente se os dados ainda não existirem na tabela MySQL. Antes de começar com este post, certifique-se de estar logado em seu servidor local MySQL e de ter escolhido um banco de dados onde deseja trabalhar.

Inserir uma nova linha somente se os dados não existirem usando a instrução “INSERT IGNORE”

Bem, a resposta para a pergunta do título é bastante simples e direta. Basta usar o “ INSERIR ” junto com a palavra-chave “ IGNORAR ” Palavra-chave. Isso garantirá que os novos dados ou a consulta de inserção sejam executados apenas quando nenhuma entrada anterior dos dados for encontrada no MySQL. Para obter uma breve visão geral disso, dê uma olhada na seguinte sintaxe:







INSERIR IGNORAR EM [ mesa - nome ] ( [ coluna1 - nome ] , [ coluna2 - nome ] , [ coluna3 - nome ] ) VALORES ( [ valor1 ] , [ valor2 ] , [ valor3 ] ) ;

Vejamos um exemplo se o usuário deseja inserir um valor de linha “ 1 ”, “ John ' e ' Corça ' no ' Cliente ” tabela para as colunas “ Eu ia ,”“ Primeiro nome ' e ' Sobrenome ” respectivamente. Execute esta consulta para inserir esses valores, se houver, se nenhuma linha com esses valores já existir:



SELECIONE * DE Cliente;
INSERIR IGNORAR EM Cliente ( Eu ia , Primeiro nome , Sobrenome ) VALORES ( 1 , 'John' , 'Corça' ) ;

A saída contém duas tabelas exibindo os dados da tabela antes e depois da execução da consulta. Você pode notar que nada está mudando na tabela porque a linha já existia, então o MySQL ignorou com sucesso o processo de inserção sem exibir o erro:







Inserir uma nova linha somente se os dados não existirem usando a cláusula “WHERE NOT EXISTS”

No MySQL, o “ ONDE NÃO EXISTE ” impede a inserção de linhas se elas já existirem na tabela quando é usada na cláusula “ INSIRA DENTRO DE ” com uma subconsulta para definir uma condição. Quando esta cláusula é usada com a subconsulta “ (SELECT * FROM [nome da tabela] [nome da coluna]=[expressão]); ” verifica se existe uma linha na tabela que atende à condição. Se existir uma linha, o “ ONDE NÃO EXISTE ” retornará um valor falso, e a cláusula “ SELECIONE ” não retornará nenhuma linha. Como resultado, a linha não será inserida na tabela. A sintaxe é fornecida abaixo:

INSERIR EM [ mesa - nome ] ( [ coluna1 - nome ] , [ coluna2 - nome ] , [ coluna3 - nome ] )
SELECIONE [ valor1 ] , [ valor2 ] , [ valor3 ]
ONDE NÃO EXISTE ( SELECIONE * DE [ mesa - nome ] [ coluna - nome ] = [ expressão ] ) ;

Vejamos um exemplo caso o usuário queira inserir uma linha na tabela de funcionários contendo os valores “ 1 ”, “ americano ' e ' Henriot ” nas colunas “ eu ia ”, “ Nome da empresa ' e ' Nome de contato ” respectivamente. Mas somente se uma linha com um id de “ 1 ” não é encontrado na tabela ou não existe. Nesse caso específico, a consulta se tornará:



SELECIONE * DE funcionário;

INSERIR EM funcionário ( eu ia , Nome da empresa , Nome de contato )
SELECIONE 1 , 'Americano' , 'Henriot'
ONDE NÃO EXISTE ( SELECIONE * DE funcionário ONDE eu ia = 1 ) ;

A saída exibe uma nova linha que não foi inserida como a linha com o “ eu ia ' igual a ' 1 ” já existia.

Inserir uma nova linha somente se os dados não existirem usando a cláusula “ON DUPLICATE KEY UPDATE”

Bem, outra maneira é usar o “ NA ATUALIZAÇÃO DE CHAVE DUPLICADA ” cláusula no MySQL. Pois esta cláusula será utilizada com a consulta “INSERT INTO” formando uma execução “if-else”. Então isso significa que os dados dentro da tabela só serão atualizados se forem únicos. Caso contrário, nenhuma mudança ocorreria. A sintaxe geral para isso é a seguinte:

INSERIR EM [ mesa - nome ] ( [ coluna1 - nome ] , [ coluna2 - nome ] , [ coluna3 - nome ] ) VALORES ( [ valor1 ] , [ valor2 ] , [ valor3 ] )
SOBRE DUPLICADO CHAVE ATUALIZAR [ coluna1 - nome ] = [ coluna1 - nome ] ;

Vejamos um exemplo, para inserir valores em “ 2 ”, “ Pascale ”, “ Nixon ”, “ Londres ”, “ Reino Unido ' e “(171) 555-7788 ' na mesa ' Cliente ” para as colunas “ Eu ia ”, “ Primeiro nome ”, “ Sobrenome ”, “ cidade ”, “ país ' e ' telefone ” respectivamente. Se a linha ainda não existir, ela será inserida. Caso contrário, atualizará os valores onde o “ Id=Id ” condição atende. Execute esta consulta:

SELECIONE * DE Cliente ;
INSERIR EM Cliente ( Eu ia , Primeiro nome , Sobrenome , cidade , país , telefone )
VALORES ( 2 , 'Pascale' , 'Nixon' , 'Londres' , 'REINO UNIDO' , '(171) 555-7788' )
SOBRE DUPLICADO CHAVE ATUALIZAR Eu ia = Eu ia;

Esta é a tabela antes de executar a consulta, você pode ver “ Eu ia ' igual a ' 2 ' não existe:

Depois de executar a consulta, esta consulta irá inserir novas linhas na tabela:

Você inseriu com sucesso uma nova linha, pois os dados não existem antes de executar a consulta.

Conclusão

No MySQL, insira uma nova linha somente se os dados ainda não existirem usando o comando “ INSERIR IGNORAR ” declaração ou “ ONDE NÃO EXISTE ” cláusula no “ INSIRA DENTRO DE ' declaração. Outra maneira de fazer isso é usando o comando “ NA ATUALIZAÇÃO DE CHAVE DUPLICADA ” cláusula no “ INSIRA DENTRO DE ” para atualizar se a linha já existir. Caso contrário, adicione uma nova linha. A postagem discutiu como inserir uma nova linha somente se os dados não existirem.