Upload
-
View
499
Download
4
Embed Size (px)
DESCRIPTION
PHPからMySQLに接続する方法を学びます。
Citation preview
PHP講座(5)!はじめてのMySQL
この授業では、PHPでWebアプリケーションを作成するにあたって切っても切れない関係にあるMySQLの基本とその操作方法について学びます。
Webアプリケーションの仕組み
10.4.18 (C) 株式会社破滅派
2
HTML+CSS+Javascriptなどで作るWebページ。 Flashなども含む。
すべてのWebアプリケーションは同じ仕組です
ユーザーインターフェース ビジネスロジック ミドルウェア
PHPやPerl、Rubyなどで作る処理命令。ミドルウェアへの命令や、処理結果の出力などを行う、アプリケーションの心臓部分。
MySQLのようなデータベース、sendmailのようなメールサーバ、GDのような画像処理アプリケーションなど。
ユーザーから のリクエスト
アプリケーション への命令
ユーザーへの 結果出力
アプリケーション による処理結果
処理 処理
できなければいけないこと
10.4.18 (C) 株式会社破滅派
3
特に、データベース(DB)はとてもよく使います。
DBが できないと お話になりません。
ちょっとは
なぜデータベースが必要なの?
10.4.18 (C) 株式会社破滅派
4
データベース ⇒ データの保存・取り出し
Webアプリケーションの必要とするデータは 膨大な量になるので、検索機能が必要。
データベースならではの4つの技術
10.4.18 (C) 株式会社破滅派
5
取得(検索)は圧倒的にたくさん使う機能です。 言い換えれば、検索さえちゃんとできれば、あとはそんなにやらなくてもいいわけです。
1. 作成する( Create)
2. 検索・取得する(Retrieve)
3. 更新する(Update)
4. 削除する(Delete)
全部あわせてCRUDとか言ったりします。
RMDBSとは
10.4.18 (C) 株式会社破滅派
6
みなさんがこれから扱うDBとは、 RDBMS(Relational Database Management System)つまり、
複数のデータを管理するシステムです。
たとえば… 1. 顧客Aの9月の取引内容を「マイページ」に表示する
2. 商品Bを購入した人数を表示する
3. 20代の顧客が購入した商品のランキングを表示する
顧客データ 取引データ 商品データ
データベースの構造
10.4.18 (C) 株式会社破滅派
7
データベースはテーブル(表)の集合体です。
データベース
Excelも「シート」を束ねる「ブック」からなるため、似たような機能を提供していますが、一番の違いは複数のテーブルからの検索性です。
テーブルの構造
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にすることで、判断が容易になります。
MySQLを使ってみての感想
10.4.18 (C) 株式会社破滅派
9
MySQL ムズ過ぎ オワタ
\(^o^)/
もう講座 でねーよ
テーブルの作成とphpMyAdminの利用
10.4.18 (C) 株式会社破滅派
10
MySQLを操作するにはコマンドライン環境を使いました。 しかし、これだけでは大変です。
phpMyAdminというWebブラウザからMySQLを操作できるツールを利用します。
phpMyAdminはWebブラウザから操作できるため、MySQLを直感的に理解することができます。
XAMPPには最初からインストールされていますし(http://localhost/xampp)、各種レンタルサーバにも入っています。
基本的にテーブル作成はphpMyAdminから行いましょう。
あきらめるな
!
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個のテーブルを利用しています。
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三郎 神奈川県
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といいます。
おまけ:データベースとの付き合い方
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万円」と考えると高いですが、これがあるだけで何日か節約できると思えば、安い買い物です。