2025年10月30日

SQLについて勉強してみた

はじめまして、熊本事業所のT.Sです。
突然ですが、皆さんはSQLについて知っていますでしょうか。
ITに関連するお仕事をされている方なら知っている方も多いかと思います。
未経験でIT企業に入社した私は、当時SQLは苦手でした。
そこで、今回は私と同じ新入社員の方やこれからSQLを学習する方にとって少しでも参考になる記事が作成できればと考え、本ブログではSQLについて学習した内容をまとめておりますので、ご一読いただけますと幸いです。

Contents

SQLとは

SQLの基本

SQLとは、Structured Query Language の略で、直訳すると、「構造化問い合わせ言語」というデータの保存や取得など、データベースの操作を実行するための言語です。また、SQLはプログラミング言語ではないため、コンピュータ上やWebブラウザ上で動作するアプリケーションを作成することはできず、データベースに対してのみデータの保存や取得、更新や削除等の命令を行うことが可能です。
まとめると、SQLは言語の1つであり、データベースに対しての命令を行うための言語となっています。
SQLの説明の中で登場したデータベースについても簡単にまとめておきます。

データベースの基本概念
データベースとは何か

データベースとは、決まったデータ構造で整理されたデータの集まりのことです。データベースには、階層型、ネットワーク型、リレーショナル型の3種類あります。簡単にそれぞれの特徴をまとめます。


階層型データベース
ツリー状に構成されるデータベースのことを階層型データベースといいます。
階層型データベースでは親と子が存在しており、1つの親に対して1以上の子が存在します。
1つの子に対して複数の親を持てないため、ルートが限定的で速度が速いというメリットがありますが、子が複数の親を持つためには、子を重複して登録する必要があり、さらに追加や削除を行った場合はルートを再登録する必要があり、柔軟性に欠けるというデメリットも存在しています。


ネットワーク型データベース
網状に構成されるデータベースのことをネットワーク型データベースといいます。
1つの子が複数の親を持つことが可能で重複登録を回避できるというメリットに対して、プログラムがデータ構造に依存してしまうため、柔軟で容易なデータの取り扱いが出来ないというデメリットを持っています。

データベースの中で最も広く利用されているのが以下のリレーショナルデータベースです。
リレーショナルデータベース(以下RDB)
RDBは、下の図のようなテーブルと呼ばれる表形式のデータの集まりを複数持ち、テーブル同士がリレーション(関係)を持つデータベースとなっています。

また、RDBは列(縦:フィールド/カラム)と行(横:レコード/ロー)により構成されています。

データベースには、データを特定するための目印や手がかりの役割を持つ「キー(Key)」が存在しています。

主キー(Primary Key)
RDBにおいて、行(レコード)を一意に識別するために利用する列(カラム)で、データが重複していないことに加えて、空のデータでないことが主キーの条件となります。また、1つのテーブルにつき主キーは1つとされています。
以下のテーブルでは、「商品コード」が主キーとなっており、同じ商品名のデータが複数存在する場合においても商品コードは一意となっていることにより、特定のデータを識別可能となっています。

SQLでは、以上のようなデータベースの仕組みを用いてデータを識別し、検索や更新、追加、削除等の命令を行うことができます。ここからはSQLの基本的な構文についてまとめています。

 

SQLの基本的な構文

SELECT(取得)

SELECT文はデータベースからデータを取得する際に用いられます。
基本的には以下の形で記述されます。


具体例を挙げると、上図のテーブルに対して、「SELECT 商品コード,商品名 FROM 商品テーブル ;」の記述を行った場合、「商品テーブル内の、商品コードと商品名を出力する」という命令となるため、出力結果は以下となります。

また、

の記述を行った場合、「商品テーブル内の、002の分類コードを保持するレコードの商品コードと商品名を出力する」という命令となるため結果は以下となります。

 

INSERT(追加)

データベースにデータを追加するSQL文をINSERT文といいます。
基本的には以下の形で記述されます。

先ほど登場した商品テーブルに対して、

というINSERT文を実行すると以下のように商品テーブルにレコードが追加されます。

 

UPDATE(更新)

データの更新・編集を行うSQL文をUPDATE文といいます。
基本的には以下の形で記述されます。

例として、商品テーブルに対して、

というUPDATE文を実行すると以下のように、分類コードが002に該当する商品名が全て更新されます。

 

DELETE(削除)

データの削除を実行するSQL文をDELETE文といいます。
基本的には以下の形で記述されます。

基本的には、テーブルごと消去することは少ないため、2番目の形式での記述が一般的です。
例として、商品テーブルに対して、

というDELETE文を実行すると以下のように商品コードが006に該当するレコードが削除されます。

ここまでは、SQLの基本構文をご紹介いたしました。
以下では、使用する頻度が高い汎用的なSQL文をご紹介します。

 

実践的なSQLクエリ

GROUP BY(グループ化)

GROUP BYとは、グループ化を行うために使用されます。
基本的に、集計関数を併用して使用する場合が多い構文となっています。
今回は具体例として、COUNTという集計関数を用いた使い方をご紹介します。
基本的には以下の形で記述されます。

