Top Banner
PHP講座(5) はじめてのMySQL この授業では、PHPWebアプリケーションを作成するにあたって切っても切れない関係にあ MySQLの基本とその操作方法について学びます。
14

05 はじめてのmy sql

Jun 26, 2015

Download

Technology

PHPからMySQLに接続する方法を学びます。
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 05 はじめてのmy sql

PHP講座(5)!はじめてのMySQL

この授業では、PHPでWebアプリケーションを作成するにあたって切っても切れない関係にあるMySQLの基本とその操作方法について学びます。

Page 2: 05 はじめてのmy sql

Webアプリケーションの仕組み

10.4.18 (C) 株式会社破滅派

2

HTML+CSS+Javascriptなどで作るWebページ。  Flashなども含む。

すべてのWebアプリケーションは同じ仕組です

ユーザーインターフェース ビジネスロジック ミドルウェア

PHPやPerl、Rubyなどで作る処理命令。ミドルウェアへの命令や、処理結果の出力などを行う、アプリケーションの心臓部分。

MySQLのようなデータベース、sendmailのようなメールサーバ、GDのような画像処理アプリケーションなど。

ユーザーから  のリクエスト

アプリケーション  への命令

ユーザーへの 結果出力  

アプリケーション による処理結果  

処理 処理

Page 3: 05 はじめてのmy sql

できなければいけないこと

10.4.18 (C) 株式会社破滅派

3

特に、データベース(DB)はとてもよく使います。

DBが できないと  お話になりません。

ちょっとは

Page 4: 05 はじめてのmy sql

なぜデータベースが必要なの?

10.4.18 (C) 株式会社破滅派

4

データベース ⇒ データの保存・取り出し

Webアプリケーションの必要とするデータは  膨大な量になるので、検索機能が必要。

Page 5: 05 はじめてのmy sql

データベースならではの4つの技術

10.4.18 (C) 株式会社破滅派

5

取得(検索)は圧倒的にたくさん使う機能です。  言い換えれば、検索さえちゃんとできれば、あとはそんなにやらなくてもいいわけです。

1.  作成する(  Create)  

2.  検索・取得する(Retrieve)  

3.  更新する(Update)  

4.  削除する(Delete)  

全部あわせてCRUDとか言ったりします。

Page 6: 05 はじめてのmy sql

RMDBSとは

10.4.18 (C) 株式会社破滅派

6

みなさんがこれから扱うDBとは、  RDBMS(Relational  Database  Management  System)つまり、  

複数のデータを管理するシステムです。

たとえば…  1.  顧客Aの9月の取引内容を「マイページ」に表示する  

2.  商品Bを購入した人数を表示する  

3.  20代の顧客が購入した商品のランキングを表示する  

顧客データ 取引データ 商品データ

Page 7: 05 はじめてのmy sql

データベースの構造

10.4.18 (C) 株式会社破滅派

7

データベースはテーブル(表)の集合体です。

データベース

Excelも「シート」を束ねる「ブック」からなるため、似たような機能を提供していますが、一番の違いは複数のテーブルからの検索性です。

Page 8: 05 はじめてのmy sql

テーブルの構造

10.4.18 (C) 株式会社破滅派

8

ID name age sex prefecture birthday 1 鈴木 20 0 東京 1990-­‐05-­‐05  14:00:00 2 佐藤 35 1 千葉 1975-­‐08-­‐22  22:02:00 3 田中 50 0 神奈川 1960-­‐12-­‐11  00:00:00

それぞれの項目(列)の名前をフィールド名と呼びます。  この場合は「ID」「name」などがフィールド名です。  各列のことは「カラム」と呼びます。

一行で一つのデータセットになります。  この行のことをrowと英語表記することがあるので、注意してください。  データを取得するときは普通、行ごとになります。

その行をテーブル内で特定するフィールドを主キーと呼びます。  普通はIDをつけます。他とかぶらないようにすれば、「テーブルAのID5」とすることで、特定のデータを取得できます。

MySQLの各フィールドにはデータ型があります。日付ならDatetime型やTimestamp型を利用することで、大小の比較などが簡単になります。この場合、性別を0/1にすることで、判断が容易になります。  

Page 9: 05 はじめてのmy sql

MySQLを使ってみての感想

