3秒でわかる
テーブルに入っている 1 件分のデータのまとまり。列ごとに決めた型と制約に沿って値が並び、SQL の検索や更新はこの単位で行や件数を数えます。
もう少し詳しく
どういうものか
レコードは、テーブルの横 1 行分のデータである。users テーブルに id name email created_at という列があるなら、「id が 42、name が 佐藤、email が sato@example.com、登録日が 2026-04-01」という 1 人分のまとまりが 1 レコードにあたる。
行 (row) と呼ばれることも多く、SQL の文脈ではほぼ同義で使われる。厳密には、行が表の物理的な 1 行を指すのに対し、レコードは意味のある 1 件のデータという捉え方をする。
なぜ必要か
データベースの操作は、ほぼすべてがレコード単位で成立している。INSERT は 1 件を足し、DELETE は条件に合う件を消し、UPDATE は条件に合う件の列を書き換える。SELECT が返すのも条件に合ったレコードの集まりである。
そして各レコードは主キーで一意に識別される。主キーがあるからこそ「この 1 件だけ更新する」が言えるし、他のテーブルから外部キーで指せる。
具体例
-- 1 レコード追加する
INSERT INTO users (name, email) VALUES ('佐藤', 'sato@example.com');
-- 条件に合うレコードを取り出す
SELECT id, name, created_at FROM users WHERE created_at >= '2026-04-01';
-- 主キーで 1 件だけ更新する
UPDATE users SET email = 'sato.new@example.com' WHERE id = 42;
-- 件数を数える (レコード数を数えている)
SELECT COUNT(*) FROM users;つまずきやすいところ
WHERE を付け忘れた UPDATE と DELETE が最も多い事故である。DELETE FROM users; はテーブルの全レコードを消す。実行前に同じ条件で SELECT を打ち、消えるはずの件数を確かめてから走らせる習慣が効く。
もう 1 つ、レコードが「1 件」であることと、画面上の 1 件が一致しない場合がある。JOIN を挟むと、注文 1 件が明細の数だけ行として返る。件数を数えるときに COUNT(*) ではなく COUNT(DISTINCT orders.id) が必要になるのはこの状況である。
似た用語との違い
| 語 | 指すもの |
|---|---|
| レコード / 行 | テーブルの横 1 件分のデータ |
| カラム / 列 | 縦方向の項目。名前と型を持つ |
| フィールド | 1 レコードの中の 1 項目。行と列の交点 |
| テーブル | レコードの集まり |
なお、プログラミング言語側にも「レコード型」という語がある。TypeScript の Record や Java の record はデータベースのレコードとは別の概念なので、検索するときは文脈を確かめる。