Developer

【SQL基礎】INSERT文の基本構文
2020.11.30
Lv1

【SQL基礎】INSERT文の基本構文

INSERT文の基本構文

テーブルにデータを挿入するには、INSERT文を使います。

INSERT文の基本構文は以下の通りです。

 

INSERT INTO テーブル名 (カラム名1, カラム名2, ……)

VALUES (値1, 値2, ……);

 

INSERT INTOの後に対象のテーブルとカラムを指定します。

VALUES句には挿入したい値を指定します。

注意点

・カラム名と値はそれぞれ()で括ります。

・カラム名の順序と値の順序を対応させる必要があります。

・カラムと値はカンマで区切ります。

・VARCHAR型などの文字列はシングルクォーテーションで括ります。

(参考:【SQL基礎】データ型とは

 

INSERT文の実行例

では、実際に以下のテーブル(テーブル名:teachers)にデータを挿入してみましょう。

例1.idが4、nameがテツヒコ、addressが東京都、ageが30のレコードを挿入する。

INSERT INTO teachers (id, name, address, age) VALUES (4, ‘テツヒコ’, ‘東京都’, 30);

テーブルを確認すると以下のように表示され、データが挿入されたことがわかります。

 

カラム名の省略

対象のテーブルに存在するすべてのカラムを指定する場合は、カラム名を省略することができます。

例2.idが5、nameがヒロシ、addressが神奈川県、ageが25のレコードを挿入する。※カラム名を省略して実行する。

INSERT INTO teachers VALUES (5, ‘ヒロシ’, ‘神奈川県’, 25);

カラム名を省略してもデータは問題なく挿入されています。

 

MySQLを含む一部のデータベースでのみ使える書き方

一部のデータベースでのみ使える書き方というのも存在します。

MySQLではINTO句が省略可能であり、VALUES句をVALUEと書くことも可能です。

例3.idが6、nameがユウタ、addressが千葉県、ageが27のレコードを挿入する。※INTO句を省略し、VALUES句をVALUEと書いて実行する。

INSERT teachers VALUE (6, ‘ユウタ’, ‘千葉県’, 27);

INTO句を省略しVALUES句をVALUEと書いてもデータは問題なく挿入されています。

 

今回の学習ポイント

・データを挿入するにはINSERT文を使用する。

・テーブルに存在するすべてのカラムを指定する場合にはカラム名は省略できる。

・MySQL等の一部のデータベースでのみ使える書き方も存在する。

 

練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
また、ダウンロードしたら以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.zip

[sql] CREATE DATABASE worldcup2014;

use worldcup2014

source C:\worldcup2014.sql
[/sql]

playersテーブルはid, country_id, uniform_num, position, name, club, birth, height, weightの9カラムで構成されています。

 

1.以下のSQLを実行しようとしましたが、うまくいきませんでした。

原因は何でしょうか。

INSERT INTO players (id, uniform_num, name, club)
VALUES (999, 99, タロウ, チームSAK);
答え

問題のSQLを実際に実行すると以下のようにエラーが出ます。

文字列である「タロウ」と「チームSAK」をシングルクォーテーションで囲っていないことが原因です。

以下のように実行すると成功します。

[sql] INSERT INTO players (id, uniform_num, name, club)
VALUES (999, 99, ‘タロウ’, ‘チームSAK’);
[/sql]

2.playersテーブルにイチロウ選手を登録してください。

背番号は51、所属チームはオリナーズ、idは1000としてください。

答え
[sql] INSERT INTO players (id, uniform_num, name, club)
VALUES (1000, 51, ‘イチロウ’, ‘オリナーズ’);
[/sql]

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