0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

42日でバックエンドエンジニアの基礎を完全に理解する #5 - SQL基礎(CRUD)

0
Last updated at Posted at 2026-06-17

この記事で学ぶこと

前回(#4)はGoからDBにデータを保存・取得しました。ただSQLについては最低限しか触れていません。この記事からはデータベースそのものを基礎から学びます。

この記事を終えると以下ができるようになります。

  • リレーショナルデータベース(RDB)の基本概念を説明できる
  • SQLでデータの取得・追加・更新・削除(CRUD)ができる
  • psqlでDBを直接操作できる
    DBはバックエンドの心臓部です。AIにSQLを書かせるだけでなく、自分で読み書きできて「何が起きているか」を理解できるようになることを目指します。

リレーショナルデータベースとは

データを「表」で管理する

リレーショナルデータベース(RDB)は、データを 表(テーブル) の形で管理するデータベースです。PostgreSQL、MySQL、Oracleなどが代表例です。

前回作った users テーブルはこんな表になっています。

id name age
1 washi 30
2 taro 25
3 hanako 28
  • テーブル → 表そのもの(users
  • カラム(列) → 縦の項目(id, name, age
  • レコード(行) → 横1行のデータ(1, washi, 30
    Excelの表をイメージすると分かりやすいです。違いは、DBは大量のデータを高速に検索でき、複数人が同時にアクセスしても安全に扱える点です。

なぜ「リレーショナル」なのか

「リレーション(関係)」が名前の由来です。複数のテーブルを関連づけて管理できます。たとえば「ユーザー」と「注文」を別々のテーブルで持ち、「どのユーザーがどの注文をしたか」を関連づけられます。この関連づけは #7 のJOINで扱います。


SQLの基本(CRUD)

DBを操作する言語がSQLです。基本操作は4つで、頭文字をとって CRUD(クラッド) と呼びます。

操作 SQL 意味
Create INSERT データを追加する
Read SELECT データを取得する
Update UPDATE データを更新する
Delete DELETE データを削除する

前回(#3)学んだHTTPメソッド(POST/GET/PUT/DELETE)と対応していることに気づくと思います。APIのメソッドとDBの操作はだいたい対応します。


【手を動かす①】DBに接続する

前回起動したPostgreSQLコンテナにSQLを直接打ち込んでみましょう。

コンテナが止まっている場合
前回 docker stop で止めたなら docker start pg-practice で再開できます。削除した場合は前回(#4記事相当)の docker run コマンドで作り直してください。

コンテナが起動していることを確認します。

docker ps
# pg-practice が Up になっていればOK

コンテナの中のPostgreSQLに接続します。

docker exec -it pg-practice psql -U postgres -d testdb
  • docker exec -it pg-practice → pg-practiceコンテナの中でコマンドを実行(-it は対話モード)
  • psql → PostgreSQLの対話ツール
  • -U postgres → ユーザー名postgresで
  • -d testdb → testdbデータベースに接続
    接続できると testdb=# というプロンプトに変わります。ここでSQLを打てます。

SELECT(取得)

SELECT * FROM users;

users テーブルの全データを取得します。* は「全カラム」の意味。前回作ったデータが表示されるはずです。

特定のカラムだけ取得:

SELECT name, age FROM users;

SELECT 取得したいカラム FROM テーブル名; が基本の形です。


WHERE(条件で絞り込む)

SELECT * FROM users WHERE age >= 28;

age が28以上のレコードだけ取得します。WHERE は条件指定です。

SELECT * FROM users WHERE name = 'washi';

名前が washi のレコードを取得。文字列はシングルクォートで囲みます。

主な比較演算子:

演算子 意味
= 等しい
>= <= 以上・以下
> < より大きい・より小さい
!= または <> 等しくない
LIKE 部分一致(LIKE 'wa%' で wa で始まるもの)

INSERT(追加)

INSERT INTO users (name, age) VALUES ('jiro', 22);

新しいレコードを追加します。idSERIAL(自動採番)なので指定しません。

INSERT INTO テーブル名 (カラム) VALUES (値); が基本の形です。


UPDATE(更新)

UPDATE users SET age = 31 WHERE name = 'washi';

washi の年齢を31に更新します。

最重要の注意:WHERE を忘れると全レコードが更新されます。

UPDATE users SET age = 0;
-- WHEREがないので全員のageが0になる!絶対やってはいけない

これは現場でもやらかしがちな事故です。UPDATEとDELETEを打つときは、必ずWHEREがあるか確認する癖をつけてください。


DELETE(削除)

DELETE FROM users WHERE name = 'jiro';

jiro のレコードを削除します。これも WHERE を忘れると全削除されるので要注意です。


psqlを抜ける

\q

【手を動かす②】CRUDを一通り試す

psqlに接続した状態で、以下を順番に実行してみてください。

-- 現在のデータを確認
SELECT * FROM users;
 
-- 新規追加
INSERT INTO users (name, age) VALUES ('saburo', 40);
 
-- 追加されたか確認
SELECT * FROM users WHERE name = 'saburo';
 
-- 更新
UPDATE users SET age = 41 WHERE name = 'saburo';
 
-- 更新されたか確認
SELECT * FROM users WHERE name = 'saburo';
 
-- 削除
DELETE FROM users WHERE name = 'saburo';
 
-- 削除されたか確認(0件になる)
SELECT * FROM users WHERE name = 'saburo';

CRUDの一連の流れが体感できます。


確認テスト

知識問題

  1. テーブル、カラム、レコードはそれぞれ何ですか?
  2. CRUDの4つの操作と対応するSQLを答えてください
  3. SELECT * FROM users WHERE age >= 28; は何をしますか?
  4. SQLで文字列を指定するとき、何で囲みますか?
  5. UPDATEやDELETEで一番気をつけるべきことは何ですか?
  6. LIKE 'wa%' はどんな条件ですか?

実技問題

  1. products テーブルから価格が1000円以上の商品を全カラム取得するSQLを書いてください
  2. products テーブルに「name=Coffee, price=500」を追加するSQLを書いてください
  3. washi というユーザーの age を 35 に更新するSQLを書いてください(usersテーブル、nameで絞り込む)
  4. taro というユーザーを削除するSQLを書いてください

確認テスト 解答・解説

1. テーブルは表そのもの。カラムは縦の項目(列)。レコードは横1行のデータ。

2. Create=INSERT(追加)、Read=SELECT(取得)、Update=UPDATE(更新)、Delete=DELETE(削除)。

3. usersテーブルから、ageが28以上のレコードを全カラム取得する。

4. シングルクォート(')で囲む。

5. WHEREを忘れないこと。WHEREがないと全レコードが対象になってしまう。

6. name が「wa」で始まる文字列(前方一致)。% は任意の文字列を表すワイルドカード。

7.

SELECT * FROM products WHERE price >= 1000;

8.

INSERT INTO products (name, price) VALUES ('Coffee', 500);

9.

UPDATE users SET age = 35 WHERE name = 'washi';

10.

DELETE FROM users WHERE name = 'taro';

次回: #6 テーブル設計と正規化

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?