こんにちはiwanagaです。
今年もハロウィンの季節がやってきましたね。特段何かするわけではありませんが行事はあるに越したことはありません。ただカボチャが苦手なので代わりになるような美味しいものがると良いですね。
さて、全く脈絡のない事を話しましたが今回も前回に引き続きSQLの学習をしていきたいと思います。今回はINSERT文を学んでいきたいと思います。
INSERT文
実は自分自身あまりUPDATE文との違いがよくわかっていない所もありますので、まずは下記に違いや用途などざっくりと記載させていただきます。
・NSERT文
挿入: INSERT文は新しいデータをテーブルに挿入するために使用されます。
既存データへの影響: INSERT文は既存のデータに影響を与えません。新しいデータが既存のデータと競合しない限り、既存のデータは変更されません。
主な用途: 新しいレコードをデータベースに追加する際に使用され、データの作成に適しています。
・UPDATE文
更新: UPDATE文は既存のデータを更新または変更するために使用されます。指定された条件に一致する既存の行のデータを変更します。
既存データへの影響: UPDATE文は既存のデータに影響を与えます。指定された条件に一致する既存の行のデータが更新されます。
主な用途: 既存のデータを変更、修正、更新するために使用され、データの修正や更新に適しています。
要約すると、INSERT文は新しいデータを挿入する際に使用され、データベースに新しいエントリを作成します。一方、UPDATE文は既存のデータを更新または変更する際に使用され、既存のデータを修正します。まとめてみると割と簡単ですね。
基礎
まず今回のINSERT文を紹介するにあたって必要なテーブルを下記に記載させていただきます。
テーブル名:group
ID | first_name | last_name | team | salary| |
---|---|---|---|---|
1 | taro | yamada | IT | 200000 |
2 | jiro | suzuki | food | 220000 |
3 | sabro | kitano | book | 320000 |
4 | hanako | iwai | IT | 110000 |
5 | matuko | dx | food | 250000 |
6 | yuta | abe | IT | 540 |
基本的にINSERT文は下記の様な構成となっています。
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
・table_name: データを挿入するテーブルの名前。
・column1, column2,:挿入する列の名前。
・value1, value2,:列に挿入する値。
この基本形を上記のテーブル例にすると以下のようになります。
INSERT INTO group
(ID, first_name, last_name, team, salary)
VALUES (7, 'aoi', 'ito', 'IT', 160000);
すると下記の様な結果になります。
ID | first_name | last_name | team | salary| |
---|---|---|---|---|
1 | taro | yamada | IT | 200000 |
2 | jiro | suzuki | food | 220000 |
3 | sabro | kitano | book | 320000 |
4 | hanako | iwai | IT | 110000 |
5 | matuko | dx | food | 250000 |
6 | yuta | abe | IT | 540 |
7 | aoi | ito | IT | 160000 |
このINSERT文により、新しい従業員のデータがemployeesテーブルに挿入され、変更後のテーブル図が示されます。
応用
今度は複数同時にデータを追加します。
例 1: 複数の従業員を一度に挿入する場合
INSERT INTO employees
(ID, first_name, last_name, team, salary)
VALUES (8, 'ichiro', 'sato', 'IT', 300000),
(9, 'yuko', 'ogura', 'food', 240000),
(10, 'bob', 'sap', 'food', 280000);
結果は下記の様になります。
ID | first_name | last_name | team | salary| |
---|---|---|---|---|
1 | taro | yamada | IT | 200000 |
2 | jiro | suzuki | food | 220000 |
3 | sabro | kitano | book | 320000 |
4 | hanako | iwai | IT | 110000 |
5 | matuko | dx | food | 250000 |
6 | yuta | abe | IT | 540 |
7 | aoi | ito | IT | 160000 |
8 | aoi | ito | IT | 300000 |
9 | aoi | ito | food | 240000 |
10 | aoi | ito | food | 280000 |
応用とは言いましたが割と簡単ですね。増やしたければ増やしたいだけ前述にある基本形を記入すれば良いだけなのでやりやすいです。
注意点
・データ型の整合性
挿入するデータのデータ型がテーブルの列と整合していることを確認してください。不一致のデータ型を挿入しようとするとエラーが発生します。正直自分がINSERT文で一番ミスしたのはここです。
・トランザクションの使用
INSERT文を実行する前にトランザクションを開始し、変更を確認することをお勧めします。トランザクションを使用すると、変更を一括してコミットまたはロールバックできます。
・重複データの処理
重複データを挿入する前に、データベース内に同じキーまたは一意性の制約を持つデータが存在しないことを確認してください。重複データを挿入しようとするとエラーが発生することがあります。
・挿入順序
テーブルにデータを挿入する場合、列の順序を指定することができます。必要に応じて列の順序を指定して挿入してください。
・バックアップ
重要なデータの挿入前に、データベースのバックアップを取得しておくことを検討しましょう。誤ってデータを挿入した場合、バックアップからデータを復元できます。ここさえちゃんとしていれば大体大丈夫です。
・権限とセキュリティ
INSERT文を実行するために必要な権限を確認し、不正なアクセスを防ぐためにセキュリティ対策を実施しましょう。
最後に
今回もご覧いただきありがとうございました!
これで4大命令文も終わったので次回からはより応用的なトピックか今までのおさらいをしようかと思います。
参照
https://products.sint.co.jp/topsic/blog/sql-insert
エンジニアファーストの会社 株式会社CRE-CO iwanaga