概要
今回はSQLとは何かについて解説します
また、併せてデータベースについても解説してゆきます
Webアプリを開発する場合、SQLはよく使われるので学んでおいて損はないでしょう
また、それ以外にもWebマーケターもデータ分析の際に重宝します
どのような顧客がどのページを閲覧していてそのうちの商品購入率はどれくらいか
などの分析をSQLで行うことができます
SQLの概要
まず、SQLの概要を解説してゆきます
SQLとは、リレーショナルデータベースのデータの操作や定義を行う言語です
また、SQLは国際標準化されています
リレーショナルデータベースの前にデータベースについて解説してゆきます
データベースとは
構造化した情報またはデータの組織的な集合です
そして、データベースには様々な種類があります
最近、よく使われているのは次の通りです
- リレーショナルデータベース
- キーバリュー型
- カラム指向型
- ドキュメント指向型
- グラフ型
リレーショナルデータベース
リレーショナルデータベースは表形式のデータと、それらの関係によってデータを管理する
リレーショナルデータベースには次のような概念がある
- テーブル
- レコード
- カラム
- フィールド
- 主キー
- リレーション
テーブル
データベースにおいて、データはばらばらに管理されているのではなく、
特定の規則に従って保存されている
この単位のことをテーブルという
データベースは複数のテーブルで構成されている
カラム
このテーブルの列にあたるのがカラムだ
カラムごとに格納されるデータは文字列や数値など事前に定義されている
レコード
そして、テーブルの行にあたるのがレコードだ
レコードは実際のデータを表している
フィールド
そして、テーブルの一つのマス目をフィールドと呼ぶ
フィールドはテーブルの最小単位だ
Excelにおけるセルのようなものだ
主キー
その他に主キーという概念がある
テーブルのレコードを一意に特定てきる値が格納されているカラムのことを主キーと呼ぶ
ちなみに、主キーは必ず設定しなければならないわけではない
リレーション
リレーションとはテーブル同士の関係を示す
リレーションには次の3種類が存在する
- 一対多
- 多対多
- 一対一
具体例
リレーショナルデータベースには次のようなものがある
- sqlite
- mysql
- Maria DB
- PostgreSQL
- Oracle Database
データベースごとに独自の文法が追加されていることもあるが
基本的なSQLの文法は全てに共通している
リレーショナルデータベース以外のデータベース
キーバリュー型
キーバリュー型はキーに対して値が関連付けられている形でデータが格納されている
データモデルがシンプルなためスケールアウトしやすく
処理も高速だがトランザクション処理できないものが多い
ドキュメント指向型
ドキュメント指向型は
JSONやXMLの形式でデータが格納されている
こちらもキーバリュー型と同様にスケールアウトしやすいが
トランザクション処理ができないことが多い
カラム指向型
続いてカラム指向型についてだ
リレーショナルデータベースでは一行一行を一塊のデータとして扱うが
カラム指向型データでは列を一塊として扱う
そのため、リレーショナルデータベースに比べて集計処理が得意なデータベースだ
グラフ型
最後のグラフ型はデータとデータの関係性をグラフ構造で表したデータベースだ
リレーショナルデータベースと比べてデータ同士の関係を扱うのが得意だ
リレーショナルデータベースであるデータとデータが関係しているかを調べるには
テーブル同士でJOINという操作を行う
このJOINは数回なら問題ないが、
何度も行われると処理にかかる時間は非常に大きくなってしまう
その点、グラフ型であればそのような処理を効率的に行うことができる
SQLの3つの言語
SQLには3つの言語が存在する
- データ定義言語(DDL)
- データ操作言語(DML)
- データ制御言語(DCL)
データ定義言語(DDL)
まず、データ定義言語(DDL)について解説しよう
データ定義言語とは、リレーショナルデータベースのデータ構造を定義する言語だ
これには、CREATE文、DROP文、ALTER文の3つが存在する
CREATE文ではテーブルの作成
DROP文はテーブルの削除
ALTER文はテーブルの定義変更を行うことができる
データ操作言語(DML)
続いて、データ操作言語(DML)について解説する
データ操作言語とは、
リレーショナルデータベース内のデータを検索、登録、削除、更新するための言語だ
これには、SELECT文、INSERT文、UPDATE文、DELETE文があげられる
SELECT文はデータの検索
INSERT文はデータ挿入
UPDATE文はデータ更新
DELETE文はデータ削除を行うことができる
データ制御言語(DCL)
最後にデータ制御言語(DCL)を解説する
データ制御言語にはGRANT文、REVOKE文、COMMIT文、ROLLBACK文があげられる
GRANT文はアクセス権付与
REVOKE文は権限はく奪
COMMIT文はトランザクションの確定
ROLLBACK文はトランザクションの破棄を行うことができる