SQLのINSERT文は、データベースに情報を追加する際に使用される命令文です。本記事では、INSERT文の基本や使い方について解説していきます。
INSERT文とは?
SQLのINSERT文は、データベースのテーブルに新しいレコードを追加するための命令です。INSERT文の基本的な構文は、データを挿入したい特定のテーブルを指定し、続けてそのテーブルの各列に対応するデータの値を指示する形式で記述されます。
INSERT INTO テーブル名 (列1, 列2, ...)
VALUES (値1, 値2, ...);
テーブル名のあとにカッコで、列1, 列2…と列名をカンマで区切って並べます。VALUESのあとのカッコに、登録したい値を同様に並べます。このとき、列名と値の順序を一致させる必要があります。
INSERT文の使い方は?
データベースに新しいレコードを追加する方法を見ていきます。例えば、以下のような顧客情報「customer」テーブルが存在するとします。
customerテーブル
name | route | saved_date | price |
---|---|---|---|
佐藤 | ad1 | 2023-04-01 17:29:31 | 2100 |
単一レコードの追加
ここに、新たに松田という顧客が ad2 経由で購入を行い、その情報を上記のテーブルに追加したい場合、以下のようなINSERT文を使用します。
INSERT INTO customer (name, route, saved_date, price) VALUES ('松田', 'ad2', '2023-05-24 19:49:28', 2500);
結果:
name | route | saved_date | price |
---|---|---|---|
佐藤 | ad1 | 2023-04-01 17:29:31 | 2100 |
松田 | ad2 | 2023-05-24 19:49:28 | 2500 |
複数のレコードを一度に追加
一つのSQL文で、複数のレコードをテーブルに追加することもできます。
INSERT INTO customer (name, route, saved_date, price) VALUES ('田中', 'ad1', '2023-06-01 10:20:30', 2900), ('佐々木', 'ad3', '2023-06-05 14:15:45', 3200);
結果:
name | route | saved_date | price |
---|---|---|---|
佐藤 | ad1 | 2023-04-01 17:29:31 | 2100 |
松田 | ad2 | 2023-05-24 19:49:28 | 2500 |
田中 | ad1 | 2023-06-01 10:20:30 | 2900 |
佐々木 | ad3 | 2023-06-05 14:15:45 | 3200 |
SELECT句を用いたINSERT文とは?
基本的なINSERT文では、具体的な値を挿入する場合に使用しますが、SELECT句を組み合わせることで、あるテーブルの情報をもとに、新しいテーブルにデータをコピーすることができます。
例として、先ほどのcustomerテーブルから、route が ad1 を満たすレコードを新しいテーブル(new_table)にコピーしたいとします。
INSERT INTO new_table (name, route, saved_date, price) SELECT name, route, saved_date, price FROM customer WHERE route = 'ad1';
結果:
name | route | saved_date | price |
---|---|---|---|
佐藤 | ad1 | 2023-04-01 17:29:31 | 2100 |
田中 | ad1 | 2023-06-01 10:20:30 | 2900 |
クエリ内の WHERE句で route = ad1 という条件が設定されています。この指定により、customer テーブルから route カラムの値が ad1 に該当するレコードだけが選ばれます。
WHERE句は、特定の条件下でのデータの絞り込みに使用されます。詳しくは、当ブログの【SQL入門1】WHEREで検索条件を指定する方法を解説で、WHEREの基本を詳しく解説しています。ぜひ参考にしてください。
DEFAULT値を使ったINSERT文とは?
DEFAULT値は、データベーステーブルの設計時に、各列に予め設定できるデフォルトの値のことを指します。この値は、INSERT文で該当の列に明示的な値が提供されなかった場合に使用されます。これにより、すべての情報を都度入力することなく、デフォルトの値を使ってデータを挿入することができます。
例: 顧客情報テーブル customer で、saved_date 列のデフォルト値を現在の日時( CURRENT_TIMESTAMP )として設定します。
CREATE TABLE customer ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, route VARCHAR(10) NOT NULL, saved_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, price INT NOT NULL );
上記のテーブル定義の saved_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
この部分があることで、saved_date 列に特定の日時を指定しない場合、現在の日時が自動で挿入されるようになります。
次に、新しい顧客情報を追加しますが、saved_date は指定せず、デフォルトの値を使用する方法を示します。
INSERT INTO customer (name, route, price) VALUES ('鈴木', 'ad4', 2600);
上記のINSERT文では、saved_dateについての指定がないため、デフォルトの値である現在の日時が使用されます。
結果:
id | name | route | saved_date | price |
---|---|---|---|---|
1 | 佐藤 | ad1 | 2023-04-01 17:29:31 | 2100 |
2 | 鈴木 | ad4 | [自動的に挿入される日時] | 2600 |
まとめ
私たちが日々行うデータの操作の中でも、INSERT文はよく利用される命令の一つです。本記事で紹介した知識を活用して、日々のデータベース作業を効率良く進めていきましょう。
以下では、SQLに関するさまざまな記事を取り上げています。SQLに関する疑問や興味がある方は、ぜひ併せて参考にしてみてください。
SQLの勉強方法は?
SQLには、今回紹介したINSERT以外にも多くの構文があり、完全に習得し、自在にデータを扱えるようになるには多くの学習時間と実践の時間が必要になります。
特に、実践の時間については独学ではなかなか設けることができないものです。実践を交えてSQLを身につけたいと考えるのであれば、総合的な実践まで経験できるプログラミングスクールがおすすめです。
当サイトTECH MANIAでは、最短3か月で基礎から実践力・応用力まで身につけることのできるプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
独学でつまずいた方、一流のITエンジニアとしてスキルを高めていきたい方は必見です。
お問い合わせは以下のリンクからお進みください。