【ITパスポート】SQLとは?SELECT文・WHERE句をわかりやすく解説

ITパスポートを勉強していると、データベースの分野でSQLという言葉が出てきます。プログラミングを学んだことがない方には難しそうに感じるかもしれませんが、実はITパスポートで問われるSQLの範囲は限られており、基本のルールさえ覚えれば十分に得点できます。

この記事では、SQLの基本的な概念と、試験で最もよく出るSELECT文・WHERE句の使い方を具体例とともにわかりやすく解説します。試験合格に向けて、一緒に理解を深めましょう!

目次

SQLとは?一言でいうとデータベースへの命令文

SQL(Structured Query Language:構造化照会言語)とは、リレーショナルデータベース(RDB)にデータの操作を命令するための言語です。

データベースとは大量のデータを整理して格納する仕組みで、表(テーブル)形式でデータを管理します。SQLはそのデータベースに対して「このデータを取り出してほしい」「このデータを追加してほしい」「このデータを削除してほしい」という命令を出すための言語です。

ITパスポート試験では、データの取り出しに使うSELECT文が特に頻出です。

SQLでできる主な操作

SQLには大きく4種類の命令(文)があります。

命令操作内容
SELECTテーブルからデータを検索・取得する
INSERTテーブルに新しいデータを追加する
UPDATEテーブルの既存データを更新する
DELETEテーブルからデータを削除する

試験で圧倒的に出題が多いのはSELECT文です。まずSELECT文の仕組みを完全に理解することを目標にしましょう。

SELECT文の基本構文を理解しよう

SELECT文の基本的な書き方は以下の通りです。

SELECT 列名1, 列名2
FROM テーブル名
WHERE 条件;

それぞれの役割を覚えましょう。

  • SELECT:取り出したい列(項目)を指定する
  • FROM:どのテーブルからデータを取り出すかを指定する
  • WHERE:どの条件に合う行だけを取り出すかを指定する

具体例:社員テーブルから営業部の社員を検索する

次のような社員テーブルがあるとします。

社員ID氏名部署年齢
001田中一郎営業部28
002佐藤花子経理部34
003山田次郎営業部41
004鈴木三郎人事部25

この中から営業部の社員の氏名と年齢だけを取り出したい場合、SQLは次のように書きます。

SELECT 氏名, 年齢
FROM 社員
WHERE 部署 = '営業部';

実行結果は以下のようになります。

氏名年齢
田中一郎28
山田次郎41

射影と選択という概念を押さえよう

上の例での操作は、データベース用語で次のように呼ばれます。試験でそのまま問われることがあります。

  • 射影(Projection):SELECT句で取り出す列を絞り込む操作。上の例では「氏名」と「年齢」の2列だけを選んでいる。
  • 選択(Selection):WHERE句で取り出す行を絞り込む操作。上の例では「部署が営業部」という条件で行を絞り込んでいる。

この2つの用語は混同しやすいので注意が必要です。列(縦方向)を絞るのが射影、行(横方向)を絞るのが選択と覚えておきましょう。

WHERE句で使える主な条件式

WHERE句では様々な条件を指定できます。試験で問われる主なものを紹介します。

条件の種類書き方の例意味
等値部署 = '営業部'部署が営業部と一致する行
比較年齢 >= 30年齢が30以上の行
範囲年齢 BETWEEN 25 AND 35年齢が25以上35以下の行
部分一致氏名 LIKE '田%'田で始まる氏名の行
NULL検索部署 IS NULL部署が未設定の行

LIKEとワイルドカードに注意!

LIKE演算子はあいまい検索(部分一致)に使います。ワイルドカードの記号も試験に出るので必ず覚えましょう。

  • %(パーセント):0文字以上の任意の文字列
  • _(アンダースコア):任意の1文字

例として 氏名 LIKE '田%' と指定すると、田中・田村・田島など、田で始まるすべての氏名が対象になります。

SQLインジェクションにも要注意

SQLはセキュリティの文脈でも出題されます。SQLインジェクションはWebアプリケーションへの攻撃手法の一つで、悪意のある入力フォームからSQL命令を混入させることでデータベースの内容を不正取得したり改ざんしたりする攻撃です。対策としてエスケープ処理やプリペアドステートメントの利用が有効です。

ITパスポート試験でのSQL出題傾向と対策

SQLはテクノロジ系のデータベース分野で頻出です。

試験でおさえるべきキーワード

  • SQL:リレーショナルデータベースを操作する言語。
  • SELECT文:テーブルからデータを検索・取得する命令。
  • FROM:対象テーブルを指定する句。
  • WHERE:検索条件を指定する句。
  • 射影:SELECT句で取り出す列を絞り込む操作。
  • 選択:WHERE句で取り出す行を絞り込む操作。
  • LIKE:あいまい検索に使う演算子。%は任意の文字列、_は任意の1文字。
  • SQLインジェクション:不正なSQL命令を混入させるサイバー攻撃。

過去問に挑戦!

【問題】
次のSQLを実行したとき、取得されるデータの件数はいくつか。

(テーブル:社員 社員ID・氏名・部署・年齢の4列、全4行のデータ)

SELECT 氏名, 年齢 FROM 社員 WHERE 部署 = '営業部';

ア.1件  イ.2件  ウ.3件  エ.4件

【正解】:イ(田中一郎・山田次郎の2件)
【解説】:WHERE句で部署が営業部に絞られ、SELECT句でさらに氏名と年齢の2列だけが出力されます。結果として営業部の2行が取得されます。

【問題】
SQLのWHERE句で「LIKE ‘田%’」という条件を指定するとき、取得対象になるのはどれか。

ア.田のみ1文字の氏名
イ.田で始まる氏名
ウ.田を含むすべての氏名
エ.田で終わる氏名

【正解】:イ
【解説】:%は0文字以上の任意の文字列を表すワイルドカードです。田%とすると、田の後に任意の文字列が続くものすべてが対象となります。田のみ1文字でも一致します。

まとめ:SQLはデータベースへの命令文

今回はSQL、特にSELECT文の仕組みを解説しました。ポイントをもう一度確認しましょう。

  • SQLはリレーショナルデータベースにデータ操作を命令する言語
  • SELECT文は「どの列を(SELECT)」「どのテーブルから(FROM)」「どの条件で(WHERE)」取り出すかを指定する
  • 列を絞る操作が射影、行を絞る操作が選択
  • LIKE演算子の%は任意の文字列、_は任意の1文字を表すワイルドカード
  • SQLインジェクションはSQL命令を悪用したサイバー攻撃の一種

SELECT文・WHERE句・射影・選択の4つの概念をしっかり結びつけて覚えれば、試験で出てきても落ち着いて対応できます。過去問で何度も手を動かしながら定着させましょう!

目次