こんにちは、キノトロープアカデミーです。

「キノトロープアカデミー」は、Web業界のトップランナーである株式会社キノトロープの社員が講師を務めるオンラインアカデミーです。リモートワーク時代に不可欠な「個のスキル」を高め、職人のような「匠」を目指す人を増やしたい。そんな願いを込め、基礎から経営判断、業務フローまで、一生モノのナレッジを惜しみなく公開していきます。

<入門編 第5回>

Webサイト制作のバックエンド
についてお伝えします。

担当は高橋です。

「MySQL」はWebサイト制作の裏側を支える技術のひとつです。

MySQLの基本概念から、会員管理やブログ投稿といった実際のWebサービスでの使われ方、SQL文法によるデータ操作の基礎、そしてPHPと連携してブラウザに表示するプログラミングの実装まで、初心者にもわかりやすく解説します。

”Webサイト制作のバックエンド”をテーマに、
今日お伝えしたいことは3つあります。

MySQLはオープンソースのリレーショナルデータベース管理システムです。無料でも利用でき、多くのWebサイトやWebアプリケーションでも利用されているデータベースです。

データベースはデータを保存したり、条件を指定して検索し、データを取り出したり出来るものです。

Webサイトで会員・ユーザログインのあるサイトの場合、ユーザ情報を保持するためにデータベースが利用されます。

掲示板であれば、書き込まれた内容を保存し、他の人が閲覧できるように表示するために利用され、ブログであれば、投稿する記事・コンテンツの内容をデータベースに保存し、表示しています。

MySQLなどはデータベース専用のソフトウェアですが、少量のデータ保存であればデータベースを利用しなくても、CSVファイルやテキストファイルに保存して読み込むことでデータベース替わりとすることもできます。

ただし、データ量が何万件、何百万件ある場合や、さまざまな条件などを組み合わせてデータを読み込みたい場合は、データベースを用いたほうが簡単にWebアプリケーションを構築することができます。

ですので、永続的にデータを保持・保管し続ける必要のあるものは基本データベースに保存する作りとすることが基本です。

なお、MySQLの一部の文字にもなっているSQLは、リレーショナルデータベースにおいて、データの操作や定義を行うための データベース言語です。

また、リレーショナルデータベースは、MySQL以外にも
・PostgreSQL、Windows系のSQLserver、
・MySQLからフォークされたMariaDB、
・Oracle データベース、IBM Db2
などがあります。



なお、リレーショナルデータベース以外に、NoSQL(Not only SQL)というリレーショナルデータベース以外のデータベースもあり、最近よく利用されるようになってきていますが、本入門編での説明には含んでいません。

今回の範囲は、全体像の中の図のMySQLの部分です。

また、前提として、今回説明する内容は、実際の仕事での方法とは異なっています。

入門向けになるべく前提知識がない場合でも説明が出来るように簡素化していますので、実務とは異なることにはご注意ください。

今回実際に試す環境としては、パソコンのOSはWindows 10、ブラウザはChrome、そしてMySQLとPHPを動かすためのものとして、前回のPHP編と同様にXAMPP(ザンプ)というソフトウェアをインストールして利用します。

MySQLには表形式のデータを保存し、条件を指定して検索して抽出することができます。実際にMySQLを利用しながら、基本的な利用方法を試してみましょう。

まずXAMPPを標準のままインストールすると、
Cドライブにxamppフォルダが作成されるかと思います。

C:\xampp

この中の
xampp-control.exe
をダブルクリックでコントロールパネルが起動します。



その後Apacheの部分の「Start」ボタンと、MySQLの部分の「Start」ボタンを押すことで、ApacheとMySQLが起動します。



その後データベースに接続するには「Shell」のボタンを押します



そうすると次の画面が出てきますので、
mysql –u root
と入力するとMySQLに接続することができます



まずはデータベースを作成します。

create database mytest;
show databases;
use mytest;
create table users ( id int,name varchar(255),birthday date );
show tables;
show create table users;
drop table users;
show tables;

次にテーブルにデータを登録します。

create table users ( id int not null primary key,name varchar(255),birthday date );

insert into users values (1,”takahashi”,”1990-01-01 10:10:10”);
insert into users values (2,”sato”,”1991-01-01 10:10:10”);
insert into users values (3,”sugiyama”,”1992-01-01 10:10:10”)

データ条件を指定して取得します。

select * from users;
select * from users where name = “sato”;
select * from users where id = 3;
select * from users where birthday < “1991-02-01 00:00:00”;

さらにこのデータをPHPで呼び出し、ブラウザ上に表示するプログラムを作成してみます。

<table>
   <tr>
       <th>id</th>
       <th>user</th>
       <th>birthday</th>
   </tr>
<?php
$pdo = new PDO (
'mysql:host=localhost;dbname=mytest;charset=utf8', 'root', '');
$sql = $pdo->query( 'select * from
users');
foreach ( $sql->fetchAll () as $row ) {
   echo '<tr>';
   echo '<td>', $row ['id'], '</td>';
   echo '<td>', $row ['name'], '</td>';
   echo '<td>', $row ['birthday'], '</td>';
   echo '</tr>';
   echo "\n";
}
?>
</table>

これで、PHP経由でMySQLのデータを呼び出すプログラムが完成しました。

前回、PHPで作成した99の表を、あえてMySQLを用いて実装してみます。

まず、結果を保存するデータベースを作成します。
先ほどのmytestデータベースの何かに、テーブルを作成します。

use mytest;
create table timestable ( x int,y int,answer int);

-------

insert into timestable values (1,1,1);

insert into timestable values (2,1,2);

insert into timestable values (3,1,3);

insert into timestable values (4,1,4);

insert into timestable values (5,1,5);

insert into timestable values (6,1,6);

insert into timestable values (7,1,7);

select * from timestable where x = 3;
select * from timestable where x = 7;

例えば、すべて指定すると変わってしまう。

update timestable set answer = 999;
truncate timestable; =>エラーになる

もう一度insertすると治る。

最後までご覧いただきありがとうございました。

の3点についての内容でした。

\ がんばれ!Web担当者 /

Web担当者応援マガジン

属人化の嵐の中で、時間と各部署と
そして上司と戦うWeb担当者のために

大規模Webサイトの運用業務に
よくある課題を解決するための手法を
簡潔にまとめました!

大規模CMS成功の法則