SQLを使いこなすために

データベースを
学んでみよう

SQLの前に、まずはデータベースについて少し深掘りしてみましょう。
Write your awesome label here.
ここではSQLの学習に最低限必要なデータベースの知識をまとめて紹介しています。

本講義とは別にデータベースの構築をはじめる前に知っておきたい情報を集めた"データベースのきほん"というコンテンツがございます。
こちらも併せて学習すると、さらにデータベースへの理解が深まります。

もくじ

1. データベースとかテーブルってなに?

データベースとは

データベースにおいてテーブルとはデータを表す2次元の表のことをいいます。データベースには複数のテーブルを作成することができます。
"データベース"の中にたくさんの"テーブル"が入っていて、テーブルのひとつひとつは"カラム"と"レコード"で構成されています。

Excelで例えるなら、ブックが「データベース」、シートが「テーブル」って
感じだね!

名称

データベース (Database)


テーブル (Table)


カラム (Column)


レコード (Row)


説明

データを整理して保存するための大きな箱のようなもの。データを効率的に管理し、必要なときにアクセス可能。

データベース内のデータを整理するための一つ一つの棚のようなもの。特定の種類の情報を保存。

テーブル内のデータの属性(項目)を示す。表の縦の列。特定のデータの種類(属性)を表す。

テーブル内の個々のデータのセットを示す。表の横の行。特定の実態に関する情報。

学校のデータベース(生徒、教師、クラス、成績などの情報を含む)

生徒テーブル、教師テーブル、クラステーブル

生徒テーブルの「名前」、「年齢」、「学年」カラム

生徒テーブルの1行(田中太郎、15歳、3学年)

テーブルについてもっと詳しく

データベースの「リレーション」はデータ同士のつながりを表現するために使われます。

データはテーブルに格納され、これらのテーブルの間にリレーションを持たせることができます。
例えば下図の例ではユーザーテーブルと住所テーブルのようにテーブルが分かれています。これらはどちらのテーブルにも存在する"ユーザーID"でテーブル同士を結合することで、テーブルに関連性を持たせてひとつの情報として参照することが可能となります。
こちらの動画では「BIで活用しやすいデータ」を紹介しています。この動画の中で"ファクトテーブル""マスターテーブル"という単語が出てきます。データをテーブルに保存するイメージをこの動画で確認しましょう。
Write your awesome label here.

2. データベースとカラム型データベース

いきなり難しい話題だけど、Dr.Sumは一般的な「行型データベース」ではなく
カラム型データベース」なので、その特長を覚えておこう!

カラム型データベースとは?

カラム型データベースは、データを列(カラム)ごとに保存するデータベースの一種です。
伝統的な行(ロー)ごとにデータを保存する行型データベースとは異なり、同じカラムのデータを連続して保存します。

カラム型データベースの特徴

1.  データの保存方法
  • 行型データベース:各行のすべてのデータを一緒に保存します。例えば、名前、年齢、住所が一行にまとめて保存されます。
  • カラム型データベース:各カラムのデータを別々に保存します。例えば、名前のカラムだけ、年齢のカラムだけ、住所のカラムだけが連続して保存されます。
2.  データの取得方法
  • 行型データベース:全行から必要なデータを取得します。
  • カラム型データベース:必要なカラムだけデータを取得します。

カラム型データベースの利点

1.  高速な読み取り
特定のカラムだけを読み取るクエリが高速になります。
例えば、全てのユーザーの年齢だけを取得する場合、年齢のカラムだけを読み取れば良いので効率的です。
2.  圧縮効率の向上
同じカラムのデータは似た傾向があるため、圧縮しやすくなります。
例えば、年齢のカラムは数値データなので、圧縮しやすいです。
3.  分析に適している
データ分析や集計を行う場合、特定のカラムのデータだけを頻繁に取得することが多いため、カラム型データベースはこれに適しています。

カラム型データベースの使用例

1.  ビッグデータ分析
大量のデータを高速に処理するために使われます。
2.  データウェアハウス
大量のデータを保存し、分析するためのデータウェアハウスで使われます。
このように、カラム型データベースは同じカラムのデータを連続して保存することで、特定のカラムのデータ取得や圧縮を効率化しています。
カラム型データベースは、大規模なデータ分析やビッグデータ処理に非常に有効です。具体的なカラム型データベースの例としてDr.Sumの他にも、Google Bigtable、Apache Cassandra、Amazon Redshiftなどがあります。

3. データ型

データ型とは?

データ型は、データベースやプログラミングにおいてデータがどのような種類かを示すものです。データ型を理解することで、データを正しく管理し、操作することができます。ここでは、基本的なデータ型をいくつか紹介します。

