SQLでのデータベースを操作方法〜基本情報技術者合格のための学習法〜

SQL基本情報

SQLとは

SQLとは,データベースを操作するための言語のことであり、DBMS上でコンピュータに命令するための手段です。

SQLで、できることは大きく分けて、以下の2つです。
データベース・テーブルの作成・変更・削除
データの取得・登録・更新・削除

データベース言語であり、プログラミング言語ではありません

データベースについて詳しくは『データベース〜基本情報技術者合格の ための学習法〜』の記事をどうぞ。

SQLの種類は、以下の3つです。

DML(データ操作言語)

DML(Data Manipulation Language)は、テーブルのレコードを検索したり変更をします。
DMLに分類される命令は次のとおりです。

SELECT:テーブルからレコードを取得します
INSERT:テーブルにレコードを挿入します
UPDATE:テーブルのレコードを更新します
DELETE:テーブルのレコードを削除します

DDL(データ定義言語)

DDL(Data Definition Language)は、データベースやテーブルの作成や変更・削除をします。
DDLに分類される命令は次のとおりです。

CREATE:データベースやテーブルなどを作成します
DROP:データベースやテーブルなどを削除します
ALTER:データベースやテーブルの変更をします

DCL(データ制御言語)

DCL(Data Control Language)は、データベースの管理者が権限の付与や剥奪をしたりできます。
DCLに分類される命令は次のとおりです。

COMMIT:トランザクションの確定をします
ROLLBACK:トランザクションの破棄をします
GRANT:ユーザに操作の権限を与ます
REVOKE:ユーザから操作の権限を剥奪します

トランザクションとは、SQLを書き換えてデータを削除してしまったり、変更してしまったりするのを防ぐ機能です。
SQLを実行した後、結果を確認してから結果の確定・破棄ができます。

SELECT文

SELECT文とは

SELECT文とは「データベースから、データを取得する命令」です。
データベースからどのような条件でデータを取得してほしいのかを表した命令文です。

SELECT文の基本的な書式

SELECT文によるデータを抽出の基本は、以下の3つです。
「どのカラム(列)のデータを取り出すか」を指定します:SELECT
「どのテーブルから検索するか」を指定します:FROM
「どのような条件で行を検索するか」を指定します:WHERE

これらを指定することにより、データベースから多様なデータを取り出すことができます。

基本的な構文はこちらです

SELECT カラム名 FROM テーブル名 WHERE 条件 ;
SELECT文の終わりは、「;(セミコロン)」を付けます。
カラム名とテーブル名には”,”で区切って複数並べることができます

特定の列を抽出する(射影)

射影はテーブルからカラムを取り出す関係演算です。
SELECT文では次のように取り出したいカラムを指定します。

SELECT 商品名 FROM 商品表 ;

射影

「商品名」のカラムが取り出されます。

カラム名を*(アスタリスク)にすると全てのカラムが抽出対象となります。
テーブルはそのままで、レコードだけを抽出したい場合などに便利です。

特定のレコードを抽出する(選択)

選択は特定のレコードを取り出す関係演算です。
SELECT文ではWHERE句を使って次のように取り出したいレコードの条件を指定します。

SELECT * FROM 商品表 WHERE 単価 >= 200;

選択

「単価」が200以上のレコードが取り出されます

データ型を抽出する

データ型を抽出したい場合は

SELECT * FROM カラム名
WHERE テーブル名 =”文字列”;

と「”」ダブルクォーテーションで囲みます。

「ある文字を含むデータ」を抽出したい場合は、「〜のような」という意味を持つ、「LIKE演算子」を用います。
文字列を「%」(ワイルドカード)で挟むことにより、「文字列」という文字を含むデータが抽出できます。

SELECT * FROM カラム名
WHERE テーブル名 LIKE “%文字列%”;
ワイルドカードを文字列の前後どちらかにのみ置くことも可能です。

SELECT * FROM カラム名
WHERE テーブル名 LIKE “文字列%”;

「文字列%」とした場合、「文字列」以降はどんな文字列にも一致しますので、「文字列」で始まる文字列を検索することができます。このような検索を「前方一致」と呼びます。

逆に「%文字列」とした場合、「文字列」より前はどんな文字列にも一致しますので「文字列」で終わる文字列を検索することができます。このような検索を「後方一致」と呼びます。

条件を組み合わせて抽出する

複数の条件を組み合わせるには、論理演算子を用います。
論理演算子について詳しくはこちらの記事をご覧ください

論理演算とは

SELECT * FROM 商品表
WHERE 単価 >= 100 AND 単価 <= 200;

複数選択

「単価」が100以上かつ200以下のレコードが取り出されます

表と表を結合する(結合)

結合はテーブル同士を結合する関係演算です。
SELECT文ではFROM句の中に結合したいテーブルを羅列して、WHERE句でどのカラムを用いて結合するかを指定します。

SELECT * FROM 商品表,仕入れ先表 WHERE
商品表.卸業者コード=仕入れ先表.卸業者コード;

結合

卸業者コードを用いてレコードが結びつけられています。

「テーブル名」.「カラム名」の間にある「.」は「どのテーブルのカラムか」を表現するために用いられます。
カラムを特定するために必要なだけですので、もともと重複しないカラム名であればテーブル名は省略できます。

データを整列させる

抽出結果をソートする場合はORDER BY句を用います。

SELECT * FROM 商品表 ORDER BY 単価

ソート

SELECT * FROM テーブル名 ORDER BY カラム名 ASC(もしくはDESC)
昇順でソートしたい場合はASC(省略可)
降順の場合はDESCを指定します。

関数を使って集計を行う

SQLには、データを取り出す際に集計を行う、様々な関数(集合関数)が用意されています。

関数機能
MAXカラムの最大値を求めます
MINカラムの最小値を求めます
AVGカラムの平均値を求めます
SUMカラムの合計を求めます
COUNT(*)テーブル数を求めます
COUNT(カラム名)カラムの値が入っているテーブル数を求めます

データをグループ化する

グループ化は特定のカラムを指定し、その中身が一致するレコードをひとまとめに扱うことを言います。
グループ化には GROUP BY 句を使います。

SELECT カラム名,集合関数
FROM テーブル名
GROUP BY カラム名;

グループ化

グループに条件をつけて絞り込む

グループ化をした際、条件をつけて絞り込むことができます。
条件をつけて絞り込むにはHAVING句を使います。

SELECT カラム名,集合関数
FROM テーブル名 GROUP BY カラム名
HAVING 絞り込みの条件;

グループ化の絞り込み

参考書籍

キタミ式イラストIT塾 基本情報技術者 令和03年
令和03年 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 情報処理技術者試験
令和03年 基本情報技術者 合格教本 情報処理技術者試験

コメント

タイトルとURLをコピーしました