MySQL REPLACE

Sumário: neste tutorial, aprenderá como utilizar a declaração MySQL REPLACE para inserir ou actualizar dados em tabelas de base de dados.

Entrar na declaração MySQL REPLACE

O MySQL REPLACE declaração é uma extensão do padrão SQL. A declaração MySQL REPLACE funciona da seguinte forma:

P>Passo 1. Insira uma nova linha na tabela, se ocorrer um erro de chave duplicada.

P>Passo 2. Se a inserção falhar devido a um erro de chave duplicada ocorrer:

  • Apagar da tabela a linha conflituosa que causa o erro de chave duplicada.
  • Inserir novamente a nova linha na tabela.

Para determinar se a nova linha que já existe na tabela, o MySQL usa PRIMARY KEY ou UNIQUE KEY índice. Se a tabela não tiver um destes índices, o REPLACE funciona como uma declaração INSERT.

Para utilizar a declaração REPLACE, é necessário ter pelo menos ambos INSERT e DELETE privilégios para a tabela.

Notificação de que o MySQL tem a REPLACE função de string que não é a REPLACE declaração abordada neste tutorial.

Usando MySQL REPLACE para inserir uma nova linha

O seguinte ilustra a sintaxe da declaração REPLACE:

REPLACE table_name(column_list)VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
É semelhante à declaração INSERT excepto para a palavra-chave REPLACE.

Vejamos o seguinte exemplo de utilização da declaração REPLACE para ver como funciona.

Primeiro, criar uma nova tabela com o nome cities como se segue:

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Code language: SQL (Structured Query Language) (sql)

P>Próximo, inserir algumas linhas na tabela cities:

INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Code language: SQL (Structured Query Language) (sql)

Então, consultar dados da tabela cities para verificar a operação de inserção.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - tabela de amostras

Após isso, usar a declaração REPLACE para actualizar a população do Los Angeles cidade para 3696820.

REPLACE INTO cities(id,population)VALUES(2,3696820);
Code language: SQL (Structured Query Language) (sql)

Finalmente, consultar os dados da tabela cities novamente para verificar a substituição.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE example

O valor na coluna nameNULL agora. A declaração REPLACE funciona da seguinte forma:

  1. First, REPLACE a declaração tentou inserir uma nova linha em cities a tabela. A inserção falhou porque o id 2 já existe na declaração citiestabela.
  2. Então, REPLACE a declaração eliminou a linha com id 2 e inseriu uma nova linha com o mesmo id 2 e população 3696820. Como não é especificado qualquer valor para a coluna do nome, foi definido para NULL.

Usando a declaração MySQL REPLACE para actualizar uma linha

O seguinte ilustra como usar a declaração REPLACE para actualizar dados:

REPLACE INTO tableSET column1 = value1, column2 = value2;
Code language: SQL (Structured Query Language) (sql)

Esta declaração é como a declaração UPDATE excepto para a declaração REPLACE palavra-chave. Além disso, não tem WHERE cláusula.

Este exemplo utiliza a cláusula REPLACE para actualizar a população do Phoenix cidade para 1768980:

REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Code language: SQL (Structured Query Language) (sql)

Não se parece com a declaração UPDATE, se não especificar o valor da coluna na cláusula SET, a declaração REPLACE utilizará o valor por defeito dessa coluna.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)

Usando MySQL REPLACE para inserir dados de uma declaração SELECT

O seguinte ilustra a declaração REPLACE que insere dados numa tabela com os dados provenientes de uma consulta.

REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Code language: SQL (Structured Query Language) (sql)

Nota que esta forma da declaração REPLACE é semelhante a INSERT INTO SELECT declaração.

A seguinte declaração usa a declaração REPLACE INTO declaração para copiar uma linha dentro da mesma tabela:

REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)

Neste tutorial, aprendeu diferentes formas do MySQL REPLACE declaração para inserir ou actualizar dados numa tabela.

  • Este tutorial foi útil?
  • Sim Não
  • Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *