【AlmaLinux 9】MySQL初心者講座 第3回:SQL基本4操作「CRUD」を完全マスターする

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
「MySQL初心者講座」もいよいよ核心に迫ってきました。前回作成した users テーブルは、まだ空っぽの器の状態です。今日はこの器にデータを盛り込み、自由自在に操る術を学んでいきましょう。

Webサービスを作るとき、プログラムがデータベースに対して行う命令は、大きく分けて4つのパターンしかありません。この4つを総称して「CRUD(クラッド)」と呼びます。この言葉はエンジニア同士の会話で日常的に飛び交うので、まずはこの用語を頭に叩き込みましょう。

コウ君

先生、CRUD(クラッド)って、なんだか強そうな名前ですね!
これまで「SELECT * FROM…」みたいなのは見たことありますが、データの更新や削除って一歩間違えると取り返しがつかないことになりそうで怖いです。間違えて全部消しちゃったりしないでしょうか?

リナックス先生

コウ君、その恐怖心はプロとしてとても大切よ。実際に「WHERE句を忘れて本番環境の全ユーザーを削除した」なんて悲劇は、歴史上何度も起きているわ。
だからこそ、今回は「安全に操作するための手順」も含めて教えるわね。AIを「構文チェッカー」として使いながら、確実な一歩を踏み出していきましょう!

📚 MySQL初心者講座・連載ロードマップ(全8回)

  • 【第1回】データベースの概念と最速インストール・初期設定
  • 【第2回】テーブル設計の極意:データ型と主キーの重要性
  • 【第3回】SQL基本4操作(CRUD):SELECT/INSERT/UPDATE/DELETEをマスターする(本記事)
  • 【第4回】データの抽出と並び替え:WHERE句とORDER BYを使いこなす(公開予定)
  • 【第5回】複数のテーブルを繋ぐ:JOIN(結合)の魔法を理解する(公開予定)
  • 【第6回】集計とグループ化:COUNT/SUMとGROUP BYで統計を取る(公開予定)
  • 【第7回】インデックスとパフォーマンス:重いクエリを劇的に速くする方法(公開予定)
  • 【第8回】バックアップと復旧:mysqldumpによるデータ保護と自動化(公開予定)

1. データの生命線「CRUD」とは何か?

CRUDとは、データベースの基本操作となる4つの頭文字を繋げた言葉です。

略称 正式名称 SQL文 役割
C Create INSERT 新しくデータを「作る」
R Read SELECT データを「読み出す」
U Update UPDATE 既存のデータを「書き換える」
D Delete DELETE データを「消す」

この4つさえマスターすれば、世界中のほとんどのWebサービスの裏側の仕組みを理解したと言っても過言ではありません。それでは、一つずつ具体的に見ていきましょう。


2. C (Create):INSERTでデータを登録する

まずは、空のテーブルに新しいレコードを追加する INSERT 命令です。

2-1. 基本の書き方

INSERT INTO users (name, email, age) 
VALUES ('コウ君', 'kou@example.com', 25);

解説:
前回、id カラムには AUTO_INCREMENT を設定しましたね。そのため、id は自動で採番されるので、INSERT文で指定する必要はありません。また、created_at もデフォルト値が入るように設定したので、ここでも省略可能です。必要な項目(カラム名)を並べ、それに対応する値(VALUES)を記述します。

2-2. 複数のデータをまとめて登録する

一度に何件も登録したい場合は、カンマ区切りで値を並べることができます。これを「バルクインサート」と呼び、大量のデータを扱う際に非常に効率的です。

INSERT INTO users (name, email, age) VALUES 
('リナックス先生', 'sensei@example.com', 30),
('田中太郎', 'tanaka@example.com', 40),
('佐藤花子', 'sato@example.com', 22);

3. R (Read):SELECTでデータを取り出す

登録されたデータを確認するための SELECT 命令です。開発中に最も多く使うコマンドです。

3-1. 全てのデータを見る

SELECT * FROM users;

「*(アスタリスク)」は「すべてのカラム」という意味です。ただし、本番環境で何百万件もデータがあるテーブルに対し、全カラムを取得するのは非常に重くなるため、プロの現場では推奨されません。

3-2. 必要なカラムだけ選ぶ

