備忘録的プログラミングリファレンス

INSERT クエリー

 INSERT クエリーはSQLの基本となるコマンドのひとつで、予め定義されたテーブルに行データの入力をリクエストします。

 INSERT クエリーは定義された列の項目に従って新規に行を作成します。
 例えば以下のように INSERT クエリーをリクエストします。

INSERT クエリー
INSERT INTO transfer_slip( date_time, goods_name, unit_price, amount );
	   VALUES ( '2023/6/1', 'candy', 3, 100 );

 この例は、売上を記録しています。売上日、商品名、単価、数量を記録しています。
 VALUES の前者がテーブル名とカラムの羅列です。後者がカラムごとのデータです。以下のようにカラムの順に該当するデータが作成されます。

  • date_time ← '2023/6/1'
  • goods_name ← 'candy'
  • unit_price ← 3
  • amount ← 100

 カラムへのデータが作成できると行として記録されます。

 クエリーとは、問い合わせを意味し、データベースではデータの検索( SELECT )、入力( INSERT 、更新( UPDATE )削除( DELETE )といった命令をサーバーに送る行為を指します。
 クエリーには、作成( CREATE )、変更( ALTER )、削除( DROP )も含みます。

ページ内 Index

構文(Syntax)

 簡単には以下のようにクエリーを作成します。テーブル名とカラム名、カラムごとに入力するデータを指定します。

INSERT INTO table ( column, ... )
  VALUES ( value, ... );

 カラム名と入力する値が該当するように並べます。

 MySQL、PostgreSQL では以下のように定義されています。

MySQL

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [(col_name [, col_name] ...)]
    { {VALUES | VALUE} (value_list) [, (value_list)] ...
      | VALUES row_constructor_list
    }
    [AS row_alias[(col_alias [, col_alias] ...)]]
    [ON DUPLICATE KEY UPDATE assignment_list]

 詳しくは MySQL での INSERT クエリーを参照してください。

PostgreSQL

INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

 詳しくは PostgreSQL での INSERT クエリーを参照してください。

Example

 INSERT クエリーは例えば以下のような売上テーブルがあるとします。

CREATE TABLE transfer_slip (
	number		SERIAL,				/* 番号 */
	date_time	DATE DEFAULT current_date,	/* 日付 */
	goods_name	VARCHAR(30),			/* 商品名 */
	unit_price	INT,				/* 単価 */
	amount		INT,				/* 数量 */
	price	BIGINT GENERATED ALWAYS AS ( amount * unit_price ) STORED  /* 金額 */
);

 以下のように INSERT クエリーを使用して行を追加します。

INSERT INTO transfer_slip( date_time, goods_name, unit_price, amount );
	   VALUES ( '2023/6/1', 'candy', 3, 100 );