【読書メモ】スッキリわかるSQL入門 第3版 (スッキリわかる入門シリーズ)
データ集計・分析を効率的に行うために
今年からSQLを活用しようと考えています。
体系的に学ぶため、いくつか入門書を
探しましたが、『スッキリわかる入門シリーズ』が分かりやすそうでした。
SQLの基本的な特徴だけでなく捉えておきたい関連情報まで纏めてみようと思います。
1.データベースとは
・データベースとは
検索や書き換え、分析などのデータ管理を
目的として蓄積された、さまざまな情報を指す。
分野を問わず広く用いられているのが、複数の表の形式でデータを管理するリレーショナルデータベース(RDB)。 実体はただのファイル。
・RDBの基本構造
①RDBには複数の表が入っており、個々の用をテーブル(table)という。
②個々のテーブルには名前が付いており、その名前をテーブル名という。
③テーブルには行(row)と列(colume)で構成されている。
④1つの行が1件のデータに対応し、列はそのデータの要素に対応する。
※行をレコード、列をカラムやフィールドと呼ぶこともある。
データベースの中のデータを操作するには、データベースファイルではなく、 データベース管理システム(※)と呼ばれるプログラムに対して、SQLで書かれた命令文を送信する。
※ DBMS:database manegement system
DBMSはコンピュータ内で常に稼働してSQL文を待ち受けており、 届いた命令に従って、
データベースファイルの内容を検索した入り、
書き換えたりする処理を実行してくれる。
2.SQLとは
データベースを操作する専用の言語。
データベースにデータを挿入したり、
検索したりする際に利用する。
データベースのなかには、数万・数百万件ものデータが保存されているが、SQLを使うことで効率的に操作をすることが可能。
SQLは国際標準化されているため、
さまざまなデータベースで利用可能。
有名なデータベースとしては、Oracle、MySQL、 PostgreSQL、SQLiteなどが、
いずれもSQLで操作できる。
3.SQLの命令体系
4大命令は以下。
・SELECT
DBから値などを参照する時に使用。
最も頻繁に活用する命令文。
基本構文
・UPDATE
DBの値を更新する時に使用。
基本構文
・DELETE
DBからデータを削除する場合に
deleteコマンドを使用。
基本構文
・INSERT
DBにデータを挿入したい場合に使用。
基本構文
4.使えるようになりたいSELECT文-データの検索
SELECTの後ろには、取得したい列の名前をカンマで区切って記述。
上記はアスタリスクを記述すれば、すべての列をするのと同様の効果が得られる。
「from…」はFROM句といい、取得するデータが格納されているテーブルを必ず指定します。
5.データベースの知識を深めよう
・トランザクション
DBMSに対して複数のSQL文を送る際、
一つ以上のSQL文をひとかたまりとして
扱うよう指示することができる。
このかたまりをトランザクション(transavtiron,TX)という。
・DBMSによるトランザクションの制御
①トランザクションの途中で、処理が中断されないようにする。
②トランザクションの途中に、ほかの人の処理が割り込めないようにする。
・デッドロック
データベースで同時にたくさんのTXが実行されると、まれにデッドロック(dead lock)と
呼ばれる状態に陥り、TX処理が途中で永久に止まってしまうことがあります。
・クラウドデータベース
一昔前まで、DBを利用するためには、サーバを購入して自社やデータセンターに設置し、自らDBMSをインストールして環境構築する必要があった。
この方法はオンプレミス(on-premises)といわれ、現在でもDBを利用する主要な方法の1つですが、高額な初期費用が必要となるほか、導入や運用には専門知識や経験のある技術者が求められます。
そこで近年、DBMS機能そのものをクラウド上に設置し利用する形態のDBが急増しています。
クラウド事業者が提供するweb画面から必要な製品やスペックを設定するだけでDBMSが自動的に構築され、数分後には利用が可能となります。
6.データベースの設計に必要なことは?
・データベース設計の流れ
お客様の要件→DB設計作業→必要なテーブルを持つDB。
・DB構築のINPUTとOUTOUT
INPUT:要件の一覧表(お客様から聴取)
OUTPUT:DDL一式(必要なテーブル)※
※DDL(Data Definition Language)
データ定義言語と呼ばれ、データベース内の表、 ビューやインデックスなどの各種オブジェクトの作成や変更をするためのSQL文。
∟CREATE:新しいDBオブジェクトの作成
∟DROP:既存のDBオブジェクトの削除
∟ALTER:既存のDBオブジェクトの変更
∟TRUNCATE:テーブル内のデータ全体の削除
・概念設計
概念設計とはデータベースの対象となる情報を抽出し、どういった構成で整理するのかを決めること(管理すべき情報はどのようなものなのかを整理する)。
DBやシステムに関することは考えず、要件に登場する情報だけをざっくりと把握します。
また、情報同士に関連がある場合、どのような関係なのかも 併せて整理します。
・論理設計
論理設計は概念データモデルをさらに具体化し、最終的に作成するデータベースの種類に合致した形式に変換する工程。
概念設計で明らかになった各情報について、RDBを使う前提で構造を整理し、詳しく
具体化していきます。
論理設計では「どのようなテーブルを作り、
それぞれのテーブルにどのような列を作るか」まで明らかにすれば十分。型や制約など、
付随的な部分については考えなくてOK。
・物理設計
物理設計は論理設計を実際の
データベース運用環境に当てはめる工程。
特定のDBMS製品(たとえばOracle DB)を使う前提に立ち、 論理設計で明らかになった各テーブルについて、その内容を詳しく具体化していきます。すべてのテーブルのすべての列について、 型、インデックス、制約、デフォルト値など、テーブル作成に必要なすべての要素を確定させます。
この物理設計に基づいて、CREATE TABLE文などを含む一連のDDLを作成し、 最終的にDB内にテーブルを作成することができます。
7.気になったキーワード
・可用性
可用性(Availability)とは、システムを障害(機器やパーツの故障・災害・アクシデントなど)で停止させることなく稼働し続けること、またはその指標のことをいいます。
長い時間、システムを稼働し続けられることを高可用性(High Availability)ともいいます。
・エンティティ
エンティティとは、実体、存在、実在(物)、本質、本体などの意味を持つ英単語。
ITの分野では、何らかの標識や識別名、所在情報によって指し示される、独立した一意の対象物をエンティティということが多い。
・原子性
原子性とは、ある物事が、それ以上細かい単位や要素に分割されない、またはできない性質のこと。
・シーケンス
「あらかじめ決められた順序で処理を行うこと」を意味する語句で、おもに制御の分野で用いられる。 シーケンス制御、シーケンシャル制御とも。
最後に
ざざーっと読んだ限りではデータを引き抜くための命令文などは割とシンプルな印象。
テーブル等もエクセルと同じで実践の心理的ハードルはやや下がりました。
しっかり活用してデータ分析に活かせるように頑張ります。