ロゴ
テキスト/経営情報システム/SQL(基本構文と結合)

SQL(基本構文と結合)

データベース

SQLはデータベースと会話するための言語!SELECT文と結合をマスターしよう!

1

SQL(基本構文と結合)

簡単にいうと

SQLはデータベースと会話するための言語!SELECT文と結合をマスターしよう!

① SELECT文の基本

SQLでデータを取得する最も基本的な構文がSELECT文です。基本構造は以下のとおりです。

```sql

SELECT 列名1, 列名2, ...

FROM テーブル名

WHERE 条件式

```

  • SELECT句: 取得したい列を指定する → 関係演算の「射影」に対応
  • FROM句: 対象のテーブルを指定する
  • WHERE句: 取得する行の条件を指定する → 関係演算の「選択」に対応

全列を取得する場合は `SELECT *` と書きます。WHERE句を省略すると全行が取得されます。

② WHERE句の条件指定

WHERE句では、さまざまな演算子を使って条件を細かく指定できます。

演算子・構文意味使用例
`=`, `<>`, `<`, `>`, `<=`, `>=`比較演算子`WHERE price >= 1000`
`AND`両方の条件を満たす(論理積)`WHERE price >= 1000 AND category = '食品'`
`OR`いずれかの条件を満たす(論理和)`WHERE category = '食品' OR category = '飲料'`
`NOT`条件の否定`WHERE NOT category = '食品'`
`BETWEEN A AND B`A以上B以下の範囲`WHERE price BETWEEN 500 AND 2000`
`LIKE`パターンマッチング(部分一致)`WHERE name LIKE '%田%'`(「田」を含む)
`IS NULL` / `IS NOT NULL`NULL値の判定`WHERE phone IS NULL`

論理演算子の優先順位は `NOT > AND > OR` です。たとえば `A OR B AND C` は `A OR (B AND C)` と解釈されます。意図した優先順位と異なる場合は、括弧を使って明示的に指定しましょう。

LIKE演算子のワイルドカードは2つあります。

  • `%`: 任意の0文字以上に一致(例: `'%山'` → 「横山」「丸山」「富士山」)
  • `_`: 任意の1文字に一致(例: `'_田'` → 「山田」「吉田」、「太田」にはマッチしない)

③ 結合(JOIN)

複数のテーブルを関連付けてデータを取得する操作が結合です。関係演算の「結合(Join)」に対応します。

結合の種類動作結果
INNER JOIN(内部結合)両方のテーブルに共通して存在する行のみを結合一致しない行は除外される
LEFT OUTER JOIN(左外部結合)左テーブルの全行を保持し、右テーブルで一致する行を結合右テーブルに一致がなければNULLが入る
RIGHT OUTER JOIN(右外部結合)右テーブルの全行を保持し、左テーブルで一致する行を結合左テーブルに一致がなければNULLが入る

具体例を見てみましょう。「社員」テーブルと「部署」テーブルがあるとします。

```sql

-- 内部結合: 部署が割り当てられている社員のみ

SELECT 社員.名前, 部署.部署名

FROM 社員

INNER JOIN 部署 ON 社員.部署コード = 部署.部署コード

-- 左外部結合: 全社員+部署情報(部署未割当ならNULL)

SELECT 社員.名前, 部署.部署名

FROM 社員

LEFT OUTER JOIN 部署 ON 社員.部署コード = 部署.部署コード

```

内部結合では、部署コードが一致しない社員(たとえば部署未配属の新入社員)は結果に含まれません。一方、左外部結合では全社員が結果に含まれ、部署未配属の社員は部署名がNULLとして表示されます。

④ DDLとDML

SQLの命令は大きく2つのグループに分類されます。

分類正式名称目的主な命令
DDLData Definition Language(データ定義言語)テーブルの構造を定義・変更・削除する`CREATE`(作成)、`ALTER`(変更)、`DROP`(削除)
DMLData Manipulation Language(データ操作言語)テーブルのデータを操作する`SELECT`(検索)、`INSERT`(追加)、`UPDATE`(更新)、`DELETE`(削除)

DDLは「箱(テーブル)そのものを作る・壊す」操作で、DMLは「箱の中身(データ)を出し入れする」操作です。この区別は試験で問われることがあるので明確に理解しておきましょう。

具体例

INNER JOINとLEFT JOINの違いを、簡単なデータで確認しましょう。

「社員テーブル」

社員ID名前部署コード
1田中D01
2山田D02
3佐藤NULL

「部署テーブル」

部署コード部署名
D01営業部
D02技術部
D03総務部

INNER JOINの結果(共通する行のみ):

名前部署名
田中営業部
山田技術部

→ 佐藤は部署コードがNULLなので除外されます。

LEFT JOINの結果(左テーブル=社員の全行を保持):

名前部署名
田中営業部
山田技術部
佐藤NULL

→ 佐藤も含まれ、部署名はNULLになります。

なお、D03(総務部)はどちらの結合でも結果に現れません。RIGHT JOINを使えばD03も結果に含まれます。

SELECT文による射影操作で特定の列のみを抽出する概念図

射影(列の抽出)

WHERE句による選択操作で条件に合う行のみを抽出する概念図

選択(行の抽出)

JOIN操作で2つの表を共通列で結合する概念図

結合(表の結合)

試験のポイント

  • 要は「INNER JOIN=共通行のみ、LEFT JOIN=左テーブル全行(右になければNULL)、RIGHT JOIN=右テーブル全行」
  • DDL=構造定義(CREATE/ALTER/DROP)、DML=データ操作(SELECT/INSERT/UPDATE/DELETE)
  • LIKEの%=0文字以上、_=1文字も頻出
  • 論理演算子の優先順位NOT>AND>ORに注意

独学で診断士合格を目指すなら

過去問演習・AI添削・テキストPDFまで

すべて揃ったプレミアムプランで合格を掴む!

予備校代の1/10以下で、独学の不安をまるごと解決

  • 📝1次試験 過去問演習(全7科目・年度別)無制限プレミアム限定
  • 🤖2次試験 AI添削(事例I〜IV・無制限)最適なフィードバックで実力アッププレミアム限定
  • 📄科目別テキストPDFダウンロード。印刷して好きな使い方で学習できるプレミアム限定
  • 🔖ブックマーク機能で苦手分野・何度も確認したい部分を管理プレミアム限定
  • 📊学習記録・成績管理で自分の進捗を可視化プレミアム限定

プレミアムプラン

¥9,800(税込)

買い切り

自動更新なし / 1年間有効

決済は Stripe(PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。