複数のテーブルを整理して、データをしっかりを管理したくSQLを勉強してみました。
プログラムに関する書籍ではオライリーが分かりやすい印象があるため、SQLでもオライリーからはじめてみることにしました。
この本を手にとった目的
選んだ本
pythonの学習でもオライリーの書籍が分かりやすく自身のレベルアップに繋がったと感じがしたため、SQL学習でもオライリーの書籍から初めてみることにしました。
目的
- データベースについて最低限の知識を得る
- SQLについて基本的な知識を得る。
Excelで作成した複数のテーブルを連携させ欲しい情報を取り出したり、取り出した情報をもとに計算したりしていました。この方法は使い慣れたExcelを使用でき使い勝手は良いのですが、その一方で次のような問題点を感じてました。
- ファイルの管理
エクセルファイルを連携させるため、保存しているディレクトリ情報、ファイル名が重要になります。迂闊にファイル名や保存先を変更すると途端に動かなくなります。 - 式の管理
エクセルファイル間を結びつけは、セルに入力した「式」でおこなっていました。別ファイルを参照するため式が長文になる傾向があります。そのため、作成しているときは良いのですがあとから見返すと「何がしたかった?」といったことが発生していました。
Microsoft365にはAccessが含まれるため、Accessを使えば上記の問題が解消されると考えました。加えて、データベースを扱うプログラミング言語について調べるとSQLであることを知りました。
そこで、データベース・SQLについて勉強してみることにしました。幸いAccessでもSQLで書いたコードをそのまま使えるため、SQL・データベースについて学べばそのまま利用できます。
また、Accessに関する書籍も数多く発行されておりますが、使い方に関する内容の書籍が中心のように感じました。Access自体の使い方を学ぶよりもデータベースの基本を学んだほうが良いのでは?と考えこの本を手に取りました。
SQLとは?
SQLに関して関連するキーワードを簡単にまとめます。
データベース
データベースとは、言ってしまえば、関連する情報を集めたもののことです。
引用元:はじめてのSQL (Alan Beaulieu著)
例えば、あるお店の売上情報は、商品・商品コード・価格・販売日などからなるデータベース、スマホの電話帳アプリは、電話番号・メールアドレス・住所などからなるデータベースですね。
リレーショナルモデル
データはテーブル(表)として表されます。データベース内には、複数のテーブルが存在します。表内の関連する値を結びつけて(リンクさせて)活用するモデルをリレーショナルモデルと呼ばれます。
僕の場合でも商品コード基準に他のエクセルファイルのから価格情報などを参照させたりしています。これも一種の各テーブルのリレーション(関連)を持たせているため、リレーショナルモデルの一つですね。
Wikipediaのページに詳しい説明がありますので、リンクを貼っておきます。
SQL
SQLは、「エス・キュー・エル」または「シークエル」と読みます。SQLは、データベースのデータを操作するための言語となります。
SQLにはMySQL, SQL Server, SQLite, Postgres SQL, Oracle Databaseの様々な言語があります。言語によって容易にできること、できないことの差があります。しかし、どのSQL言語もASNI SQ規格により仕様が標準化されています。つまり、MySQLで書いたコードがそのまま、ほとんど、または修正なしで他のSQL言語のプラットフォームで実行できます。
僕の場合では、本書ではMySQLで勉強して、実際はAccessのSQLで実行やPythonからSQLを動かす場合はSQLiteで実行などが容易にできることとなります。これは非常に大きなメリットですね。一つの言語を学んでもまた同じようなことをしたいのに他の言語も学ばねばならないのは非常に面倒です。
こちらもWikipediaのリンクを貼っておきます。
良かった点
- データベースについての知識が深まる。
- SQLでのコードの書き方の基本を学べる。
- SQLを使って何ができるかを体感できる。
この本でSQLを学習してみて良かったです。Accessでデザインビューで作成したクエリのSQLビューでの記載内容が理解できるようになりました。その結果、Accessでのデータベース操作のレベルアップに繋がったと思います。
Accessのデザインビューが見にくく感じていて、SQLを学んだことでSQLでなにがしたいかを理解できるようになったことは僕にとって大きな前進でした。とはいえ、SQLをゼロから書いていくのはまだ難しいため、デザインビューである程度したいことを作って、SQLをAccessに書いてもらって、その後の細かい修正をSQLで行っています。
苦労した点: MySQLインストール
「MySQLのインストール」には悩まされました。これを乗り越えないと学習のスタートラインにも立てないため、最初にして最大の関門でありました。pipでMySQLのインストールを行いましたが、次のエラーが発生してしまいました。
$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.pid)
対策法を調べて試しても一向に解決しませんでした。MySQLのサイトにインストーラーを発見し、ダウンロード、インストールをしてみると無事に解消。原因は不明ですが、使えるようになりました。
この本の概要
目次を引用します
1章 背景情報
2章 データベースの作成と設定
3章 入門:クエリ
4章 フィルタリング
5章 複数のテーブルからデータを取得する
6章 集合
7章 データの生成、操作、変換
8章 グループ化と集計
9章 サブクエリ
10章 結合
11章 条件付きロジック
12章 トランザクション
13章 インデックスと制約
14章 ビュー
15章 メタデータ
16章 解析関数
17章 大規模なデータベースの操作
18章 SQL とビッグデータ
引用元:はじめてのSQL (Alan Beaulieu著)
用語の説明から始まり、SQLを使用してどのようなことができるかについて解説されます。SQLを使ってデータベースの操作は、サンプルデータベースとして架空のレンタルビデオショップのデータベース(売上・顧客情報・映画情報など)を使用します。自分で本書のコードをコピーに実際に結果を確認しつつ学習をすすめることができます。
また、各章の最後には、練習問題が用意されています。学習したことを練習問題を通して確認できるため、効果的に学習進められると思います。最後に答えが用意されており、考えてもダメだ。。。なときは答えを頼ることもできます。
学習環境
学習環境は次のとおりです。
SQLの操作は、コマンドラインでの操作となります。そのため、視覚的にわかりずらい問題があります。この問題を解消するアプリがデータベースクライアントツールとなります。無料で使用でき、評判が良さそうなDBeaverを使用して学習を進めました。DBeaverの使い方で躓くことがなく使用できたため、良いデータベースクライアントツールだと思います。
- OS: MacOS BigSur
- SQL: MySQL 8.0.26
- データベースクライアント:DBeaver 21.2.1
まとめ
今回は、SQLを初めて学ぶために手にとった「初めてのSQL」について書きました。
SQLでの理解が深まり、データベースを多少は触れるようになったと思います。Accessでのデータベース、各テーブルの操作もSQLで指示できるようになり、操作性が向上しまいた。
しかしながら、SQLコードををゼロから書いていくのはまだまだ厳しいのが実情です。この点は、Accessのデザインビューが助けてくれました。デザインビューでは、GUIをテーブル間のリレーションを視覚的に組むことができます。さらに、AccessがGUIで組んだ結果のSQLを書いてくます。本書でSQLが読めるようになったことで、Accessが書いたSQLを修正していくことで得たい結果を容易に得られるようになりました。デザインビューのリレーションを組むのは操作しやすいのですが、得たいフィールドに計算式を書いていく作業はデザインビューの操作性が悪く感じます。Accessが書いたSQLコードをもとにして、SQL文をそのままコードエディタで加筆・修正していく方が効率的に作業できると感じています。
Pythonを使ってSQL(SQLiteが良さそう)を使ってデータベースからデータ取得もできるようなので、こちらにも挑戦したいと考えています。
コメント