Mysql - como inserir uma nova linha apenas se os dados não existirem

Mysql - como inserir uma nova linha apenas se os dados não existirem
O 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 querem inserir dados duplicados para eliminar a redundância. O MySQL permite que os usuários insira dados apenas se dados semelhantes ainda não existirem.

Esta posta. Antes de começar com este post, verifique se você está conectado ao seu servidor local MySQL e escolheu um banco de dados onde deseja trabalhar.

Insira uma nova linha apenas se os dados não existirem usando a instrução "inserir ignorar"

Bem, a resposta para a pergunta no título é bem simples e direta. Basta usar o “INSERIRPalavra -chave junto com a “IGNORARPalavra -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 no [nome da tabela] ([column1-name], [column2-name], [column3-name]) valores ([value1], [value2], [value3]);

Vamos ver um exemplo se o usuário quiser 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 não houver uma linha, já existe esses valores:

Selecione * do cliente;
Inserir ignorar nos valores do cliente (ID, FirstName, LastName) (1, 'John', 'Doe');

A saída contém duas tabelas exibindo dados da tabela antes e depois de executar a 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:

Insira uma nova linha apenas se os dados não existirem usando a cláusula "onde não existe"

Em Mysql, o “ONDE NÃO EXISTEINSIRA DENTRO DE”Declaração com uma subconsulta para definir uma condição. Quando esta cláusula é usada com a subconsência “(Selecione * de [Tabela-name] [colun-name] = [Expression]);”Verifica se uma linha existe na tabela que cumpre a condição. Se uma linha existe, o “Onde não existe“Cláusula retornará um valor falso, e a“ “Selecione”A declaração não retornará nenhuma linha. Como resultado, a linha não será inserida na tabela. A sintaxe é fornecida abaixo:

Inserir em [tabela-name] ([column1-name], [column2-name], [column3-name])
Selecione [Value1], [Value2], [Value3]
Onde não existe (selecione * de [tabela-name] [colun-name] = [expressão]);

Vamos ver um exemplo se o usuário quiser inserir uma linha na tabela de funcionários que contêm valores “1","Americanas" e "Henriot”Nas colunas“eu ia","Nome da empresa" e "Nome de contato”Respectivamente. Mas somente se uma fila com um id de “1”Não é encontrado na tabela ou não existe. Nesse caso em particular, a consulta se tornará:

Selecione * do funcionário;
Insira no funcionário (ID, CompanyName, ContactName)
Selecione 1, 'Americanas', 'Henriot'
Onde não existe (selecione * do funcionário onde id = 1);

A saída exibe uma nova linha que não é inserida como a linha com o “eu ia" igual a "1Já existia.

Insira uma nova linha apenas se os dados não existirem usando a cláusula “On Duplicate Key Atualize”

Bem, outra maneira é usar o “Na atualização de chave duplicada”Cláusula em mysql. Como esta cláusula será usada com a consulta "Inserir em" formando uma execução de "if-else". Portanto, isso significa que os dados dentro da tabela só serão atualizados se for exclusivo. Caso contrário, nenhuma mudança ocorreria. A sintaxe geral para isso é a seguinte:

Inserir em [tabela-name] ([column1-name], [column2-name], [column3-name]) valores ([value1], [value2], [value3])
Na Atualização de chave duplicada [column1-name] = [column1-name];

Vamos ver 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 não existir, ela será inserida. Caso contrário, ele atualizará os valores onde o “Id = idA condição se reúne. Execute esta consulta:

Selecione * do cliente;
Insira no cliente (ID, primeiro nome, último nome, cidade, país, telefone)
Valores (2, 'Pascale', 'Nixon', 'London', 'UK', '(171) 555-7788')
Na chave duplicada ID da atualização de chave = id;

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 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 apenas se os dados ainda não existirem usando o “Inserir ignorar"Declaração ou"Onde não existe”Cláusula na“INSIRA DENTRO DE" declaração. Outra maneira de fazer isso é usar o “Na atualização de chave duplicada”Cláusula na“INSIRA DENTRO DE”Declaração para atualizar se a linha já existe. Caso contrário, adicione uma nova linha. O post discutiu como inserir uma nova linha apenas se os dados não existirem.