MySQLは、世界で最も利用されているオープンソースのリレーショナルデータベースです。WindowsやMacなどの環境にインストールすることで、無料で利用できます。
データベースとはデータを一元管理し、検索や抽出、加工をできるようにしたものです。データベース内でデータは正確で、独立しており、整合性が取れており、冗長性が排除されてある必要があります。
リレーショナルデータベースとは各データを二次元の表によって表現し、表同士を関連付けたデータベースのことです。リレーショナルデータベースでは表をテーブル、表の列をカラム、表の行をレコードと呼びます。複数のテーブルにおいて一意の値をもたせることでテーブル同士を関連付けています。
リレーショナルデータベースに新たなテーブルの作成やデータの追加、削除などを行うシステムをリレーショナルデータベース管理システム(RDBMS)と呼びます。
MySQLはRDBMSの一つです。
RDBMSの中で、MySQLはどういった特徴があるのでしょうか。詳しく見ていきます。
複数のユーザーが同時並行してデータベースを利用可能で、Webをベースとしたサービスを提供する際に有用なデータベースです。レンタルサーバーのデータベースとして広く利用されています。
レプリケーションとはデータの複製を別のサーバーに持っておくことです。
一般的なWebサイトではデータベース上の処理は参照がほとんどであり、更新されることは少ない傾向にあります。一つ一つの参照処理をマスターのデータベースで行うと負荷が大きくなるため、マスターの他に複製をいくつも作成し参照系のアクセスは複製にて処理することで負荷を分散できます。
レプリケーション機能は商用データベースであれば標準搭載されている場合も多いですが、無料で利用できる点はMySQLを利用するメリットと言えるでしょう。
バックアップ機能やリカバリー機能などが充実しているため、24時間体制で稼働するシステムやWebサイトに対応できます。またデータを保護するための機能も用意されています。SSL/TLS通信を始めとするデータの暗号化機能で安全性を確保しています。
トランザクション機能とは、データの一貫性を保つための機能です。
データベースにユーザーが命令することをクエリと呼びます。トランザクションとは一連のクエリの集合体のことです。データベースは整合性が取れている必要があります。そのため行っている一連の処理が完了するまでデータの変更を行えないようにします。その状態で一連のクエリを順番に実行していきすべてのクエリが適用できた場合にデータベースに反映します。
この機能を利用することで、処理の途中でトラブルが生じたとしても元の状態に戻すことで、データに整合性を持たせられます。個人情報や送金処理など特にデータの整合性を保つ必要があるデータベースに利用されています。
1つのクエリを確定することをコミットと言い、コミットせずに元の状態に戻すことをロールバックと言います。すなわちトランザクションの中ではコミットを順次行い、エラーが生じた際は最新のコミットが完了している時点までロールバックを行います。
複数ユーザーによる同時編集についてもトランザクション機能で実現しています。
MySQLを使うとどういったことができるのか理解しましょう。
MySQLは検索スピードが高速なため、Yahoo! JAPAN、Google、YouTubeなどでも利用されています。一方で、無償という観点から小規模なアプリケーションにも利用されることが多いです。また実行環境も幅広く、MacやWindowsはもちろん、Linuxでも問題なく動作します。
WebサービスはLAMP環境で構築されている例が数多くあります。LAMPとはLinux、Apache、MySQL、PHPの頭文字で、Webサービスの構築をこの組み合わせですることがベーシックとなっています。
これらはすべてオープンソースのソフトウェアで高機能であるため、低コストで高性能なサービスを開発できます。一方で、他の商用データベース管理システムと比較すると、やや機能の充実部分で劣る部分があります。
データベース管理システムは高機能になると有償で提供されているものが基本的です。しかしMySQLは無償で利用できるためコストを削減できます。
大企業が他のシステムからMySQLに移行するだけで数千万、数億単位でコスト削減ができた例も少なくありません。また無償という点で個人利用やスタートアップ企業など十分に資金がない場合にでも採用しやすくなっています。
データベース管理システムとしてMySQLは世界中で幅広く利用されているため、リファレンスや導入事例が豊富に存在しています。またオープンソースであるという点からアップデートがしやすく、ユーザーからの声を反映し頻繁に機能追加が行われています。
Webサービスの開発を行う立場の方にとって、外部のアドバイスや意見を聴く機会は貴重でしょう。データベース管理システムとしてのシェアが高いMySQLではWeb上にノウハウも蓄積されておりコミュニティも充実しているため、欲しい情報を簡単に参照できます。
では、MySQLをインストールしてみましょう。Mac、Windowsそれぞれ方法をご紹介します。
ターミナルで下記コマンドを入力します。
$ brew update
$ brew install mysql
インストールが完了次第、下記コマンドを入力します。
$ brew info mysql
ここで、下記のような出力があればインストール完了です。
mysql: stable “インストールしたバージョン” (bottled)
MySQLの公式Webページよりインストーラーをダウンロードします。
ダウンロードしたインストーラーを開き、実行します。
それでは、MySQLの主なデータ型や基本的な使い方について説明していきます。
整数を表す型です。取り扱える数値の範囲は-2,147,483,648〜2,147,483,647です。
小数点以下を表現できる型です。取り扱える数値の範囲は3.402823466E+38~3.402823466E+38です。
小数点以下を表現できる型でfloatより幅広い値を取扱い可能です。値の範囲は-1.7976931348623157E+308~1.7976931348623157E+308です。
文字列を格納する型です。取り扱える文字数は0〜255文字です。
文字列を格納する型です。取り扱える文字数は0〜65535文字です。
日付を格納する型です。”YYYY-MM-DD”の形で入力可能です。
日付と時刻を格納する型です。”YYYY-MM-DD-HH:MM:SS”の形で入力可能です。
ターミナルで下記コマンドを入力します。
$ brew services start mysql
$ mysql -uroot
MySQLには様々なGUI(Graphic User Interface)ツールが展開されているため、ツールを起動し、MySQLへ接続することで起動できます。
create database “任意のデータベース名”;
RDBMS内でデータベースは整合性が取れている必要があるため、同じ名前のデータベースは作ることができません。すでに存在しているデータベース名にてcreate databaseすると”database exists”というエラーを吐きます。
drop database “削除したいデータベース名”;
use database “使用したいデータベース名”;
show database “参照したいデータベース名”;
データベース内のデータがリスト形式で表示されます。
create table “任意のTable名” (”列名” データ型, “列名” データ型, ……);
drop table “削除したいTable名”
insert into table名(”列名”, “列名”, “列名”, ……)values(値, 値, 値, ……);
update “テーブル名” set “列名” = “更新値” where “列名” = “値”;
delete from “テーブル名” where “列名” = “値”;
select “値” from “データベース名”;
たとえば”students”というTableから”id”と”name”という値を抽出したい際は以下のように記載します。
select id, name from students;
すべてのデータを取り出す場合は値のところに”*”を入力します。
データを並び替える場合にはorder by文を使います。下記のようにorder byのあとに列名、並び替えの方法(昇順:ASC、降順:DESC)を指定します。
select id, name from students order by id [ASC];
また、条件を絞るためにwhereを利用します。whereは下記のように比較演算子と組み合わせて条件を指定します。
select id, name from students where id > 1000;
膨大なデータを扱うデータベース管理システムでは、条件分岐をしないままデータを抽出すると負荷がかかり処理が遅くなります。そのため参照したいデータのみに絞ってselectを実行することが重要です。
前章で紹介したコマンドをすべて暗記し、ターミナルなどで入力するのは初学者にとっては難しいものです。そのためMySQLには様々なGUIツールが提供されています。
コマンド入力や出力結果の確認などを容易に行うためにGUIツールを活用することは有用です。主なGUIツールについて紹介します。
MySQLの公式が出しているGUIツールです。データベースの設計、開発、管理を一本化できるツールです。コマンド入力についてもビジュアル操作で代替されており、コーディングの初心者でも利用しやすいツールです。
動作が軽く、基本的な操作を行うための機能も整っているためストレス無く利用できます。データベースの作成やテーブルの修正などの基本操作はマウスクリックにて直感的に行うことができるためコーディングをしたことがない方にもおすすめのツールです。また、データベース内のデータをUI上に可視化してくれるため、入力、編集のミス軽減にもなります。
Mac用のGUIツールです。UI上のデータをダブルクリックすることで直接データを編集できます。また、データ型やデータの長さ、符号の有無なども可視化してくれるため効率的に操作可能です。さらに、出力されたテーブルをコピー&ペースト可能でExcel等に貼り付けることもできます。
PHPで実装されたMySQLの管理ツールです。データベースやテーブルの編集、データの追加や削除、参照などの操作をコマンド入力なしでブラウザから行うことができます。
最後に、MySQLの習得方法についてご紹介していきます。
Webアプリやサイトを構築する上で、データベース管理システムを利用しないことはほとんどありません。そのため、MySQLを学習する過程で、サイト面(クライアントサイド)とデータベース(サーバーサイド)のデータの連携や操作方法を学ぶことができます。
また、MySQLはオープンソースという点で幅広く利用されているため、これからデータベース管理システムを学びたいと思っている人にはおすすめするシステムです。特にスタートアップ企業やベンチャー企業では使われることが多いため、転職を考えている人にとってMySQLを習得することは市場価値を上げることになるでしょう。
動画を用いた初心者向けのプログラミング学習サイトで日本最大級です。教材もオリジナルで作られておりMySQLの他にもHTMLやCSS、JavaScriptなどWebサイトやアプリケーションに必要な言語を学習できます。
オンラインでプログラミング言語を無料で学習できます。1つ1つの言語のコースが簡単な解説の後に演習問題という流れになっており、1つ1つのステップも4〜5分で構成されているため、すきまの時間で効率的に学習できます。
対象ユーザー:データベースについて初心者の方
データベースの基礎からMySQLの操作方法、サーバーとの連携までデータベースの基礎から具体的な利用方法まで一通り学ぶことができます。
特に後半部分のサーバーなど外部との連携は詳細に書かれており、この本をマスターすれば実用レベルでMySQLを理解できます。
対象ユーザー:MySQL以外のデータベースを利用したことがある方
MySQLについてこれさえ読めば何でもわかると言っても過言ではない1冊です。インストール方法から基本操作、アプリケーション開発まで詳細に書かれています。その分ページ数も多くなっています。
MySQLはオープンソースで無償のデータベース管理システムであり検索スピードが高速なため、スタートアップ企業やベンチャーはもちろんYahoo! JAPANやGoogleなどの大手IT企業でも利用されています。
セキュリティやデータの整合性へのケアも十分になされているため世界中で幅広く利用されています。幅広く利用されているため、Web上に様々なノウハウやQ&Aが蓄積されており効率的に開発を行うことができるでしょう。
]大企業からスタートアップまで幅広く利用されているMySQLを習得することで市場価値を向上し就職や転職にも有利に働くでしょう。
Web上にはMySQLを学習するためのサイトが展開されているほか、書籍も数多く販売されています。確保できる時間や環境に応じて最適な学習法を選択し、習得しましょう。
WEBでのお問い合わせはこちら