SQLite | ゼロからはじめるSQL、30日で習得するSQLite:基礎理解 - Day4 データ登録

SQLite
スポンサーリンク

Day4 後半

「1件ずつ」から「まとめて登録」へ頭を切り替える

前半で、INSERT 文を使って「1行をきちんとテーブルに入れる」感覚はつかめました。
後半では、現実の開発でよく使う 複数行の INSERT(まとめて登録) を扱います。

ここを理解すると、テストデータを一気に流し込めるようになり、学習スピードも実務の生産性も一気に上がります。


複数行INSERTとは何か

同じテーブルに、何件分もの行を一度に追加する書き方

まず、1行だけの INSERT を思い出します。

INSERT INTO users (id, name, age, email)
VALUES (1, '山田太郎', 25, 'taro@example.com');
SQL

複数行 INSERT は、この VALUES の部分を「カンマでつないで増やす」イメージです。

INSERT INTO users (id, name, age, email)
VALUES
  (1, '山田太郎', 25, 'taro@example.com'),
  (2, '佐藤花子', 19, 'hanako@example.com'),
  (3, '鈴木一郎', 30, 'ichiro@example.com');
SQL

これで、users テーブルに 3 行が一度に追加されます。

重要なのは、
「列の並びは1回だけ書き、値の組をカンマでつないでいく」
という構造を理解することです。


例題:productsテーブルに複数の商品を一気に登録する

「テーブルが一気に“それらしく”なる感覚」を味わう

Day3 で作った products テーブルを使います。

CREATE TABLE products (
  id    INTEGER,
  name  TEXT,
  price INTEGER
);
SQL

ここに、3つの商品を一気に登録してみます。

INSERT INTO products (id, name, price)
VALUES
  (1, 'ノートPC', 120000),
  (2, 'マウス', 2000),
  (3, 'キーボード', 5000);
SQL

そのあと、必ず SELECT で確認します。

SELECT * FROM products;
SQL

結果のイメージはこうなります。

1 | ノートPC   | 120000
2 | マウス     | 2000
3 | キーボード | 5000

1件ずつ入れていたときと比べて、テーブルが一気に「データベースらしい顔」になります。
この「まとまったデータが入った状態」を早く作れることが、学習でも実務でもとても大事です。


なぜ複数行INSERTを使うのか

パフォーマンスと「人間のミス」を減らすため

技術的な理由としては、
「1回の INSERT で複数行を入れたほうが、1行ずつ何度も INSERT するより速い」
というパフォーマンス上のメリットがあります。

しかし、初心者にとってもっと大きいのは、
「同じ列の並びを何度も書かなくていいので、ミスが減る」
という点です。

例えば、1行ずつ書いているときに、2件目だけ列の順番を間違える、という事故が起きがちです。
複数行 INSERT なら、列の並びは1回だけ書き、値の組だけを増やしていくので、構造が安定します。


複数行INSERTを書くときの注意点

「1行目が正しければ、あとはそれをコピーする」発想で書く

複数行 INSERT で一番大事なのは、最初の1行を正しく書くこと です。

INSERT INTO users (id, name, age, email)
VALUES
  (1, '山田太郎', 25, 'taro@example.com'),
  (2, '佐藤花子', 19, 'hanako@example.com'),
  (3, '鈴木一郎', 30, 'ichiro@example.com');
SQL

1行目が正しく書けていれば、2行目・3行目は「値だけ変える」作業になります。
このときに意識してほしいのは、
「列の順番は変えない」「型に合った値を入れる」
という Day3・Day4 前半で学んだ基本です。

特に、TEXT 型の列に入れる値は、必ずシングルクォートで囲むこと。
ここを崩すと、複数行 INSERT 全体がエラーになり、どの行が原因か分かりにくくなります。


例題:テストデータを10件まとめて入れてみる

「テーブルは“行が増えてから”本当の姿を見せる」

学習用として、users テーブルに 10 件のテストデータを一気に入れてみるのも良い練習です。

INSERT INTO users (id, name, age, email)
VALUES
  (1, '山田太郎', 25, 'taro@example.com'),
  (2, '佐藤花子', 19, 'hanako@example.com'),
  (3, '鈴木一郎', 30, 'ichiro@example.com'),
  (4, '高橋健', 22, 'ken@example.com'),
  (5, '伊藤真理', 28, 'mari@example.com'),
  (6, '中村優', 35, 'yu@example.com'),
  (7, '小林誠', 41, 'makoto@example.com'),
  (8, '加藤彩', 27, 'aya@example.com'),
  (9, '森田亮', 33, 'ryo@example.com'),
  (10, '石井花', 20, 'hana@example.com');
SQL

そのあとで、

SELECT * FROM users;
SQL

を実行すると、「集合としてのテーブル」が一気に見えてきます。
Day1 で学んだ「テーブル=行の集合」という感覚が、ここでかなりリアルになります。


セキュリティと品質の視点から見る「大量INSERT」

「入れる前にチェックする」「入れたあとに検証する」

実務では、CSV などから大量のデータを一気に INSERT することがあります。
このときに重要なのは、次の二つの視点です。

入れる前に、データの形式が正しいかをチェックすること。
入れたあとに、件数や内容が想定どおりかを検証すること。

たとえば、年齢が INTEGER の列に、文字列が紛れ込んでいないか。
メールアドレスの形式が明らかにおかしくないか。
ID が重複していないか。

SQLite 単体では、そこまで厳密なチェックはしてくれません。
だからこそ、「型を正しく決める」「INSERT 前後で確認する」という基本を徹底することが、セキュリティと品質の両面で効いてきます。


Day4 後半のまとめ

複数行 INSERT は、VALUES の中に値の組をカンマで並べる書き方。
最初の1行を正しく書き、あとは値だけ変えることでミスを減らせる。
テストデータをまとめて入れることで、「テーブル=行の集合」という感覚が一気に強くなる。
大量にデータを入れるときほど、「型」「件数」「内容」のチェックが重要になる。

タイトルとURLをコピーしました