Tous les produits
Search
Centre de documentation

AnalyticDB:INSERT INTO

Dernière mise à jour :Aug 20, 2026

Insère des lignes dans une table. Dans AnalyticDB for MySQL, INSERT INTO se comporte comme INSERT IGNORE INTO : si une ligne insérée possède la même clé primaire qu'une ligne existante, le système ignore silencieusement la ligne en conflit au lieu de l'écraser.

Syntaxe

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

Paramètres

Paramètre Obligatoire Description
IGNORE Non Ignore toute ligne dont la clé primaire est déjà présente.
column_name Non Nom de la colonne cible.
query — Instruction SELECT dont les résultats sont insérés dans la table.

Notes d'utilisation

Si vous omettez les noms de colonnes, les valeurs de votre liste VALUES doivent respecter l'ordre des colonnes défini dans l'instruction CREATE TABLE.

Exemples

Les exemples suivants utilisent deux tables, customer et courses, définies ci-dessous.

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);

Insérer une seule ligne avec des noms de colonnes explicites

Spécifiez chaque nom de colonne pour rendre l'ordre d'insertion indépendant de la définition de la table.

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');

Insérer une seule ligne sans noms de colonnes

Omettez les noms de colonnes lorsque l'ordre des valeurs correspond exactement à la définition CREATE TABLE.

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

Insérer plusieurs lignes

Regroupez plusieurs lignes dans une seule instruction pour réduire les allers-retours réseau.

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');

Insérer plusieurs lignes sans spécifier les noms de colonnes

Si l'ordre des valeurs correspond exactement à la définition CREATE TABLE, vous pouvez omettre les noms de colonnes pour plusieurs lignes.

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');

Mettre à jour une ligne existante en cas de clé en double

L'instruction ON DUPLICATE KEY UPDATE met à jour une colonne spécifique lorsqu'une ligne insérée entre en conflit avec une clé primaire existante, au lieu d'ignorer le conflit.

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;
Le comportement par défaut de INSERT INTO dans AnalyticDB for MySQL équivaut à INSERT IGNORE INTO. L'instruction ON DUPLICATE KEY UPDATE remplace ce comportement et effectue une mise à jour au lieu d'ignorer le conflit.

Insérer une ligne avec une colonne d'horodatage

Utilisez NOW() pour enregistrer l'horodatage actuel au moment de l'insertion.

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

Insérer des lignes à partir du résultat d'une requête

Utilisez une instruction SELECT comme source de données. Pour la syntaxe et les exemples, consultez INSERT SELECT FROM.

Étapes suivantes

  • INSERT SELECT FROM — insérer les résultats d'une requête provenant d'une autre table

  • CREATE TABLE — définir le schéma de la table, les clés de distribution et les partitions