この記述により、GROUP BYの後に記述した列名がグループ化され、COUNT(列名)により指定された列がカウントされます。
具体例として、以下の商品テーブルを用います。

この商品テーブルに対して、

を実行すると、以下の結果となります。

このように、GROUP BYで分類コードをグループ化し、該当の分類コードを持つレコードをCOUNTによりカウントした結果が出力されます。

 

ORDER BY(並び替え)

ORDER BYはソート(並び替え)を実行する構文です。
基本的には以下の形で記述されます。

具体例として、GROUP BYの説明時に使用した商品テーブルに対して、

を実行すると以下の結果となります。

※「*」は、すべてという意味を持ち、全ての列が対象となります。

このように、指定した分類コードを降順にした結果が出力されます。
このORDER BYは、複数の列名でのソートや、WHERE、GROUP BYも同時に使用することが可能なので、より詳しく知りたい方は調べてみることをおすすめします。

続いて、結合についてご紹介します。
結合とは、複数のテーブルを結合してひとまとめにする事です。
結合を行う際に使用する命令の1つとして「JOIN」があります。
今回は基本的な「JOIN」について以下にまとめております。

INNERJOIN(内部結合)

2つ以上のテーブル内で関連(共通で保持)している列(カラム)を軸にして組み合わせる命令です。
基本的には、以下の形で記述されます。


上の図を例として、商品テーブルと価格テーブルを内部結合する際は、

の記述となり、命令を実行すると以下の結果が出力されます。

このように、商品テーブルと価格テーブルで共通して保持している列(カラム)を軸として、2つのテーブルを結合し、共通するデータを持つレコードのみ結果として出力するのが内部結合です。

 

OUTERJOIN(外部結合)

関連するデータが存在しないレコードも表示する結合方式です。
外部結合の中にもいくつか種類があり、今回はLEFTJOIN、RIGHTJOINについてご紹介します。

LEFTJOIN
FROMで指定したテーブルを基としてデータを出力します。
基本的には、内部結合と同様、以下の形式で記述されます。

内部結合で例として挙げた商品テーブルと分類テーブルを外部結合する際は、

の記述となり、命令を実行すると以下の結果が出力されます。

RIGHTJOIN
結合する側(FROMで指定されていない側)を基としてデータを出力します。
記述方法は、LEFTJOINと同様、以下の形式で記述されます。

また、LEFTJOINと同じテーブルに対して、

の命令を実行すると、以下の結果が出力されます。

このように、RIGHTJOINとLEFTJOINの違いとしては、FROMに指定したテーブルが基となるか、JOINするテーブルが基となるかの違いとなっております。
また、内部結合と外部結合の違いは、内部結合が共通するデータを持つレコードのみを結果として出力するのに対して、外部結合は基となるテーブルが保持するレコードは共通するデータの有無にかかわらず結果として出力する点が違いとなっております。

 

まとめ

今回は、SQLの基本的な内容についてまとめてみました。私はSQLに対しての知識が浅くまだまだ未熟者ですが、これからSQLを学習する方やSQLに対して苦手意識を持っている方にとって少しでも参考になる記事となっていれば幸いです。

また、弊社では新入社員ブログの他にも、様々なブログが多数あります。以下に事例を掲載していますので、ご興味ある方は是非ご覧いただければ幸いです。

1.AWS(Amazon Web Services)とは

2.Gitについて勉強してみた。

3.BizDevOpsと伴走型支援

参考資料
今回のブログ執筆に伴い、参考にさせて頂いた記事のリンクをまとめております。
より詳細について学習したい方は以下の参考資料から調べてみることをおすすめします。

1.【SQL】これで完璧テーブル結合!JOINの種類と使い方を一覧まとめ|SAMURAI ENGINEER Blog
https://www.sejuku.net/blog/73650

2.【永久保存版】手を動かしながら SQL 入門!(学習サンプル付)|キカガクブログ
https://www.kikagaku.co.jp/kikagaku-blog/sql-intro/#i-0

3.リレーショナルデータベース(RDB)とは?メリット・デメリットや活用例を紹介|TROCCO
https://blog.trocco.io/glossary/relational-database

4.SQLとは?データベース言語の基礎知識をわかりやすく解説!|発注ラウンジ
https://hnavi.co.jp/knowledge/blog/sql/

5.主キーとは?関係データベースのキーを一挙紹介|Data Science Travel
https://datascience-lab.sakura.ne.jp/primarykey/

6.SQL文とは?基本命令文と書き方をわかりやすく解説!|ITトレンド
https://it-trend.jp/development_tools/article/32-0012

7.データベースの種類を3つ紹介!RDBMSとNoSQLの違いも解説
https://it-trend.jp/database/article/89-0066

 

記事 : BSサービス事業部 T.S

2024新入社員
2024新入社員

2024年度入社の新入社員6名で記載しております。

この執筆者の他の記事を見る→

2024年度入社の新入社員6名で記載しております。