基本情報技術者試験で覚えておきたいSQL文の基本構文について

盾を持った人の絵

データベースを操作する際に利用するのがSQLです。SQLはどのデータベース管理システムであっても共通の言語となっており、SQLさえ覚えておけばどんなデータベースでも取り扱えるようになります。

ITシステムに関する知識として重要であるSQLは、基本情報技術者試験でもその内容が問われます。この記事では、基本情報技術者試験の対策としてSQLについての解説を行います。

目次

SQLとは

SQLとは、データベース管理システム(DBMS)を操作するための言語のことです。上述した通り、SQLには共通規格となっており、DBMSを利用しても共通の構文で操作できることが特徴です。

SQLを操作する際には、様々な命令を用います。例えば、データを検索する際にはSELECT文を、データを挿入する際にはINSERT文を用います。

特に基本情報技術者試験ではSELECT文に関する問題が出題されやすいため、本記事ではSELECT文を中心として利用方法について解説します。

SELECT文

SELECT文はデータベースから情報を出力するための構文です。以下でSELECT文の使いかたを解説します。

SELECT文の基本形

SELECT文は、SELECT * from XXXという構文で利用するのが基本形です。ここで、XXXには出力対象とするテーブル名を記載します。また、SELECTの後の「*」については、テーブルのすべてのデータを出力するという意味になります。

例えば、以下のようにSQLを入力すると、テーブル「car」のすべてのデータが出力されます。なお、SQL文の最後には必ずセミコロンを付ける決まりとなっていますので、忘れないように注意してください。

<SQL文>

SELECT * from car;

<出力結果>

id name size speed
1 truck 1000 50
2 wagon 500 80
3 compact 300 100
4 sedan 400 120
5 sedan 500 160

特定の列を抽出する

特定の列のみを抽出するためには、SELECT文にて列名を指定します。以下の例では、size列を指定してcarテーブルの情報を出力しています。

<SQL文>

SELECT size from car;

<出力結果>

size
1000
500
300
400

条件で絞り込む

特定の条件に合致するレコードのみを抽出するためには、WHERE句を利用し、抽出条件を指定します。以下の例では、スピードが90より速い車のみを出力するように条件を指定しています。

<SQL文>

SELECT * from car WHERE speed > 90;

<出力結果>

id name size speed
3 compact 300 100
4 sedan 400 120
5 sedan 500 160

表を結合する

表を結合するためには、from以降に複数の表を指定したうえで、WHERE句で結合条件を指定します。例えば、車の価格が記載されたpriceテーブルとcarテーブルを結合する場合は、以下の通りの流れとなります。

まず、carテーブルとpriceテーブルの内容を確認します。

<SQL文>

SELECT * from car;
SELECT * from price;

<出力結果>

id name size speed
1 truck 1000 50
2 wagon 500 80
3 compact 300 100
4 sedan 400 120
5 sedan 500 160
id selling_price
1 1000
2 800
3 500
4 600
5 1500

これらのテーブル同士を、idが一致するように結合する場合、以下のSQLを利用します。WHERE句以下にcarテーブルのidとpriceテーブルのidが一致するという条件を、「テーブル名.id」という形式で記載します。

<SQL文>

SELECT * from car, price WHERE car.id = price.id;

<出力結果>

id name size speed selling_price
1 truck 1000 50 1000
2 wagon 500 80 800
3 compact 300 100 500
4 sedan 400 120 600
5 sedan 500 160 1500

合計や平均などを求める

値の合計や平均を求めるためには、SUM関数やAVG関数を用います。

例えば、車の合計サイズを出力したい場合は以下のSQL文を利用します。

<SQL文>

SELECT SUM(size) from car;

<出力結果>

2700

また、例えば車の平均価格を出力したい場合は以下のSQL文を利用します。

<SQL文>

SELECT AVG(selling_price) from price;

<出力結果>

800

グループ化する

項目をグループ化するためにはGROUP BY句を用います。グループ化の用途は様々ありますが、ここでは一例として上述したAVG関数と組み合わせるケースを紹介します。

以下の例では、車種名(トラックやワゴンなど)ごとの平均サイズを求めています。

<SQL文>

SELECT AVG(size) from car GROUP BY name;

<出力結果>

name AVG(size)
truck 1000
wagon 500
compact 300
sedan 450

この表では、サイズが400と500の2台のセダンが登録されていますので、それらの平均をとった450が計算され、出力されています。

並び替える

SELECT文による出力結果を並び替えるためにはORDER BY句を用います。

例えば、車のサイズにより出力結果を並び替える場合、以下の通り条件を指定します。なお、昇順に並び替える際には条件にASCを、降順に並び替える場合はDESCを合わせて指定します。

<SQL文>

SELECT * from car ORDER BY size ASC;

<出力結果>

id name size speed
3 compact 300 100
4 sedan 400 120
2 wagon 500 80
5 sedan 500 160
1 truck 1000 50

INSERT文

データベースにレコードを追加する際にはINSERT文を用います。INSERT文の基本的な使用方法は以下の通りです。

以下の例では、carテーブルの6番目に新しいコンパクトカーを登録しています。

<SQL文>

INSERT INTO car VALUES (6, ‘compact’, 200, 70);

上記INSERT文を実行した後に、改めてSELECT文にてテーブルの内容を確認すると、6番目にレコードが追加されていることが分かります。

<SQL文>

SELECT * from car;

<出力結果>

id name size speed
1 truck 1000 50
2 wagon 500 80
3 compact 300 100
4 sedan 400 120
5 sedan 500 160
6 compact 200 70

DELETE文

テーブルからレコードを削除する際にはDELETE文を用います。ここでは、carテーブルから1番目に登録されているトラックを削除する例を示します。DELETE文を実行する際に、WHERE句で削除する対象を指定することができます。

<SQL文>

DELETE from car WHERE id = 1;

上記DELETE文を実行した後に、改めてSELECT文にてテーブルの内容を確認すると、1番目のレコードが削除されていることが分かります。

<SQL文>

SELECT * from car;

<出力結果>

id name size speed
2 wagon 500 80
3 compact 300 100
4 sedan 400 120
5 sedan 500 160
6 compact 200 70

まとめ

この記事では、基本情報技術者試験を受けようとされている方に向けて、SQLに関する内容の解説を行いました。

SQLはITシステムを取り扱う上で重要となる知識です。基本情報技術者試験でもSQLに関する問題は必ず出題されるため、特にSELECT文を中心として、出題されるポイントを押さえておくとよいでしょう。