INSERT文(インサートぶん)とは | 意味や読み方など丁寧でわかりやすい用語解説
INSERT文(インサートぶん)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
挿入文 (ソウニュウブン)
英語表記
INSERT statement (インサートステートメント)
用語解説
INSERT文は、リレーショナルデータベース管理システム(RDBMS)において、テーブルに新しい行(レコード)のデータを追加するための命令である。これはデータベースを操作するための標準言語であるSQL(Structured Query Language)に含まれる、データ操作言語(DML)の一つに分類される。データベースに対する基本的な操作は、データの生成(Create)、読み取り(Read)、更新(Update)、削除(Delete)の四つに大別され、これらは頭文字を取ってCRUDと呼ばれる。INSERT文は、このうちの「Create」を担う、データベース利用の根幹をなす極めて重要な命令である。Webアプリケーションでユーザーが会員登録を行ったり、ブログに新しい記事を投稿したり、ECサイトに商品情報を登録したりする際、その入力されたデータは内部的にINSERT文によってデータベースのテーブルに保存される。
INSERT文の最も基本的な構文は、どのテーブルのどのカラムに、どのような値を追加するのかを明示的に指定する形式である。具体的には、「INSERT INTO テーブル名 (カラム名1, カラム名2, ...) VALUES (値1, 値2, ...)」という形式で記述する。最初の「INSERT INTO」句でデータを追加する対象のテーブルを指定する。続く括弧内のカラム名リストには、値を設定したいカラムをカンマ区切りで列挙する。そして「VALUES」句の後の括弧内に、カラム名リストの順序に対応する具体的な値をカンマ区切りで記述する。例えば、idとnameというカラムを持つusersテーブルに新しいユーザーを追加する場合、「INSERT INTO users (id, name) VALUES (1, '山田太郎')」のように記述する。この際、カラムのデータ型と指定する値のデータ型が一致している必要がある。数値型のカラムには数値を、文字列型のカラムにはシングルクォーテーションで囲んだ文字列を指定するのが一般的である。カラムリストで指定されなかったカラムについては、テーブル定義時にデフォルト値が設定されていればその値が、そうでなければNULL(値が存在しないことを示す特別な値)が自動的に設定される。ただし、NOT NULL制約が付与されているカラムを省略するとエラーが発生する。
テーブルに定義されている全てのカラムに対して、定義された順序通りに値を指定する場合に限り、カラム名リストを省略することも可能である。その場合の構文は「INSERT INTO テーブル名 VALUES (値1, 値2, ...)」となる。この方法は記述が短くなる利点があるが、将来的にテーブルの構造が変更された場合(カラムの追加や順序の変更など)に、SQL文を修正する必要が生じる。意図しないカラムにデータが挿入されるリスクもあり、保守性の観点から、カラム名リストを明示的に指定する方が安全で推奨される手法である。
一度の命令で複数の行をまとめて挿入することもできる。これは「INSERT INTO テーブル名 (カラム名1, ...) VALUES (値A1, ...), (値B1, ...), ...」のように、VALUES句の後に値のセットをカンマで区切って複数記述することで実現する。一件ずつINSERT文を実行するのに比べて、データベースとの通信回数が一度で済むため、大量の初期データを投入する際などに処理性能を大幅に向上させることができる。
また、他のテーブルに存在するデータをコピーして新しい行として挿入する機能も備わっている。これはINSERT-SELECT文と呼ばれ、「INSERT INTO テーブル名 (カラム名リスト) SELECT ...」という構文を用いる。VALUES句の代わりにSELECT文を記述し、そのSELECT文が返す結果セットをそのまま挿入する。このとき、SELECT文で取得されるカラムの数、順序、データ型が、INSERT先のテーブルのカラムリストと一致している必要がある。データのバックアップや、集計結果を別のテーブルに保存する際など、実用的な場面で頻繁に利用される。
INSERT文を実行する際には、テーブルに設定された制約を遵守する必要がある。制約は、データの整合性を保つためのルールである。例えば、各行を一意に識別するための主キー(PRIMARY KEY)制約が設定されたカラムには、既に存在する値やNULLを挿入することはできない。同様に、一意キー(UNIQUE)制約も重複した値を許さない。また、NOT NULL制約が設定されたカラムに値を指定しない、あるいはNULLを指定しようとするとエラーになる。さらに、外部キー(FOREIGN KEY)制約は、他のテーブルとの関連を定義するものであり、参照先のテーブルに存在しない値を関連カラムに挿入しようとすると失敗する。これらの制約に違反するデータを挿入しようとした場合、データベースはエラーを返し、INSERT処理は実行されない。このように、INSERT文は単にデータを追加するだけでなく、データベースの整合性を維持する仕組みと密接に関連している。 以上のように、INSERT文はデータベースに新しい命を吹き込むための基本的な手段であり、その構文や関連する制約を正しく理解することは、システム開発を行う上で不可欠な知識である。