誰でもすぐわかるデータベース基礎の基礎~

　<a href="https://qiita.com/Hailee/items/781e33e2474e254fdd7c" rel="noopener" target="_blank">【学習計画】十週間で知識ゼロからのデータ分析入門</a>で第三週がデータベースとSQLを学ぶことです。今回はデータベースの構造から始まり、人気のオープンソースのDBMS製品MySQLの使い方についてまでご紹介していきたいと思います。

　なせ第一週のデータ分析の考え方と第二週のExcelについて説明しないかというと、理由は以下の通り。

　まず、オンラインでも書籍でもExcelに関するものが豊富で、一つを選らんで勉強すればだんだん身につけるようになります。また、データ分析の考え方を養うには、基本なコンセプトを知ったうえで、実際にデータを分析しながらその考え方を応用しなければいけません。ところが、データベースとSQLは、大量データの処理や自動化できないなど、Excelの解決できない問題を簡単に解けるだけではなく、ほかの[データ分析ツール](http://www.finereport.com/jp/products/?utm_source=Qiita&utm_medium=media&utm_campaign=database&utm_term=datool_pro2)との架け橋にもなれます。だから、データベースとSQLについて、二回に分けて詳しく説明してたいと思います。今回はまずデータベースで、次回はSQLのこと。

###1.そもそもデータベースとは？

 　データベース（DB、Database）は複数のデータを保存するところで、つまりデータ集合です。このデータ集合内のデータを抽出したり、編集したりすることができます。Excelと違うのは、膨大なデータを一瞬にして自動的に整理してくれて、手動で管理する必要がなくて、しかもすべでのデータがみんなに共用使用できて、別々に編集することによる更新漏れを避けることです。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010900.png" alt="データベース" width=400" data-bd-imgshare-binded="1" /></p>

　現在、コンピュータ上でデータベースを管理するシステム（DBMS：Database Management System）のことや、そのシステム上で扱うデータ集合のことを、「データベース」と呼ぶことが多いです。

　以下は現在主流となっている「関係データベース」について解説します。

　関係データベースは、一つあるいは複数のテーブルを含めて、各テーブルに行と列があって、毎行に唯一のIDがあります。それはExcelと似ていますが、データベースのテーブル間に関係が存在しています。従って、データベース＝複数のテーブル+テーブル間の関係という等式になります。

　上記の関係から、関係データベースの構築には二つの方面から考える必要となります。

####1.1 テーブルの構造

　 各テーブルに名前があり、列にそれぞれの項目名を設定し、行にデータを記録します。例えば、下図の「学生番号」というテーブルです。

<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010901.png" alt="データベース" width=250" data-bd-imgshare-binded="1" /></p>


　フィールド「学籍番号」は上記のテーブルの識別子と設定されます。同姓同名の学生がいるかもしれませんが、学籍番号が異なるので、ひとりの学生を特定することができるからです。このようなフィールドがテーブルの主キーと言います。

####1.2 テーブル間の関係

　関係データベースがテーブルの集合で、同じデータベース内の複数なテーブルがお互いに結びついています。下図に示すような「学籍番号」と「学科」テーブルです。
「学籍番号」と「学科」は「学籍番号」によって関連付けられます。対応するデータベースでの操作がjoinです。このように２つのテーブルを組み合わせることによって、例えば、学生「伊藤尚」がどの学科に所属しているか調べることができます。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010902.png" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

###2.関係データベース管理システムMySQL

####2.1 MySQLの特徴：

(1)MySQLはオープンソース（OSS）のRDBMSで、商用利用の場合はライセンスの購入が必要です。

(2)C言語、Java、R、Python、 PHP、Rubyなど多数の言語にて開発可能（ODBC、JDBC共に対応）

(3)標準的なSQL言語を使用しています。



####2.2 MySQLのインストール

　ダウンロード：<a href="https://dev.mysql.com/downloads/windows/installer/8.0.html" rel="noopener" rel="nofollow" target="_blank">https://dev.mysql.com/downloads/windows/installer/8.0.html</a>

　二番目をダウンロードします。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010903.png" alt="データベース" width=400" data-bd-imgshare-binded="1" /></p>

　ダブルクリックしてインストールを開始します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010904.png" alt="データベース" width=100" data-bd-imgshare-binded="1" /></p>

　承認して「次へ」をクリックします。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010905.png" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　一番目を選択します。「Next」をクリックします。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010906.png" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　以下の画面が出るまで「Next」をクリックします。「Execute」をクリックします。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010907.png" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　データベースのrootパスワードを入力します。これをしっかり覚えてください。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010908.jpg" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　「Add User」をクリックして、ユーザ名とパスワードを入力します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010909.jpg" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　「Next」か「Execute」をクリックします。以下の画面でさっき設定したrootのパスワードを入力します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010910.jpg" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　「Finish」が出るまで「Next」か「Execute」をクリックします。「Finish」が出ると、MySQLのインストールが完了です。
　「Wordbench」を起動します。local を選択し、rootのパスワードを入力します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010911.jpg" alt="データベース" width=500" data-bd-imgshare-binded="1" /></p>

　MySQLにビルトインのデータベースがあります。以下の画面でSQL文でデータを抽出できます。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010912.jpg" alt="データベース" width=600" data-bd-imgshare-binded="1" /></p>

###3.データ分析ツールとMySQLデータベースの接続

　データベースがデータを保存する集合で、SQLでデータの抽出や集計などの簡単な操作を実現できますが、多角的な分析や高度な分析には、やはりデータ分析ツールでデータベースと接続し、ドリルダウン／ドリルアップ／ドリルスルーなどを行います。ここでFineReportでMySQLデータベースとの接続方法を説明します。  　　　 

　[FineReport](http://www.finereport.com/jp/?utm_source=Qiita&utm_medium=media&utm_campaign=database&utm_term=fr_top2)はほとんどすべてのデータベースに接続でき、複数のデータソースを一枚のテンプレートに関連づけます。一回接続すると、いつでも気軽にデータを取り出せます。手順は以下の通り：

　JDBCデータ接続を新規作成します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010913.jpg" alt="データベース" width=550" data-bd-imgshare-binded="1" /></p>

　データベースタイプでMySQLを選択します。下図に示すよに、FineReportがSQL Server，Oracle、AccessやPostgreなどの主流データベースに接続できます。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010914.jpg" alt="データベース" width=550" data-bd-imgshare-binded="1" /></p>

　ドライバがデータベースのタイプによって自動的に表示されます。URL、ユーザーIDとパスワードを入力して、「接続テスト」をクリックします。「接続成功」が表示されると、データベースとの接続が完了します。
<p align="center"><img class="aligncenter" src="http://www.finereport.com/jp/wp-content/themes/BusinessNews/images/2019010915.jpg" alt="データベース" width=550" data-bd-imgshare-binded="1" /></p>

　それで、データクエリウィンドウでMySQLデータベースからデータを抽出できます。ほんとうに簡単でしょう？データを準備したら、帳票あるいはダッシュボードの作成を始めましょう～
![2019010916.gif](https://qiita-image-store.s3.amazonaws.com/0/266670/41c84fde-a5e1-e22d-b512-b44d7a8e0d8d.gif)


FineReportダウンロードは<a href="http://www.finereport.com/jp/?utm_source=Qiita&utm_medium=media&utm_campaign=database&utm_term=here_pro2">こちら</a>。
*    *    *

ツイッターでデータ分析・可視化、仕事のスキルについての面白い情報をシェアしています。よかたっら覗いてください！:sparkles:
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">前はデータ分析職につきたい方のために、十週間の学習計画を紹介しました。ここはインフォグラフィックにまとめてみます！記事と合わせてお読みください！<br>記事のURL：<a href="https://t.co/1wBiLQiRzi">https://t.co/1wBiLQiRzi</a> <a href="https://twitter.com/HaileeKana?ref_src=twsrc%5Etfw">@HaileeKana</a> <a href="https://twitter.com/hashtag/note?src=hash&amp;ref_src=twsrc%5Etfw">#note</a> <a href="https://t.co/wWH0jMBwHb">https://t.co/wWH0jMBwHb</a></p>&mdash; HaileeKana (@HaileeKana) <a href="https://twitter.com/HaileeKana/status/1282126955345633280?ref_src=twsrc%5Etfw">July 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
###そのほか

<a href="https://qiita.com/Hailee/items/781e33e2474e254fdd7c" rel="noopener" target="_blank">【学習計画】十週間で知識ゼロからのデータ分析入門</a>について、ほかの記事


- [データ分析に欠かせない五つの考え方【データ分析手法をたくさん知っても活用できない根本理由】](https://qiita.com/Hailee/items/e248c202bfe0710a5b29)

- [初心者が押さえておくべきSQLガイド](https://qiita.com/Hailee/items/136439b53a1c4a8265b3)

- [データ分析をやっても無駄？実例から見る本当のデータ分析～【連載-1】](https://qiita.com/Hailee/items/f6c40ee0cb789e12f36a)
- [データ分析をやっても無駄？実例から見る本当のデータ分析～【連載-2】](https://qiita.com/Hailee/items/6fbc6f9f6a06bc82ac38)
- [ダッシュボードを作ってみたらそんなに難しくない](https://qiita.com/Hailee/items/2a8e22b78effe147de0d)

- [業務知識すら知らないとデータ分析をやれないでしょう【連載-1】](https://qiita.com/Hailee/items/d200ec744a18e46f4603)

- [業務知識すら知らないとデータ分析をやれないでしょう【連載-2】](https://qiita.com/Hailee/items/da8af31f83c03d3e3cec)