All Products
Search
Document Center

AnalyticDB:INSERT INTO

Last Updated:Aug 21, 2026

Menyisipkan baris ke dalam tabel. Di AnalyticDB for MySQL, pernyataan INSERT INTO berperilaku seperti INSERT IGNORE INTO: jika baris yang dimasukkan memiliki primary key yang sama dengan baris yang sudah ada, baris tersebut akan diabaikan secara diam-diam alih-alih ditimpa.

Sintaksis

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

Parameter

Parameter Wajib Deskripsi
IGNORE Tidak Mengabaikan baris apa pun yang primary key-nya menduplikasi baris yang sudah ada.
column_name Tidak Nama kolom target.
query — Pernyataan SELECT yang hasilnya dimasukkan ke dalam tabel.

Catatan penggunaan

Jika Anda menghilangkan nama kolom, nilai dalam daftar VALUES harus sesuai urutan kolom yang didefinisikan dalam pernyataan CREATE TABLE.

Contoh

Contoh berikut menggunakan dua tabel — customer dan courses — yang didefinisikan seperti di bawah ini.

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

Menyisipkan satu baris dengan nama kolom eksplisit

Tentukan nama setiap kolom agar urutan penyisipan tidak bergantung pada definisi tabel.

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

Menyisipkan satu baris tanpa nama kolom

Abaikan nama kolom jika urutan nilai sesuai persis dengan definisi CREATE TABLE.

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

Menyisipkan beberapa baris

Gabungkan beberapa baris dalam satu pernyataan untuk mengurangi jumlah round trip.

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

Menyisipkan beberapa baris tanpa menentukan nama kolom

Jika urutan nilai sesuai persis dengan definisi CREATE TABLE, Anda dapat menghilangkan nama kolom untuk menyisipkan beberapa baris sekaligus.

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

Memperbarui baris yang sudah ada saat terjadi duplikat kunci

ON DUPLICATE KEY UPDATE memperbarui kolom tertentu ketika baris yang dimasukkan bertabrakan dengan primary key yang sudah ada, alih-alih mengabaikan konflik tersebut.

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;
Perilaku default INSERT INTO di AnalyticDB for MySQL setara dengan INSERT IGNORE INTO. Penggunaan ON DUPLICATE KEY UPDATE mengganti perilaku tersebut dengan melakukan pembaruan alih-alih mengabaikan konflik.

Menyisipkan baris dengan kolom timestamp

Gunakan NOW() untuk mencatat timestamp saat ini pada waktu penyisipan.

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

Menyisipkan baris dari hasil kueri

Gunakan pernyataan SELECT sebagai sumber data. Untuk sintaksis dan contoh, lihat INSERT SELECT FROM.

Langkah selanjutnya