10.4.18 (C) 株式会社破滅派

9

MySQL  ムズ過ぎ  オワタ  

\(^o^)/

もう講座  でねーよ

Page 10: 05 はじめてのmy sql

テーブルの作成とphpMyAdminの利用

10.4.18 (C) 株式会社破滅派

10

MySQLを操作するにはコマンドライン環境を使いました。  しかし、これだけでは大変です。  

phpMyAdminというWebブラウザからMySQLを操作できるツールを利用します。  

phpMyAdminはWebブラウザから操作できるため、MySQLを直感的に理解することができます。  

XAMPPには最初からインストールされていますし(http://localhost/xampp)、各種レンタルサーバにも入っています。  

基本的にテーブル作成はphpMyAdminから行いましょう。  

あきらめるな

Page 11: 05 はじめてのmy sql

WordPressにみるRDBMSの構造(1)

10.4.18 (C) 株式会社破滅派

11

1.  degiholly_commentmeta  

2.   degiholly_comments  

3.   degiholly_contact_form_7  

4.   degiholly_links  

5.   degiholly_options  

6.   degiholly_postmeta  

7.   degiholly_posts  

8.   degiholly_terms  

9.   degiholly_term_relationships  

10.   degiholly_term_taxonomy  

11.   degiholly_usermeta  

12.   degiholly_users  

たとえば、講座専用ブログI  wanna  be  PHPerでは、12個のテーブルを利用しています。

Page 12: 05 はじめてのmy sql

WordPressにみるRDBMSの構造(2)

10.4.18 (C) 株式会社破滅派

12

RDBMSでは、データの重複を避けるため、テーブルを細かく分けます。  1つのデータを1つの箇所に(1  fact  in  1  place)という原則を守るためです。  

この方法を正規化といいます。  

注文ID 注文日 顧客名 住所 支払方法

1 2010.8.29 注文太郎 東京都 クレジット

2 2010.8.31 山田花子 千葉県 代引き

3 2010.9.21 EC三郎 神奈川県 代引き

4 2010.10.1 注文太郎 東京都 クレジット

ここが重複しているので、2つに分けます

注文ID 注文日 顧客ID 支払い方法

1 2010.8.29 1 クレジット

2 2010.8.31 2 代引き

3 2010.9.21 3 代引き

4 2010.10.1 1 クレジット

顧客ID 顧客名 住所

1 注文太郎 東京都

2 山田花子 千葉県

3 EC三郎 神奈川県

Page 13: 05 はじめてのmy sql

WordPressにみるRDBMSの構造(3)

10.4.18 (C) 株式会社破滅派

13

たとえば、Aというタイトルの投稿が属するカテゴリー名を求めるためには?

wp_posts wp_term_relationships wp_terms

1.  wp_postsからAというタイトルの投稿のIDを求める  2.  wp_term_relationshipsから投稿IDに紐づいたカテゴリーIDを求める  3.  wp_termsから該当するカテゴリーIDの名前を取得する

SELECT  term.name  FROM  wp_posts  as  p,  wp_terms  as  term,  wp_term_relationships  as  rel  WHERE  p.post_title  =  ‘A’  AND  p.ID  =  rel.object_id  AND  rel.term_taxonomy_id  =  term.term_id;

データベースへの命令文をSQLといいます。

Page 14: 05 はじめてのmy sql

おまけ:データベースとの付き合い方

10.4.18 (C) 株式会社破滅派

14

データベース(DB)は昨今のWeb技術の発展を支えるもっとも中心的な技術です。  その分だけ奥が深く、データベースエンジニアというお仕事もあります。  

身につけるためにはある程度の時間が必要です。

PHPの知識

MySQLの知識

WordPressなどのCMS利用

CackPHPなどの  フレームワークによる開発

Yahoo!  のような  大規模サイトの構築・運営

ALAYAのような  CMSの開発  

デザイナーになるのか? なんでもできるフロントエンド・ディベロッパーになるか? バリバリのWebプログラマを目指すか?  そのどれを目指すかによりますが、下記のようなリファレンスを1冊手元においておくと、困ることがないでしょう。

MySQLクックブック  Volume  1、2  上下巻併せて10,000円超!  

「本2冊で1万円」と考えると高いですが、これがあるだけで何日か節約できると思えば、安い買い物です。