05 はじめてのmy sql

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

Upload: -

Post on 26-Jun-2015

477 views

Category:

Technology


4 download

DESCRIPTION

PHPからMySQLに接続する方法を学びます。

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万円」と考えると高いですが、これがあるだけで何日か節約できると思えば、安い買い物です。