Todos os produtos
Search
Central de documentação

AnalyticDB:INSERT INTO

Última atualização: Aug 20, 2026

Insere linhas em uma tabela. No AnalyticDB for MySQL, o comando INSERT INTO funciona como INSERT IGNORE INTO: se uma linha inserida tiver a mesma chave primária de uma linha existente, o sistema ignorará silenciosamente a linha conflitante em vez de sobrescrevê-la.

Sintaxe

INSERT [IGNORE]
    INTO table_name
    [( column_name [, ...] )]
    [VALUES]
    [(value_list[, ...])]
    [query];

Parâmetros

Parâmetro

Obrigatório

Descrição

IGNORE

Não

Ignora qualquer linha cuja chave primária duplique uma linha existente.

column_name

Não

Nome da coluna de destino.

query

Instrução SELECT cujos resultados são inseridos na tabela.

Observações de uso

Se você omitir os nomes das colunas, os valores na lista VALUES devem seguir a mesma ordem das colunas definidas na instrução CREATE TABLE.

Exemplos

Os exemplos a seguir usam duas tabelas — customer e courses — definidas conforme mostrado abaixo.

CREATE TABLE customer (
  customer_id bigint NOT NULL COMMENT 'Customer ID',
  customer_name varchar NOT NULL COMMENT 'Customer name',
  phone_num bigint NOT NULL COMMENT 'Phone number',
  city_name varchar NOT NULL COMMENT 'City',
  sex int NOT NULL COMMENT 'Gender',
  id_number varchar NOT NULL COMMENT 'ID card number',
  home_address varchar NOT NULL COMMENT 'Home address',
  office_address varchar NOT NULL COMMENT 'Office address',
  age int NOT NULL COMMENT 'Age',
  login_time timestamp NOT NULL COMMENT 'Logon time',
  PRIMARY KEY (login_time, customer_id, phone_num)
)
DISTRIBUTED BY HASH(customer_id)
PARTITION BY VALUE(DATE_FORMAT(login_time, '%Y%m%d')) LIFECYCLE 30
COMMENT 'Customer information table';
CREATE TABLE courses (
  id bigint AUTO_INCREMENT PRIMARY KEY,
  name varchar(20) NOT NULL,
  grade varchar(20) DEFAULT 'Grade 3',
  submission_date timestamp
)
DISTRIBUTED BY HASH(id);

Inserir uma única linha com nomes explícitos de colunas

Especifique cada nome de coluna para tornar a ordem de inserção independente da definição da tabela.

INSERT INTO customer (customer_id, customer_name, phone_num, city_name, sex, id_number, home_address, office_address, age, login_time)
VALUES
  (002367, 'Alan', '13900001234', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 23, '2018-03-02 10:00:00');

Inserir uma única linha sem nomes de colunas

Omita os nomes das colunas quando a ordem dos valores corresponder exatamente à definição do CREATE TABLE.

INSERT INTO customer
VALUES
  (002367, 'Alan', '13900001234', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 23, '2018-03-02 10:00:00');

Inserir várias linhas

Agrupe várias linhas em uma única instrução para reduzir idas e vindas ao banco de dados.

INSERT INTO customer (customer_id, customer_name, phone_num, city_name, sex, id_number, home_address, office_address, age, login_time)
VALUES
  (002367, 'Tom',  '13900001234', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 23, '2018-03-02 10:00:00'),
  (002368, 'Alex', '13900001111', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 28, '2018-08-01 11:00:00'),
  (002369, 'Eric', '13900002222', 'Hangzhou', 1, '987300', 'West Lake', 'Cloud Town', 35, '2018-09-12 08:11:00');

Inserir várias linhas sem especificar nomes de colunas

Se a ordem dos valores corresponder exatamente à definição do CREATE TABLE, omita os nomes das colunas em várias linhas.

INSERT INTO customer
VALUES
  (002367, 'Tom',  '13900001234', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 23, '2018-03-02 10:00:00'),
  (002368, 'Alex', '13900001111', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 28, '2018-08-01 11:00:00'),
  (002369, 'Eric', '13900002222', 'Hangzhou', 1, '987300', 'West Lake', 'Cloud Town', 35, '2018-09-12 08:11:00');

Atualizar uma linha existente em caso de chave duplicada

A cláusula ON DUPLICATE KEY UPDATE atualiza uma coluna específica quando uma linha inserida entra em conflito com uma chave primária existente, em vez de ignorar o conflito.

INSERT INTO customer
VALUES
  (002367, 'Alan', '13900001234', 'Hangzhou', 0, '987300', 'West Lake', 'Cloud Town', 23, '2018-03-02 10:00:00')
ON DUPLICATE KEY
UPDATE age = 23;
O comportamento padrão do INSERT INTO no AnalyticDB for MySQL equivale ao INSERT IGNORE INTO . O uso de ON DUPLICATE KEY UPDATE substitui esse comportamento e executa uma atualização em vez de ignorar o conflito.

Inserir uma linha com uma coluna de timestamp

Use NOW() para registrar o timestamp atual no momento da inserção.

INSERT INTO courses (name, submission_date)
VALUES ('Jams', NOW());

Inserir linhas a partir do resultado de uma consulta

Use uma instrução SELECT como source de dados. Para sintaxe e exemplos, consulte INSERT SELECT FROM.

Próximos passos

  • INSERT SELECT FROM — insere resultados de consultas de outra tabela

  • CREATE TABLE — define o esquema da tabela, as chaves de distribuição e as partições