PHPで掲示板を作ろう!(データベース編) その3 データベース作成編

ちょっと間隔があいてしまいましたが、今回はMySQLの講義です。
Contents
前回までの記事
PHPで掲示板を作ろう!(データベース編) その1 データベースとは
PHPで掲示板を作ろう!(データベース編) その2 MySQLログイン編
MySQLの概念
MySQLなんですが、最初の壁はCUIであるということと、データベース、テーブル、データの型といった独特の概念でしょう。
これらは最初のうちはExcelと比べて考えるのがわかりやすいと思います。
元々データベースとエクセルは全然違うのである程度理解したらExcelとは切り離しましょう。最初はたまたま近い概念があるのでたとえとして使います。
データベース=Excelファイル
まずExcelで、ある会社の情報をまとめてみることを考えてみましょう。
例えばA商事という会社と取引をしている場合「A商事.xls」というファイルの中にA商事の商品、売上、担当者などを入力すると思います。
その場合、商品のデータと売上のデータなどは別々のシートに入力をします。
つまりエクセルの場合、エクセルのファイル自体と個々のデータが入っているシートに分かれます。
実はMySQLでデータを入力するときも同じように考えます。
MySQLでデータ管理をするためには大きくデータベースとテーブルの概念を理解する必要が出てきます。
ここででてくる「データベース」はMySQLのようなデータベースソフトではないですし、一般的なデータベースという意味を指す単語でもありません。
一言でいうとプロジェクトファイルのようなかんじです。先ほどのエクセルのファイル自体に近いイメージです。
例えば、私が今仕事でガチンコ塾と開発の仕事をかかえており、これらのデータをMySQLで管理するとします。
その場合、ガチンコ塾関連のデータと開発関連のデータというのは当然別々ですので、プロジェクト自体を分けなくてはいけません。
先ほどのエクセルの例で言うとA商事と関連のないBコーポレーションの情報を同じエクセルで管理したりはしないはずです。
このようにある1つのプロジェクトの単位で作るデータの集合体自体をデータベースといいます。
MySQLでデータを扱いたい場合まずこのデータベースを作成する必要がでてきます。
データベースの作り方は簡単で、ログインしたあと
下記のように
1 |
CREATE DATABASE board_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; |
と入力し、Query OKと出てくれば成功しています。
board_dbのところは任意のデータベース名が入ります。
今後このデータベースを使っていきますのでuse board_dbと入力しましょう。
キャプチャ図のようにDatabase Changedとでれば選択できています。
ユーザーの作成
データベースを作ったら次にユーザーを作ります。前回rootユーザーについて説明しましたが、MySQLではデータベースの作業をするときにはrootユーザーではなく、特定のデータベースだけをみれるユーザーを作成することが一般的です。
前回もいったとおり、rootユーザーというのは一番権限が強いため、すべてのデータベースをみることができてしまいます。
rootユーザーで作業をし続けることは危険なため、今回だとboard_dbだけをみるユーザーboard_userを作成します。
パスワードはboard_passにしましょう。下記のようにmysqlにうちます。
1 |
GRANT ALL PRIVILEGES ON board_db.* TO board_user@localhost IDENTIFIED BY 'board_pass' WITH GRANT OPTION; |
また一度ユーザーを作ったら、ログアウトし、再度board_user(パスワードboard_pass)でログインしてみましょう。
1 2 3 4 5 |
exit (ここでMySQLからログアウトする) mysql -uboard_user -p (パスワードを聞かれるのでboard_passと打つ。) ログインできればOK |
テーブル=Excelのシート
次に出てくるのがテーブルです。
さきほどのエクセルの例でも説明したように、データベースというのはエクセルのファイル自体のようなものです。
実際に売上だったり、顧客情報といったものは個々のシートに入れていました。
MySQLでも実際のデータはテーブルという表を作り、この中にデータを入れていきます。
テーブルとは下記のエクセルの表そのものをイメージしてもらえればいいと思います。
例えば顧客情報を入力する場合ですが、項目名があり、あとはデータを1つ1つ入れることになります。
データの型
MySQLでテーブルを作る場合、テーブルを作り、その中にデータを入れていくことになりますが、このテーブルの作成がかなり面倒です。
エクセルの場合、何も考えずにデータを入力しても問題ありませんが、MySQLの場合、入れるデータのタイプを決めておかなければいけません。
例えば数字を入れるのか、文字を入れるのか、日付けを入れるのかをあらかじめ決めておかないといけませんし、一度決めると別の形式のデータは入れられません。
どんな種類があるかというと
- 数字(int)
- 文字数が決まった文字列(varchar)
- 長文(text)
- 日付け(timestamp)
などです。
※()の英語文字はMySQLで使用されるデータの型名です。
これ以外にもいろいろありますが、とりあえず上記のものだけを覚えておけば何とかなります。
文字(varchar)と長文(text)の違いですが、文字とは名前、住所、電話番号、郵便番号などある程度長さが決まっているものです。
それに対し長文とはお問い合わせフォームのコメント欄のように長さの制限がないものです。
プライマリーキーという存在
次にMySQLでおさえておかなければいけないのが、そのデータを識別するためのidです。
例えば学校に入れば生徒番号、会社に入れば社員番号などというものが発行されます。
たとえ本人は知らなくてもこのような番号が付番されることが一般的です。
このような番号がないとお互いを識別することができないため、非常に不便です。(名前だと同姓同名がいて、かぶる可能性があるのでこれでは識別の役には立ちません。)
そのため一般的にはデータを識別するために
- 他のデータと重複しない
- 変更ができない
- どのデータにも必ず振られる
性質のidがあったほうが便利です。
ちなみにこのような性質を踏まえたid的なデータをプライマリーキーといいます。
一般的には+1ずつされる番号を振るケースが多いです。
実際のテーブル作成
これでテーブルを作る最低限の事前知識がおわりました。ここからテーブルを作って見ましょう。
例えば今回は掲示板ですので必要な項目は
書き込みデータを識別するためのid
数字(int)であり、プライマリーキーの性質を持つ。+1ずつ自動追加される
書き込みをした人の名前のname
長さ(20文字としましょう。)の決まった文字列(varchar)
書き込み内容 comment
長さが決まっていない長文(text)
です。
これらのデータが入るようなテーブルの作り方は下記のような命令になります。
※テーブルの名前はboardにしておきましょう。
1 2 3 4 5 |
create table board( id int not null auto_increment primary key, name varchar(20), comment text ) |
varchar(20)の20は文字数のことです。
また上記のソースのように改行やインデントはしなくてもよいですが、したほうが見やすいため、することをお奨めします。
※not nullについては次回説明します。
このコマンドをうったあとにdesc boardとうってあげるとテーブルの型などが表示され意図通りのテーブルが確認できたと思います。(下記キャプチャ図を参考にしてみてください。)
次回以降、もう少し発展的な説明と実際のデータの入力、検索などをやっていきます。
まとめ
今回学習したコマンド
データベースの作成
1 |
CREATE DATABASE board_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; |
データベースの選択
1 |
use board_db; |
ユーザーの作成
1 |
GRANT ALL PRIVILEGES ON board_db.* TO board_user@localhost IDENTIFIED BY 'board_pass' WITH GRANT OPTION; |
テーブルの作成
1 2 3 4 5 |
create table board( id int not null auto_increment primary key, name varchar(20), comment text ) |
デーブルの構造確認
1 |
desc board: |
次回の記事はPHPで掲示板を作ろう!(データベース編) その4 SQL編になります。
関連記事
-
-
挫折必至!初心者がやってはいけないプログラミングの学習法 ワースト4
多くの方はプログラミングをどのように身につけたらいいのか・・・ということに関心があると思います。
-
-
PHPで掲示板を作ろう! 掲示板の作成方法 まとめ
さて4回にわけて、掲示板のプログラムを学習してきました。 見た目は超シンプルで実際に動かしてみ
-
-
よく使う処理をまとめよう その2 (関数)
こんにちは。松本です。 最近の私の使命はダイエットです(爆)。 ダイエットはいろいろな方
-
-
WEBエンジニアだったら知っておきたいWEB開発ツール一覧
今回は仕事で使っているソフト、ツールやWEBサービスなんかを紹介していこうと思います。 それほ
-
-
オブジェクト指向 その2 「設計図」と「部品」
それではオブジェクト指向を具体的に解説していこうと思います。といっても、天才でない限り、初学者でいき
-
-
フレームワークのメリット・デメリット
こんばんは。松本です。 昨日25日にはオフィスで第一回目の授業を開講させていただきました。広島
-
-
作業が遅くてイライラしている方必見!作業スピードを改善するネタ・ツールなど
エンジニアとして仕事をしていますと、「ある機能を実装する最適な方法(設計やプログラムの組み方全般)を
-
-
気を付けよう!個人事業主として働くときのトラブル
最近は開発のほうが忙しく、更新頻度が落ちているのですが、既存の記事を読んでる読者さんが多く、アクセス
Comment
こんにちはー。
PHPとMySQLで掲示板などを作ろうと思い、検索していたらこんなすごいサイトに辿り着きました。
色々丁寧な説明や図入りの解説があり、なんとかここまで来ましたが、一か所つまずいてしまいました。
“|データベース=Excelファイル”の段落、”今後このデータベースを使っていきますのでuse board_dbと…”という箇所を何度も見落としてしまったので、赤線があった方が良いかなぁと感じました。
引き続き頑張りますーー。
テルテル坊主さん
>PHPとMySQLで掲示板などを作ろうと思い、検索していたらこんなすごいサイトに辿り着きました。
>色々丁寧な説明や図入りの解説があり、なんとかここまで来ましたが、一か所つまずいてしまいました。
>“|データベース=Excelファイル”の段落、”今後このデータベースを使っていきますのでuse board_dbと…”という箇所を何度も見落としてしまったので、赤線があった方が良いかなぁと感じました。
>引き続き頑張りますーー。
こちらサイトを見ていただきありがとうございます。
テルテル坊主さんの学習の助けになりましたら何よりです。
use board_dbの件のご指摘もありがとうございます。
赤線を引かせていただきました。
[…] […]