基本情報技術者試験で覚えておきたいSQL文の基本構文について
更新日:2021年7月20日
データベースを操作する際に利用するのが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文を中心として、出題されるポイントを押さえておくとよいでしょう。