【Oracle】INSERT文でデータを追加しよう!

Oracle

前回は、テーブルの作成方法について説明しました。今回は、テーブルにデータを追加するINSERT文について説明していきます!

INSERT文の使い方

データを1行追加する

データを1行だけ追加する場合のINSERT文は下記のように記述します。

INSERT INTO テーブル名
     VALUES (値1, 値2, 値3…);

例えば、家計簿テーブルを作ったとして

CREATE TABLE household_account1 (
    id INT PRIMARY KEY,
    transaction_date DATE,
    expense VARCHAR2(20),
    memo VARCHAR2(80),
    deposit INT,
    withdrawal INT
);

この家計簿テーブルにデータをINSERT文で追加する時は、下記のような記述になります。

INSERT INTO
  household_account1
VALUES
  (
    -- id
    1,
    -- transaction_date
    TO_DATE('2024-03-21', 'YYYY-MM-DD'),
    -- expense
    '食事',
    -- memo
    '昼食(ラーメン)',
    -- deposit
    NULL,
    -- withdrawal
    1200
  );

登録したデータをSELECT文で取得すると…

SELECT
  TO_CHAR(transaction_date, 'YYYY/MM/DD') AS "日付",
  expense AS "費目",
  memo AS "メモ",
  deposit AS "入金額",
  withdrawal AS "出金額"
FROM
  household_account1

無事に取得することができました。

日付費目メモ入金額出金額
2024/03/21食事昼食(ラーメン)1200

データを複数行追加する

データを複数行追加する場合のINSERT文は下記のように記述します。

INSERT ALL
  INSERT INTO テーブル名 VALUES (値1, 値2, 値3…)
  INSERT INTO テーブル名 VALUES (値1, 値2, 値3…)
  :
SELECT * FROM DUAL;

データを1行追加する時と書き方はほぼ変わりませんが、「ALL」が含まれていることや最後に「SELECT」しないといけない点に気をつけましょう。

上のサンプルコードにさらにデータを追加したいと思います。

INSERT
  ALL INTO household_account1
VALUES
  (
    2,
    TO_DATE('2024-03-20', 'YYYY-MM-DD'),
    '入金',
    '生活費',
    100000,
    0
  ) INTO household_account1
VALUES
  (
    3,
    TO_DATE('2024-03-20', 'YYYY-MM-DD'),
    '光熱費',
    '電気代支払い',
    0,
    10000
  ) INTO household_account1
VALUES
  (
    4,
    TO_DATE('2024-03-21', 'YYYY-MM-DD'),
    '交通費',
    '電車代支払い',
    0,
    1500
  ) INTO household_account1
VALUES
  (
    5,
    TO_DATE('2024-03-22', 'YYYY-MM-DD'),
    '食事',
    '夜食(チャーハン)',
    0,
    900
  ) INTO household_account1
VALUES
  (
    6,
    TO_DATE('2024-03-23', 'YYYY-MM-DD'),
    'レジャー',
    '映画鑑賞',
    0,
    2500
  )
SELECT
  *
FROM
  DUAL;

追加したデータをSELECT文で取得。

SELECT
  TO_CHAR(transaction_date, 'YYYY/MM/DD') AS "日付",
  expense AS "費目",
  memo AS "メモ",
  deposit AS "入金額",
  withdrawal AS "出金額"
FROM
  household_account1
ORDER BY
  transaction_date ASC

取得すると、追加したデータが無事に全て取得できました!

日付費目メモ入金額出金額
2024/03/20入金生活費1000000
2024/03/20光熱費電気代支払い010000
2024/03/21食事昼飯(ラーメン)1200
2024/03/21交通費電車代支払い01500
2024/03/22食事夜食(チャーハン)0900
2024/03/23レジャー映画鑑賞02500
日付を昇順(ASC)でソートして表を取得しました

まとめ

データを追加する時は、INSERT文を使いますが1行データを追加する時と複数データを追加する時の書き方には違いがあることを覚えておきましょう!

コメント