テーブルにはどんなデータでも格納できる訳じゃないよ。たとえば、次の[メニューテーブル]に対し、[値段]や[残数]のカラムには文字データや日付データを格納されないようにすべきだね。

メニュー名
ハンバーグ
オムライス
スープ
値段
600
800
300
残数
10
8
15

このようにカラムごとに指定可能な格納できるデータの種類のことを、データ型というんだよ。

基本的なデータ型

データ型は、データがどのような種類かを示し、データの操作や管理を効率的に行うための重要な概念です。各データ型の用途を理解することで、適切なデータの保存方法を選択することができます。
データ型

文字列型(VARCHAR)


整数型(NUMERIC,INTEGER)

日付型(DATE)


日時型(TIMESTAMP)



説明

文字列型は、文字の列を表すデータ型である。文字、単語、文章などを保存する。

整数型は、整数を表すデータ型である。小数点を含まない数値を扱う。         

日付型は、日付を表すデータ型である。通常、年、月、日の形式で表される。

日付と時刻を組み合わせたデータ型であり、年、月、日、時間、分、秒を含む情報を格納する。 

"Hello", "123 Main St", "abc123" 

1, 23, -45


2024-06-12, 2023-01-01


2024-08-01 14:30:00 



用途

名前、住所、メッセージなど     

数量、カウント、IDなど   


誕生日、イベントの日付、記録の日付 

データの作成日時や更新日時の記録など 


4. NULL

NULLとは何か?

NULLは「何もない」または「値が存在しない」という状態を表します。これは、データベースのテーブルにおいて、その特定のカラムに値が設定されていない場合に使用されます。

「値が存在しない」状態には、値が決まっていない場合や、値がわからない場合が該当するよ。

例えば、次の社員テーブルがあったとします。
社員テーブルには「役職コード」というカラムがあり、この「役職コード」は、役職マスターの「役職コード」と紐づけることで、どの社員がどの役職に就いているかがわかります。

社員テーブル

社員名
田中
鈴木
佐藤
部署名
営業1部
営業1部
営業1部
役職コード
1
2
NULL

役職マスター

役職コード
1
2
3
役職名
部長
課長
係長

佐藤さんは役職に就いていないため、「役職コード」の値が入れられない状態なので、このような場合にNULLが使用されるね。

NULLの特長

1.  NULLはゼロや空文字列とは違う
NULLは数値の0や空文字列("")とは異なります。
0は数値が存在することを意味し、空文字列も値が存在しますが、NULLは「データが存在しない」ことを意味します。
2.  計算や比較におけるNULL
NULLを含む計算や比較は通常、NULLを返します。
例えば、NULL + 1はNULLですし、NULL = NULLも真(True)ではなく、NULLです。

NULLは良いもの?悪いもの?

NULLを初めて知った人にとって、文字でも数字でも空文字でもないNULLはイメージをすることが難しいと思います。
NULLに対してマイナスなイメージを持ってしまうかもしれません。
しかしNULLがあることでデータの不完全性を適切に示すことができ、データベースの世界では有効に使用されます。
その例を見てみましょう。

NULLの使用例

データベースのテーブル

ID
1
2
3
名前
田中太郎
鈴木次郎
佐藤花子
年齢
30
25
43
退職日
NULL
NULL
2023-12-31

NULLの処理

1.  NULLのチェック
  • データベースでは、NULLをチェックするためにIS NULLIS NOT NULLを使います。
  • 例:SELECT * FROM テーブル WHERE 退職日 IS NULL;(退職日がNULLのレコードを取得)
2.  NULLの代替値
  • SQLでは、NVL関数を使ってNULLを別の値に置き換えることができます。
  • 例:SELECT NVL(退職日, '未登録') FROM テーブル;(退職日がNULLの場合、'未登録'を表示)
この例では、田中太郎さんと鈴木次郎さんの退職日がNULLです。つまり、まだ退職していないことを示しています。
仮に退職日に空文字("")が入っている場合、プログラムのミスで正しく登録されなかったことが考慮されます。
NULLが入っているとそもそもそのプログラムは退職日を更新することを考えていないと認められるため、NULLであることが正しいと理解できます。
もちろん「退職日を更新したかったのにプログラムで何もしていない」という可能性も残りますが、その可能性は低いと考えられます。
このようにNULLがあることで、データへの理解度をあげることができます。

まとめ

NULLはデータベースにおいて「値が存在しない」ことを示します。
ゼロや空文字列とは異なり、NULLはデータの欠落や未登録を意味します。
NULLの概念を理解することで、データベースのデータ管理やクエリの作成がより正確に行えるようになります。