INSERT INTO 文を使用して、テーブルにデータを挿入できます。AnalyticDB for MySQL では、INSERT INTO 文は INSERT IGNORE INTO のように動作します。挿入中にプライマリキーが重複した場合、競合する行は無視されます。
構文
INSERT [IGNORE]
INTO table_name
[( column_name [, ...] )]
[VALUES]
[(value_list[, ...])]
[query]; パラメーター
IGNORE: 重複するプライマリキー値を持つ行の挿入を無視します。このパラメーターはオプションです。column_name: 列の名前です。このパラメーターはオプションです。query: クエリ結果をテーブルに挿入できる SELECT 文です。
使用上の注意
列名を指定しない場合、挿入するデータの列は、CREATE TABLE 文で指定された列と同じ順序で配置する必要があります。
例
customer と courses という名前のテーブルを作成します。
CREATE TABLE customer (
customer_id bigint NOT NULL COMMENT '顧客 ID',
customer_name varchar NOT NULL COMMENT '顧客名',
phone_num bigint NOT NULL COMMENT '電話番号',
city_name varchar NOT NULL COMMENT '都市',
sex int NOT NULL COMMENT '性別',
id_number varchar NOT NULL COMMENT 'ID カード番号',
home_address varchar NOT NULL COMMENT '自宅住所',
office_address varchar NOT NULL COMMENT '勤務先住所',
age int NOT NULL COMMENT '年齢',
login_time timestamp NOT NULL COMMENT 'ログオン時間',
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 '顧客情報テーブル'; 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) customer テーブルに 1 行のデータを挿入します。
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');INSERT INTO ... ON DUPLICATE KEY UPDATE...文を実行して、customer テーブルに 1 行のデータを挿入します。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;customer テーブルに複数行のデータを挿入します。
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');列名を指定せずに、customer テーブルに複数のレコードを挿入します。
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');courses テーブルに 1 行のデータを挿入します。
INSERT INTO courses (name,submission_date) VALUES("Jams",NOW());INSERT queryの例については、「INSERT SELECT FROM」をご参照ください。