この記事では、MySQLの完全な初心者向けに、データベースの概要について解説します。
- そもそもデータベースってなに?
- MySQLってデータベースの何なの?
- MySQLとSQLの違いって?
こういった内容を解説していきます。
MySQLは主にWebサイトのバックエンド(サーバー側)で利用され、PHPなどと組み合わせて使うことが多いです。
例えばこのブログで利用しているWordPressでも、記事のデータなどをMySQLで管理しています。
PHPを学んでいるという人はもちろんですが、フロントエンドしかやらないという人も、概要だけでも知っておくと、いざという時に役に立つこともあると思いますので、この機会に是非学習してみてください!
目次
データベースとMySQLの概要
データベースとは?
まず「データベース」という言葉の定義を見てみます。
データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。
出典:Wikipedia
広い意味では、「整理されたデータの集まり」のことです。まあここまでは誰でも何となく想像できるんじゃないかと思います。
ただ一言にデータの集まりと言っても、「データをどんな風に集めて管理するのか」というのは、様々な方法がありますよね。
- どこで管理するのか(コンピュータ、紙、etc…)
- どうやって整理するのか
- どうやって検索するのか
こういったデータの管理方法を規定するものを「データモデル」といいます。
そして数あるデータモデルの中で、現在のコンピュータシステムで広く使われているのが、「リレーショナルデータモデル」というデータモデルです。
さらに、「リレーショナルデータモデル」で作られた作られたデータベースのことを「リレーショナルデータベース」(RDB)といいます。
MySQLを語る上でのデータベースは、この「リレーショナルデータベース」(RDB)のことを指します。
※RDBの詳しい仕組みについては、気になる方はご自身で調べてみてください。ここでは言葉だけ覚えておけばOKです。
MySQLとは?
では、MySQLって一体データベースの何なのか?という話ですが、
MySQL = データベースを管理するシステム
です。
正確には、MySQLが管理するのはリレーショナルデータベースですので、リレーショナルデータベースを管理するシステムですね。こういったシステムを総称して、RDBMS(リレーショナルデータベースマネージメントシステム)といいます。
ちなみにRDBMSはMySQL以外にも色々あります。代表的なものは、
- Oracle
- SQL Server
- PostgreSQL
- SQLite
- MariaDB(MySQLの後継)
などです。名前くらいは聞いたことがあるものもあるんじゃないでしょうか。
ただもちろん、システムによってその特性は異なります。MySQLの特徴は以下のような感じです。
- オープンソース(無償で利用できる)
- Oracleに次いで世界的なシェアは2番目(Oracleは有償)
- 仕組みが比較的シンプル
- ドキュメントが豊富
なので、MySQLは比較的初心者でも扱いやすいRDBMSになります。
SQLとは?
次にSQLについてです。MySQLと非常に似ていますが、言葉の意味的にはMySQLとSQLは似て非なるものです。
MySQLは上記で説明した通り、データベースを管理するためのシステムのことですが、対してSQLは、データベースとやり取りするための問い合わせ言語のことです。
扱いとしては、プログラミング言語に近いです。
- データベースにデータを格納する
- データベースからデータを取得する
- データベースのデータを更新する
こういった操作を、SQLという言語を用いて行います。
これはMySQL以外のRDBMSでも同様です。
微妙にルールは違っていたりしますが、基本的なSQLの文法はほぼ同じなので、例えばMySQLでSQLの書き方を一度覚えてしまえば、OracleやPostgreSQLも少しの学習ですぐ使えるようになると思います。
MySQLの構成
ここまでで概要を解説してきましたが、実際にMySQLの中でどのようにデータを扱うのか、というのはイメージしづらいと思います。
そこで、MySQLの具体的な構造についても、例を交えて簡単に解説します。
データベースとテーブルとカラム
まず、MySQLとは、データベースを管理するシステムです。1つのMySQLのシステムの中には、複数の「データベース」を持つことができます。
ではそれぞれのデータベースの中はどうなっているかというと、複数の「テーブル」を作ることができ、それぞれのテーブルは「カラム」という要素で構成されています。
まずはこの、「データベース」「テーブル」「カラム」という3つの構成要素を覚えておけば十分です。
MySQL > データベース > テーブル > カラム
という関係性ですね。
具体例
具体例を見てみましょう。例として、Twitterのようなシステムで使うデータベースを考えてみます。
(※実際はTwitterでMySQLを使っている訳ではありませんので、あくまで仮の話です。)
構成要素としては、まず「ユーザー」の情報を管理するテーブルがあり、ユーザーテーブルの情報としてはユーザーID、ユーザー名、メールアドレス等があります。
そしてユーザーに関連する情報として、「ツイート」「フォロー」「フォロワー」などが別テーブルで管理されており、それぞれがユーザーIDで紐付くイメージですね。
この「ユーザーIDで紐付く」というのがポイントです。それぞれのテーブル間で関係性を持つことができるというのが、「リレーショナルデータベース」という名前の所以です。
テーブル内のデータ
ここまでは、データを入れるための入れ物の話でした。次に、実際に入れ物の中に入れる中身(データ)の話です。
これは、エクセルの表をイメージするとわかりやすいと思います。
先ほどの「ユーザー」というテーブルを例にすると、上記のようなイメージになります。
この例では4行のデータが入っており、テーブルに格納されているデータのことを「レコード」と言ったりもします。
エクセルの表に似ていますね。ここまで長々と説明してきましたが、データベース全体もエクセルに例えるとイメージしやすいかもしれません。
- データベース = エクセルのファイル
- テーブル = シート
- カラム = シートの構成(列)
- レコード = シート内のデータ(行)
こんなイメージです。
まとめ
概要をまとめます。
- データベースとは、整理されたデータの集まり
- MySQLとは、データベースを管理するシステム(RDBMS)
- SQLとは、データベースとやり取りするための問い合わせ言語
- MySQLは「データベース」と「テーブル」と「カラム」で構成される
- データベース全体のイメージはエクセルに似ている
本当はSQLの具体的な文法も少し紹介しようかと思いましたが、長くなりそうなので別記事にまとめます。
本日はこの辺で。