38
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

そのSQL、本当に大丈夫?実務で意識したい5つの基本ルール

38
Last updated at Posted at 2026-07-17

目次

  • はじめに
  • SELECT * を多用しない
  • WHERE句を意識する
  • ORDER BYを書こう
  • NULLの扱いを理解する
  • エイリアスを活用する
  • まとめ

SQLを書く前に知っておきたい5つの基本ルール

はじめに

SQLはデータベースを扱ううえで欠かせない言語ですが、最初のうちは「とりあえず動けば良い」と考えてしまいがちです。
しかし、実務ではSQLが正しく動くだけでなく、読みやすさ・保守性・パフォーマンスも重要になります。

今回は、これからSQLを学び始める方や、実務でSQLを書く機会が増えてきた方向けに、私が「最初に知っておくと役立つ」と感じた5つの基本ルールをご紹介します。
本記事では、単に書き方を紹介するだけではなく、なぜその書き方が重要なのかという理由もあわせて紹介します。


1. SELECT * を多用しない

SELECT * はすべての列を取得できるため便利ですが、実務では必要な列だけを取得することを意識しましょう。

NG例

SELECT *
FROM Employee;

OK例

SELECT
    EmployeeId,
    EmployeeName,
    Department
FROM Employee;

ポイント

  • 必要なデータだけ取得できる
  • 通信量や取得データ量を抑えられる
  • SQLの内容が分かりやすくなる
  • テーブル構成の変更による影響を受けにくい

なぜ重要?
テーブルに新しいカラムが追加された際、SELECT * を使用していると意図せず取得対象になってしまう可能性があります。
また、必要以上のデータを取得することでパフォーマンスの低下や可読性の低下につながる場合もあるため、必要な列を明示的に指定することが重要です。

開発中の調査では SELECT * を使用する場面もありますが、最終的に運用するSQLでは、取得する列を明示的に指定することを意識しましょう。


2. WHERE句を意識する

WHERE句は必要なデータだけを取得するために欠かせない条件です。

NG例

SELECT *
FROM Sales;

OK例

SELECT
    SalesId,
    Price
FROM Sales
WHERE SalesDate >= '2026-01-01';

ポイント

  • 必要なデータだけ取得できる
  • 処理速度の改善につながる場合がある
  • UPDATEやDELETEでは特に重要

なぜ重要?
WHERE句を付け忘れると、意図しない大量のデータを取得してしまうだけでなく、UPDATEやDELETEでは全件更新・全件削除につながる可能性があります。
特に更新系SQLでは、実行前に対象件数を確認する習慣を付けることが重要です。


3. ORDER BYを書こう

SQLの実行結果は、ORDER BYを指定しない限り並び順が保証されません。

SELECT
    EmployeeId,
    EmployeeName
FROM Employee
ORDER BY EmployeeId;

ポイント

  • 表示順を明確にできる
  • 毎回同じ順番で結果を確認できる
  • テストやデータ確認がしやすくなる

なぜ重要?
ORDER BYを指定しない場合、取得順は保証されません。
同じSQLでも実行するたびに表示順が変わる可能性があり、テストやデータ調査の際に誤った判断につながることがあります。

「前回と順番が違う」というトラブルを防ぐためにも、必要に応じてORDER BYを記述することをおすすめします。


4. NULLの扱いを理解する

NULLは「空文字」や「0」ではなく、「値が存在しない状態」を表します。

そのため、通常の比較演算子では判定できません。

NG例

WHERE Name = NULL

OK例

WHERE Name IS NULL

また、NULLではないデータを取得したい場合は以下のように記述します。

WHERE Name IS NOT NULL

ポイント

  • NULLは特殊な値として扱われる
  • 比較には IS NULLIS NOT NULL を使用する
  • NULLの仕様を理解すると原因調査もしやすくなる

なぜ重要?
NULLは通常の値とは異なるため、= を使って比較しても期待した結果は取得できません。
NULLの仕様を理解しておくことで、不具合調査やデータ確認をスムーズに進めることができます。


5. エイリアスを活用する

エイリアス(別名)は、テーブルやカラムに一時的な名前を付ける機能です。

エイリアスを使用する目的は、SQLを短く書くことではなく、テーブルやカラムの役割を分かりやすくし、可読性を向上させることです。

エイリアスなし

SELECT
    ACCOUNT.account_name,
    REQUEST.request_date
FROM
    REQUEST
    INNER JOIN ACCOUNT
        ON ACCOUNT.account_id = REQUEST.employee_account_id;

テーブル名を毎回記述するため、SQLが長くなり、JOINが増えるほど読みづらくなります。

エイリアスあり

SELECT
    emp_account.account_name,
    req.request_date
FROM
    REQUEST req
    INNER JOIN ACCOUNT emp_account
        ON emp_account.account_id = req.employee_account_id;

エイリアスを使用することで、SQLを簡潔に記述できるだけでなく、テーブルの役割も把握しやすくなります。

さらに、同じテーブルを複数回使用する場合は、役割が分かる名前を付けることで可読性が向上します。

SELECT
    req.request_id,
    emp_account.account_name   AS employee_name,
    admin_account.account_name AS admin_name
FROM
    REQUEST req
    INNER JOIN ACCOUNT emp_account
        ON emp_account.account_id = req.employee_account_id
    LEFT JOIN ACCOUNT admin_account
        ON admin_account.account_id = req.admin_account_id;

この例では、どちらも ACCOUNT テーブルですが、

  • emp_account:申請者のアカウント
  • admin_account:承認者のアカウント

というように役割が名前から分かるため、「どのアカウントを参照しているのか」をすぐに判断できます。

ポイント

  • SQLを読みやすくできる
  • テーブルの役割が分かりやすくなる
  • 同じテーブルを複数回使用しても区別しやすい
  • 保守やレビューの際に内容を理解しやすくなる

なぜ重要?

テーブル数が増えるほどSQLは複雑になります。
エイリアスを活用することでSQLの可読性が向上し、レビューや保守もしやすくなります。
特にJOINを多用するSQLでは、エイリアスを付けることで記述量を減らし、読みやすいSQLを書くことができます。
abe のような短いエイリアスは、SQLが短いうちは問題ありませんが、
JOINするテーブルが増えると、「どのテーブルを表しているのか」が分かりにくくなることがあります。

reqemp_accountadmin_account のように役割が分かるエイリアスを付けることで、SQLを読む人が内容を理解しやすくなり、保守やレビューもしやすくなります。


まとめ

今回ご紹介した内容はどれも基本的なことですが、実務では非常に重要です。

  • SELECT * を多用しない
  • WHERE句で必要なデータだけ取得する
  • ORDER BYで並び順を明確にする
  • NULLは特殊な値として扱う
  • エイリアスを活用して読みやすいSQLを書く

SQLは「動けば良い」だけではなく、他の人が読んでも理解しやすいことも大切です。

これからSQLを書く機会がある方は、ぜひ今回紹介したポイントを意識してみてください。

参考文献

38
38
2

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
38
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?