開発者が知っておくべきSQL基礎:PostgreSQL, MySQL, Oracle経験者が解説

アプリケーション開発に欠かせない技術、それがSQL(Structured Query Language)です。
PostgreSQL、MySQL、Oracleといったリレーショナルデータベース(RDB)で広く使われていますが、実はその基本文法は、データベースが異なってもほとんど共通しています。
「データベースごとに違いがあるのでは?」と不安に感じるかもしれません。ですが、基本をしっかり押さえておけば、どのデータベースでも十分に対応できる知識になります。
本記事では、開発者が最低限知っておきたいSQLの基本文法を厳選してご紹介します。データ取得からテーブル結合(JOIN)、存在確認(EXISTS)など、現場で役立つスキルを幅広くカバーします。
目次
SQLとは?まず押さえたい基本

SQLは、リレーショナルデータベースに格納されたデータを操作するための言語です。
基本的な役割は以下の通りです。
- データの取得(検索)
- データの追加
- データの更新
- データの削除
SQLは国際標準(ISO/IEC標準)に沿って設計されており、PostgreSQL、MySQL、Oracleといった主要なデータベースで基本文法は共通しています。
開発者が押さえるべきSQLの基本文法

データを取得する(SELECT)
データベースから情報を取り出す際に使うのが、SELECT文です。
文法:
SELECT カラム1, カラム2 FROM テーブル名 WHERE 条件 ORDER BY カラム名 ASC|DESC;
例:
SELECT id, name FROM users WHERE status = ‘active’ ORDER BY created_at DESC;
- 必要なカラムを選択
- 条件を指定して絞り込み(WHERE)
- 並び順を指定(ORDER BY)
データベースの種類に関係なく、最も基本的で頻繁に使われる文法です。
テーブルの結合(JOIN)
複数のテーブルを組み合わせて、より多くの情報を一度に取得するために使うのがJOINです。
代表的なJOINの種類:
・INNER JOIN:両方のテーブルに一致するデータだけ取得
・LEFT JOIN:左側のテーブルのデータをすべて取得し、右側に一致するデータがない場合はNULL
例(INNER JOIN):
SELECT u.name, o.order_date
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
例(LEFT JOIN):
SELECT u.name, o.order_date
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
JOINを使うことで、テーブル同士のリレーションを活かした柔軟なデータ取得が可能になります。
データの存在確認(EXISTS)
特定の条件に合うデータが存在するかどうかを素早く確認する場合に使うのがEXISTSです。
例:
SELECT name
FROM users
WHERE EXISTS (
SELECT 1
FROM orders
WHERE orders.user_id = users.id
);
ポイント:
・サブクエリが1件でも結果を返すと、EXISTSはTRUEになります。
・大量データでも高速に存在チェックができるため、パフォーマンス面でも有効です。
データを追加する(INSERT)
新しいデータをテーブルに追加するには、INSERT文を使用します。
文法:
INSERT INTO テーブル名 (カラム1, カラム2) VALUES (値1, 値2);
例:
INSERT INTO users (name, email) VALUES (‘Taro Yamada’, ‘taro@example.com’);
登録するカラムを指定し、それに対応する値をセットして追加します。
データを更新する(UPDATE)
既存のデータを修正したい場合は、UPDATE文を使います。
文法:
UPDATE テーブル名 SET カラム1 = 値1 WHERE 条件;
例:
UPDATE users SET email = ‘new@example.com’ WHERE id = 1;
条件(WHERE)を忘れると全件更新になってしまうため、慎重に扱う必要があります。
データを削除する(DELETE)
不要なデータを削除するには、DELETE文を使用します。
文法:
DELETE FROM テーブル名 WHERE 条件;
例:
DELETE FROM users WHERE id = 1;
こちらもWHERE句を忘れるとテーブル内の全データが削除されてしまうため、実行前に十分な確認が必要です。
これだけは知っておきたい基本ルール
NULLの扱い
SQLにおいてNULLは、「値が存在しない」ことを意味します。
- =では比較できないため、IS NULLやIS NOT NULLを使います。
- 集計関数(COUNT, SUMなど)はNULLを無視して集計します。
例:
SELECT COUNT(*) FROM users WHERE email IS NULL;
NULLの扱いを正しく理解していないと、意図しない検索結果になることがあるため注意が必要です。
注意すべきポイント:安全なSQLを書くために

SQLインジェクション対策
ユーザーからの入力をSQLにそのまま組み込むと、SQLインジェクションという脆弱性が生じます。
安全対策としては、以下を徹底しましょう。
- プリペアドステートメントを使い、プレースホルダーで値を埋め込む
- SQL文に直接値を組み込まない
これにより、意図しないSQL実行を防ぐことができます。
可読性と保守性
SQLはチーム開発でも多用されるため、可読性を高めることが重要です。
- SQLキーワードは大文字(SELECT, FROM, WHERE)
- インデントを揃える
- 必要に応じてコメントを書く
例:
— アクティブなユーザー一覧を取得
SELECT id, name
FROM users
WHERE status = ‘active’
ORDER BY created_at DESC;
読みやすいSQLは、保守性向上にもつながります。
まとめ
SQLは、どのデータベースでも基本文法が共通しています。
データの取得、追加、更新、削除に加え、JOINによる複数テーブルの結合や、EXISTSによる存在確認といった実践的な文法も、開発現場では欠かせないスキルです。
基本を正しく理解し、安全かつ可読性の高いSQLを書くことは、開発者としての信頼につながります。 ぜひ、日々の業務の中でスキルを磨いていきましょう。
テクニケーションでは案件選択制を取り入れており、自身のスキルを伸ばしたい分野や興味のある分野に特化した業務に取り組めます。
この制度を通じて、得意分野や挑戦したい分野に専念できるため、業務に対する思いややりがいを持って遂行することが可能です。それだけでなく、自身で案件を選ぶことはエンジニア自身の成長や満足感にもつながります。
また、単価給与連動制も導入しており、実力に見合った報酬を得られる仕組みです。自身の価値が明確になるので年収アップにつながるだけでなく、業務に対するモチベーションも大きく影響します。
テクニケーションでの働き方に少しでも興味を持った方はぜひカジュアル面談をお申し込みください。