SELECT name, email FROM users;

このように取得したい項目を明示することで、通信量を節約し、処理速度を向上させることができます。


4. U (Update):UPDATEでデータを更新する(要注意!)

既存のレコードの内容を書き換える UPDATE 命令です。ここからが「WHERE句」の重要性が増す、緊張のエリアです。

4-1. 基本の書き方

UPDATE users SET age = 26 WHERE id = 1;

解説:
WHERE id = 1 というのが「誰のデータを変えるか」という条件指定です。この WHERE を書き忘れると、テーブル内の全ユーザーの年齢が26歳になってしまいます。 これが冒頭で触れた「事故」の正体です。

4-2. 複数の項目を一度に変える

UPDATE users SET name = 'コウ', age = 27 WHERE id = 1;

カンマで繋ぐことで、一度の命令で複数のカラムを更新できます。


5. D (Delete):DELETEでデータを削除する(最重要警戒!)

不要なレコードを物理的に消し去る DELETE 命令です。一度実行すると、バックアップがない限り元に戻せません。

5-1. 基本の書き方

DELETE FROM users WHERE id = 4;

解説:
UPDATEと同様、WHERE 句が必須です。もし DELETE FROM users; と打ってしまったら、その瞬間にテーブルは空っぽになります。プロは、DELETEを実行する前に必ず SELECT * FROM users WHERE id = 4; と打って、消そうとしているデータが正しいかを確認する癖をつけています。

5-2. 「論理削除」という考え方

実務では DELETE を使わずに、テーブルに is_deleted(削除フラグ)というカラムを作り、それを 1 に更新することで「削除されたことにする」手法(論理削除)がよく使われます。これにより、誤操作によるデータの消失を防ぐことができます。


6. 実践:安全な運用のための「トランザクション」入門

MySQLには、複数の命令を一塊の処理として扱い、失敗したら「なかったこと」にできる「トランザクション」という機能があります。

# 1. トランザクション開始
START TRANSACTION;

# 2. 恐る恐るデータを更新
UPDATE users SET age = 99 WHERE id = 1;

# 3. 状態を確認
SELECT * FROM users;

# 4. もし間違っていたら「巻き戻し(キャンセル)」
ROLLBACK;

# 5. 正しければ「確定(セーブ)」
COMMIT;

初心者のうちは、UPDATEやDELETEを行う際は、このトランザクションを必ずセットで使うようにしましょう。これで「一文字ミスして絶望する」ことはなくなります。


7. AIを活用したSQL文の組み立てとデバッグ

SQL文の書き方に迷ったときは、AIに具体例を出してもらうのが効率的です。

7-1. デバッグ用プロンプトの例

「MySQLで、特定のドメイン名を含むユーザーの年齢をすべて一律で1つ増やしたいです。
1. 対象を確認するためのSELECT文
2. 安全に更新するためのトランザクションを含めたUPDATE文
を作成してください。WHERE句の正規表現についても解説をお願いします。」

AIは単にコードを出すだけでなく、「更新前に必ずSELECTで件数を確認してくださいね」といった運用上の注意点もセットで教えてくれます。


まとめ:基本操作の習得が「Web開発」への扉を開く

第3回の講座、お疲れ様でした!

今日は、データベース操作の核心である「CRUD」を、実例とともに学びました。SQLは非常に強力な言語ですが、その分「WHERE句一つ」で天国と地獄が分かれるシビアな世界でもあります。

今回学んだ「トランザクション」や「事前確認」の癖を今のうちに身につけておくことで、将来本番サーバーを任されるようになった際も、落ち着いて作業できるエンジニアになれますよ。

次回、第4回「データの抽出と並び替え:WHERE句とORDER BYを使いこなす」では、今回少しだけ触れた「WHERE句」のバリエーションを深掘りします。「〜を含む人」「〜より大きい人」など、思い通りのデータを取り出すためのテクニックを伝授します。お楽しみに!

▼ 実際にデータを動かしてみよう ▼

CRUD操作の練習に最適な
「AlmaLinux 9標準搭載のVPS」

VPSおすすめ比較

データベースを自在に操れる
「フルスタックエンジニアへの道」

エンジニア転職の相談

コメント