Day4 前半
「行を1件、ちゃんとテーブルに入れる」感覚を身につける
Day3 までで、テーブルという「箱」を自分で設計して作れるようになりました。
Day4 では、その箱の中に 実際のデータ(行)を入れていく 段階に進みます。
ここで主役になるのが INSERT 文 です。
まずは「1行をきちんと入れる」ことに集中します。
複数行の登録や応用は、前半で基礎を固めてから扱います。
INSERT文の役割
「このテーブルに、こういう1件分のデータを追加して」と頼む文
INSERT 文は、テーブルに新しい行を追加するための命令です。
Day1 でいうところの「名簿に新しい1行を足す」「顧客カードを1枚追加する」に相当します。
イメージとしては、次のような会話をデータベースにしている感じです。
「users テーブルに、新しいユーザーを1人登録して。
ID は 1、名前は 山田太郎、年齢は 25、メールは taro@example.com だよ。」
これを SQL で表現したものが INSERT 文です。
INSERT文の基本形
形を丸暗記するのではなく、「意味」で覚える
SQLite における INSERT 文の基本形は次の通りです。
INSERT INTO テーブル名 (列名1, 列名2, 列名3, ...)
VALUES (値1, 値2, 値3, ...);
SQLここでやっていることは、とてもシンプルです。
どのテーブルの
どの列に
どんな値を入れるか
を、1対1で対応させて宣言しています。
列名の並び順と、VALUES の中の値の並び順が対応している、という点がとても重要です。
例題:usersテーブルに1人分のデータを登録する
「列」と「値」をきちんと対応させる練習
Day3 で作った users テーブルを思い出しましょう。
CREATE TABLE users (
id INTEGER,
name TEXT,
age INTEGER,
email TEXT
);
SQLこのテーブルに、次のユーザーを登録したいとします。
ID: 1
名前: 山田太郎
年齢: 25
メール: taro@example.com
これを INSERT 文にすると、次のようになります。
INSERT INTO users (id, name, age, email)
VALUES (1, '山田太郎', 25, 'taro@example.com');
SQLここで確認してほしいポイントは二つです。
id 列には 1(整数)が入っている。
name 列には ‘山田太郎’(文字列)が入っている。
INTEGER 型の列には数値を、TEXT 型の列にはシングルクォートで囲んだ文字列を入れています。
Day3 で学んだ「型」の知識が、ここで実際の値と結びつきます。
文字列は必ずクォートで囲む
ここを雑にすると、エラーやバグの温床になる
SQL では、文字列は必ず '...' のようにシングルクォートで囲みます。
'山田太郎'
'taro@example.com'
'ノートPC'
SQL一方、数値はクォートで囲みません。
25
120000
1
SQLもし文字列をクォートで囲み忘れると、SQL はそれを「列名」や「キーワード」と勘違いしてエラーになります。
逆に、数値をクォートで囲んでも SQLite は受け付けてしまうことが多いですが、「数値なのか文字列なのか」が曖昧になり、後で混乱の元になります。
セキュリティの観点からも、「文字列は必ずクォート」「数値はクォートしない」というルールを徹底しておくことは重要です。
曖昧さを減らすことが、攻撃の余地を減らすことにもつながります。
実際にINSERTして、SELECTで確認する流れ
「入れたつもり」を卒業して、「入ったことを確かめる」習慣をつける
Day4 では、必ず次のセットで考えてください。
INSERT INTO users (id, name, age, email)
VALUES (1, '山田太郎', 25, 'taro@example.com');
SELECT * FROM users;
SQLINSERT したら、必ず SELECT で確認する。
この癖をつけておくと、「入れたつもりだった」「列の順番を間違えていた」といったミスにすぐ気づけます。
結果は次のようなイメージになります。
id | name | age | email
---+------------+-----+----------------------
1 | 山田太郎 | 25 | taro@example.com
この瞬間、「テーブルに行が1件入った」という感覚が、頭ではなく体で分かり始めます。
列の順番を変えてINSERTすることもできる
「列名を書いているからこそ」順番を自由にできる
実は、INSERT 文では、列の順番を変えて書くこともできます。
INSERT INTO users (name, email, age, id)
VALUES ('佐藤花子', 'hanako@example.com', 19, 2);
SQLこの場合でも、列名と値が1対1で対応している限り、正しく登録されます。
重要なのは、「列名の並び」と「VALUES の並び」が一致していることです。
逆に、列名を書かずにこう書くことも technically 可能です。
INSERT INTO users
VALUES (3, '鈴木一郎', 30, 'ichiro@example.com');
SQLしかし、これは 初心者にはおすすめしません。
テーブル定義の列順に強く依存してしまい、あとから列を追加・変更したときにバグの原因になります。
安全で読みやすいコードを書くためにも、INSERT では必ず列名を書く、という習慣をつけておくのがプロのやり方です。
Day4 前半のまとめ
INSERT 文は「テーブルに新しい行を1件追加する」命令。
基本形は INSERT INTO テーブル名 (列名...) VALUES (値...);。INTEGER 型の列には数値を、TEXT 型の列にはクォート付きの文字列を入れる。INSERT したら必ず SELECT で確認する習慣をつける。
列名を書くことで、列の順番を変えても安全に値を対応させられる。
後半では、
同じ INSERT 文で 複数行を一気に登録する方法、
サンプルデータをまとめて入れて「集合としてのテーブル」を体感する練習、
そして「大量データを入れるときに気をつけるべきセキュリティと品質の視点」
を、具体例つきで解説していきます。
