SUBSTITUIR MySQL

Resumo : neste tutorial, você aprenderá como usar a REPLACEinstrução MySQL para inserir ou atualizar dados em tabelas de banco de dados.

Introdução à instrução MySQL REPLACE

A instrução MySQL REPLACEé uma extensão do SQL Standard . A instrução MySQL REPLACEfunciona da seguinte maneira:

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

Etapa 2. Se a inserção falhar devido a um erro de chave duplicada:

  • Exclua  da tabela a linha conflitante que causa o erro de chave duplicada.
  • Insira a nova linha na tabela novamente.

Para determinar se a nova linha que já existe na tabela, o MySQL usa PRIMARY KEYou UNIQUE KEY index. Se a tabela não possuir um desses índices, a REPLACEinstrução funciona como uma  INSERTinstrução.

Para usar a REPLACEinstrução, você precisa ter pelo menos privilégios INSERTe DELETEpara a tabela.

Observe que o MySQL possui a  REPLACEfunção string que não é a REPLACEinstrução abordada neste tutorial.

Usando MySQL REPLACE para inserir uma nova linha

O seguinte ilustra a sintaxe da REPLACEinstrução:

REPLACE [INTO] table_name(column_list)
VALUES(value_list);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

É semelhante à  INSERT instrução, exceto pela palavra-chave  REPLACE. Vamos dar uma olhada no seguinte exemplo de uso da REPLACEinstrução para ver como ela funciona.

Primeiro, crie uma nova tabela com o seguinte nome cities:

CREATE TABLE cities (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    population INT NOT NULL
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A seguir, insira algumas linhas na citiestabela:

INSERT INTO cities(name,population)
VALUES('New York',8008278),
	  ('Los Angeles',3694825),
	  ('San Diego',1223405);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Em seguida, consulte os dados da citiestabela para verificar a operação de inserção.

SELECT * FROM cities;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL REPLACE - tabela de exemplo

Depois disso, use a REPLACEdeclaração para atualizar a população da Los Angelescidade para 3696820.

REPLACE INTO cities(id,population)
VALUES(2,3696820);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por fim, consulte novamente os dados da citiestabela para verificar a substituição.

SELECT * FROM cities;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de substituição do MySQL

O valor da namecoluna é NULLagora.

A REPLACEdeclaração funciona da seguinte forma:

  1. Primeiro, a REPLACEinstrução tentou inserir uma nova linha na citiestabela. A inserção falhou porque o id 2 já existe na citiestabela.
  2. Em seguida, a REPLACEinstrução excluiu a linha com id 2 e inseriu uma nova linha com o mesmo id 2 e população 3696820. Como nenhum valor foi especificado para a coluna de nome, ela foi definida como NULL.

Usando a instrução MySQL REPLACE para atualizar uma linha

O seguinte ilustra como usar a REPLACEinstrução para atualizar dados:

REPLACE INTO table
SET column1 = value1,
    column2 = value2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Esta declaração é como a UPDATEdeclaração, exceto pela REPLACEpalavra-chave. Além disso, não possui WHEREcláusula.

Este exemplo usa a REPLACEinstrução para atualizar a população da cidade Phoenixpara 1768980:

REPLACE INTO cities
SET id = 4,
    name = 'Phoenix',
    population = 1768980;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Ao contrário da UPDATEinstrução, se você não especificar o valor da coluna na SETcláusula, a REPLACEinstrução usará o valor padrão dessa coluna.

SELECT * FROM cities;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

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

A seguir ilustra a REPLACEinstrução que insere dados em uma tabela com os dados provenientes de uma consulta.

REPLACE INTO table_1(column_list)
SELECT column_list
FROM table_2
WHERE where_condition;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que esta forma de REPLACEdeclaração é semelhante à INSERT INTO SELECTdeclaração.

A instrução a seguir usa a REPLACE INTOinstrução para copiar uma linha dentro da mesma tabela:

REPLACE INTO 
    cities(name,population)
SELECT 
    name,
    population 
FROM 
   cities 
WHERE id = 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste tutorial, você aprendeu diferentes formas de REPLACEinstrução MySQL para inserir ou atualizar dados em uma tabela.

Deixe um comentário

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