View
1.009
Download
0
Category
Preview:
Citation preview
今日、やること
0.Abstract 1. MySQL ダウンロード&インストール&
設定 2. SQL 文の超基本
Why DB ? 型、文字コード
3. MySQL と PHP の連携
4. ブログっぽいものをつくる
上級生、既にM ySQL が入っている人へ
今回は、UTF-8 でM ySQL を設定します。
文字コードとかは、若干違うので注意 文字コードの確認は、“SHOW
VARIABLES LIKE ‘char%’;” で、できます。
Cp932 などで入っている人は、データベースを作るときに、SET NAMES utf8 などをつけるなどして、対処するようお願いいたします。
( for 上級生) 文字コードを指定してDB を作る方法
CREATE DATABASE mysql_test CHARACTER SET utf8;
SHOW CHARACTER SET で使用可能な文字コードを一覧できます。
http://mysql.javarou.com/dat/000571.html
MySQL ダウンロード
http://dev.mysql.com/downloads/mysql/5.0.html#win32 にアクセスして下さい。
データベースの超基本
データベース(DB )って何? データを保存しておく場所。貯めておくとこ
ろ。 Excel をイメージすると良いかもしれません。 今あるおおよそのシステムは、データベース
とコンピュータ・Web のやりとりで、できています。
なぜデータベース?
Web アプリで一番大変なところは、ファイルからデータを持ってくるところ
実は、プログラムからファイルを読み書きするととても大変!
一度限りしか使えない! データをいろいろと複雑に処理したい!
→これをいろいろ解決してくれるのが、DB !
Kwsk
データの独立性:データの構造が変わってもプログラムからは独立しているので、プログラムの修正が必要ない。また、どのプログラムからも利用できること。
データの一貫性:複数のユーザーが同時にデータを操作できること。また、同時に変更や削除した場合でも、データに矛盾が発生することなく利用できること。
データの整合性:データの重複が発生しないこと。 データの機密性:データベースへアクセスするユー
ザーを制御できること。 データの障害対策:データベースに何らかの障害がお
こった場合でも、回復するための手段をもつこと。 SQL 文の標準化
MySQL のお約束
MySQL をコマンドプロンプトで使うときは、必ず最後に、” ;” をつけて、 Enterで命令が実行できます。
長い命令文のときは、 Enter で次の行にいくなど、適宜見やすくしてください。
>SHOW DATABASES; >SHOW >DATABASES;
MySQL の大文字と小文字
MySQL の本を見ると、命令にあたるところ(SQL 文)や型(数字とか文字型とか、後で解説)は大文字で、自分でつくるDB や表、フィールドは小文字で書いてあることが多いです。
今回もそれに倣います。・・・が、今回教える人は、そうではないので、あまりつっこまないでね。
ただ、Windows では、MySQL は大文字小文字の区別はありません。 TEST=test
MAC やUNIX だと違うかも・・・。 TEST≠text
テーブルを作る
いままでので、データベース( Excel でいうところのファイル)ができました。
これからは、テーブル( Excel でのシート)をつくり、フィールド(一番上の名前、学籍番号とかの項目)を設定します。
SQL は、これをひとまとめにしてやります。
試しに、これと同じようなものをデータベースで作ってみましょう。
ID 名前 学籍番号 年齢 視力1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5
表: student
ただし・・・
MySQL では、項目(フィールド)の名前に日本語を使うと、上手く扱えないことがよくあります。
なので、フィールドは英語に直して使いましょう。
ID nam e studenet_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5
さっきのテーブル作成の解説
フィールドの属性 それぞれの項目に
は、データの型が決まっている。
ID nam e student_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5
整数型
文字型
小数型
フィールドの属性いろいろ
DATATIME (年 -月 - 日 時間 :分 :秒)
TIMESTUMPDATE (年 -月 - 日)
日付が入るフィールド
日付
CHAR 、VARCHARTEXT
文字列が入るフィールド
名前、テキスト
FLOAT (小数点 8桁くらい)
DOUBLE (それ以上の精度)
小数がある数値のフィールド
視力、身長
INT (整数)、BIGINT(長い桁( 10 の 19乗くらい)の整数)
整数のみのフィールド
ID 、学籍番号
型フィールドの性質例
フィールドのサイズ指定
フィールドで指定するときは、型のサイズも一緒にしています。(数字型は指定しなくても良い、文字型は必須)
varchar(50)なら、文字列 50 文字まで(最大 255 文字まで)
char と varchar char は固定長、 varchar は可変長
つまり、 char(8) としたところに、’ abcd’ と入れると、DB には、’ abcd____‘ と入っていて、スペースと容量の無駄! varchar(8) にすると、空気を読んでくれます。
プライマリーキー
プライマリーキーとは? 重複を許さない項目のこと ひとつのレコード(行)に、プライマリーキーをつける
ことで、単一に特定できる 逆に、表からプライマリーキーを指定することで、レ
コードを特定できる。 テーブルをつくるときに、項目の後ろに書く。
ID nam e studenet_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5
もういっかい、CREATE 文
CREATE TABLE 表の名前( フィールド 1 の名前 その型 PRIMARY
KEY, フィールド 2 の名前 その型 , ・・・ );
CREATE TABLE menber( id INT PRIMARY KEY, name varchar(50));
同じようにしてデータを追加
日本語を打つときは、Alt キー+半角 /全角キーで、打てます。
ID nam e studenet_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5
文字コード
日本語だと、 ISO-2022-JP EUC-JP Shift_JIS UTF-8 UTF-16 などなど
文字コードが異なると、人間が読み取ることができない、→文字化け
ブラウザで、上手く表示ができない残念なときの例のアレ
今回は・・・
設定で、’UTF-8’ で設定します。 しかし、コマンドプロンプトから入力する
ときは、 cp932 (Shift-JIS のWindows独自の拡張版)なので、文字コードが違うことになる。
MySQL に、この辺、どーにかしろと、命令する必要がある。
WHERE句
SELECT,UPDATE とかDELETE の後ろにつける、条件式
=,>,<,>=( 以上) ,<= (以下) ,<> (相違)
AND (A もB も) ,OR (A またはB ) ,NOT (A でないとき)
目の良い人( eyesight > 1.0) をメガネにします。
PHP とMySQL の連携
mysql_connect( サーバ名 , ユーザ名 , パスワード ); 接続に成功すると、 true 。しなけれ
ば、 false を返す。
mysql_select_db( データベース名 , 変数 )
<?php$my_Con = mysql_connect("localhost","stiq",“123456");
if($my_Con == false){die("MYSQL の接続に失敗しました。 ");
}else{print "接続成功! ";
}
if(mysql_select_db(“db_test", $my_Con)){print “db_test データベースの選択成功! ";
} else {die(" データベースの選択に失敗しました。 ");
}?>
<?php
$my_Row = mysql_query("SELECT * FROM student", $my_Con);if(!$my_Row){
die(mysql_error());}while($row = mysql_fetch_array($my_Row)){
print $row["id"];print $row["name"];print $row["studenet_id"];print $row["age"];print $row["eyesight"];print "<br />";
}?>
Recommended