私のSql -My Sql

Preview:

DESCRIPTION

 

Citation preview

私の SQL - MySQL (+ PHP をすこし)

id:stick23rdTwtitter/stiq

今日、やること 0. Abstract 1. MySQL ダウンロード&インストール&

設定 2. SQL 文の超基本 3. MySQL と PHP の連携 4. ブログっぽいものをつくる

こんなのができます。

上級生、既に M y SQL が入っている人へ

今回は、 UTF-8 で M y SQL を設定します。 文字コードとかは、若干違うので注意 文字コードの確認は、“ SHOW VARIABLES

LIKE ‘char%’;” で、できます。 Cp932 などで入っている人は、データ

ベースを作るときに、 SET NAMES utf8 などをつけるなどして、対処するようお願いいたします。

1.MySQL のダウンロード&インストール&設定

MySQL ダウンロード http://dev.mysql.com/downloads/mys

ql/5.0.html#win32 にアクセスして下さい。

MySQL ダウンロード

赤丸のところをクリック

MySQL ダウンロード

MySQL ダウンロード

適当なところに zip ファイルをダウンロードする。

MySQL インストール Zip ファイルを解答して、できたフォルダ

の中にある Setup.exe をクリック

MySQL インストール

展開されるところ(下線)を注意して、 Next→Install を押してください。

しばらくお待ちください

インストールができると上の画面が出てくるので、「 Next 」。次の画面も「 Next 」で。

インストールができました!そのまま「 Finish 」を押します。

MySQL の初期設定 引き続き MySQL の設定をします。

M y SQL の初期設定 デフォルト(最初の設定)のまま、

「 Next 」を押し続けてください。

文字コード(言語)の設定 大事なところ!! PHP では、 UTF-8 を選択したので、こっ

ちも UTF- 8を選択します!

Windows にパスを入れる設定 赤丸のところに、チェックを入れて、

「 Next 」を押します。

パスワードの設定 Root (なんでも設定する権利をもつユー

ザ)のパスワードを設定します。 同じものを 2 回入れます。 このパスワードは忘れないでください!

設定の確認→実行

MySQL の確認 以上で、インストールと設定は終わりです。 正しく、インストールできているか、確

認します。 ここでは、同時に、 MySQL の立ち上げ方

も覚えます。

コマンドプロンプトを立ち上げます。 「ウィンドウズキー+ R 」→「“ cmd” と入

力して OK 」 「すべてのプログラム」→「アクセサ

リ」→「コマンド プロンプト」

MySQL を立ち上げる “mysql –u root –p” と入力して、「 Ente

r 」 先ほど設定したパスワードを入れます。

MySQL の確認 以下のように、メッセージが出てくれば、

正しく MySQL が入っています。 終わるときは、’ \q’ または’ exit’ と入力す

ると終了します。

うまくいかなかったら、その辺にいる人たちに聞きまわってください。

できた人は、先週の PHP の課題の復習などをしておいてください。

次から、第 2 章 SQL の基本になります。

データベースの超基本 データベース( DB )って何?

データを保存しておく場所。貯めておくところ。

Excel をイメージすると良いかもしれません。 今あるおおよそのシステムは、データベース

とコンピュータ・ Web のやりとりで、できています。

なぜデータベース? Web アプリで一番大変なところは、ファイル

からデータを持ってくるところ 実は、プログラムからファイルを読み書きす

るととても大変! 一度限りしか使えない! データをいろいろと複雑に処理したい!

→ これをいろいろ解決してくれるのが、 DB !

Kwsk データの独立性:データの構造が変わってもプログラ

ムからは独立しているので、プログラムの修正が必要ない。また、どのプログラムからも利用できること。

データの一貫性:複数のユーザーが同時にデータを操作できること。また、同時に変更や削除した場合でも、データに矛盾が発生することなく利用できること。

データの整合性:データの重複が発生しないこと。 データの機密性:データベースへアクセスするユーザ

ーを制御できること。 データの障害対策:データベースに何らかの障害がお

こった場合でも、回復するための手段をもつこと。 SQL 文の標準化

MySQL って何? 実際のデータベースを含んで、操作したり、

管理することができるツール 操作する命令文→ SQL 文 同じようなものに、 Oracle 、 PostgreSQL 、 D

B2 などなど

データベースと Excel

ブック(ファイル) → データベース

シート → テーブル、表

Excel の列 → フィールドExcel の行 → レコード

データベースを表示してみる SHOW DATABACES;→ エンター

MySQL のお約束 MySQL をコマンドプロンプトで使うとき

は、必ず最後に、” ;” をつけて、 Enter で命令が実行できます。

長い命令文のときは、 Enter で次の行にいくなど、適宜見やすくしてください。

>SHOW DATABASES; >SHOW >DATABASES;

MySQL の大文字と小文字 MySQL の本を見ると、命令にあたるところ( SQL

文)や型(数字とか文字型とか、後で解説)は大文字で、自分でつくる DB や表、フィールドは小文字で書いてあることが多いです。

今回もそれに習います。・・・が、今回教える人は、そうではないので、あまりつっこまないでね。

ただ、 Windows では、 MySQL は大文字小文字の区別はありません。 TEST=test

MAC や UNIX だと違うかも・・・。 TEST≠text

データベースを作る→使う CREATE DATABASE データベース名 ;

SHOW DATABASES; で増えているか確認 USE データベース名 ; で、そのデータベ

ースを使う

テーブルを作る いままでので、データベース( 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 name studenet_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5

テーブルの作成 これと同じように入力してください。 改行は Enter で、できます。

さっきのテーブル作成の解説 フィールドの属性 それぞれの項目には、

データの型が決まっている。

ID name student_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5

整数型

文字型

小数型

フィールドの属性いろいろ例 フィールドの性質 型ID 、学籍番号

整数のみのフィールド

INT (整数)、 BIGINT(長い桁( 10 の 19 乗くらい)の整数)

視力、身長

小数がある数値のフィールド

FLOAT (小数点 8 桁くらい)DOUBLE (それ以上の精度)

名前、テキスト

文字列が入るフィールド

CHAR 、 VARCHARTEXT

日付 日付が入るフィールド

DATATIME (年 -月 - 日 時間 :分 :秒)

TIMESTUMPDATE (年 -月 - 日)

フィールドのサイズ指定 フィールドで指定するときは、型のサイズも一

緒にしています。(数字型は指定しなくても良い、文字型は必須)

varchar(50)なら、文字列 50 文字まで(最大 255 文字まで) char と varchar

char は固定長、 varchar は可変長 つまり、 char(8) としたところに、’ abcd’ と入れると、

DB には、’ abcd____‘ と入っていて、スペースと容量の無駄! varchar(8) にすると、空気を読んでくれます。

プライマリーキー プライマリーキーとは?

重複を許さない項目のこと ひとつのレコード(行)に、プライマリーキーをつける

ことで、単一に特定できる 逆に、表からプライマリーキーを指定することで、レコ

ードを特定できる。 テーブルをつくるときに、項目の後ろに書く。

ID name 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),);

テーブルにデータを追加! INSERT INTO  テーブル名 VALUES( 値

1, 値 2 ) ;

数値はそのまま、文字列は’’で囲みます。

同じようにしてデータを追加

日本語を打つときは、 Alt キー+半角 /全角キーで、打てます。

ID name studenet_id age eyesight1 abc 70910001 19 1.52 xyz 70910010 20 2.03 うーうー 70910023 21 0.34 えーえー 70910040 20 0.5

データの挿入 もちろん、主キー( PRIMARY KEY )を設

定したので、同じ ID を入れようとすると怒られます。

日本語が、ggg・・・ あれ?日本語を入れるとエラー

実はこれ、文字コードの問題

文字コード 文字の情報もすべては、 0 と 1 でできてい

る。 文字コードとは、文字を表示するためのル

ール

文字コード 日本語だと、

ISO-2022-JP EUC-JP Shift_JIS UTF-8 UTF-16 などなど

文字コードが異なると、人間が読み取ることができない、→文字化け

ブラウザで、上手く表示ができない残念なときの例のアレ

今回は・・・ 設定で、’ UTF-8’ で設定します。 しかし、コマンドプロンプトから入力す

るときは、 cp932 ( Shift-JIS の Windows独自の拡張版)なので、文字コードが違うことになる。

MySQL に、この辺、どーにかしろと、命令する必要がある。

文字コード解決 SET NAMES cp932;

これによる、 MySQL に今使っている文字コードが、 cp932 と伝えてやります。

これで、データを挿入すると、日本語も入ります。

疲れた・・・ 以上、ここまで長々と説明が多かったです

が、ここからは、どんどん作ります。

あと、説明が淡白になってきますが、わからなかったら、聞いてください。

データを見る SELECT * from student;

SELECT id,name from student;

データの更新 UPDATE テーブル名 変更するフィルード

名 = 変更する値 [WHERE 条件式 ];

データの消去 DELETE FROM テーブル名 [WHERE 条件式 ];

Id=2 の人が消えました。

WHERE句 SELECT,UPDATE とか DELETE の後ろに

つける、条件式 =,>,<,>=( 以上) ,<= (以

下) ,<> (相違) AND ( A も B も) ,OR ( A または

B ) ,NOT ( A でないとき) 目の良い人( eyesight > 1.0) をメガネに

します。

自由自在に表示できます。

演習のじかん 自由に、データベースを作ってみて、扱っ

てみてください。

PHP と MySQL の連携 GRANT  -ユーザの追加

Root で接続するのは、安全上良くない データベースごとに個別のユーザを割り当て

る。

もう一度、入りなおしてみましょう。

PHP と MySQL の連携 mysql_connect( サーバ名 , ユーザ名 , パ

スワード );

mysql_select_db( テーブル名 , 変数 ){

<?php$my_Con = mysql_connect("localhost","stiq",“123456");

if($my_Con == false){die("MYSQL の接続に失敗しました。 ");

}else{print " 接続成功! ";

}

if(mysql_select_db("cooking", $my_Con)){print "cooking データベースの選択成功! ";

} else {die(" データベースの選択に失敗しました。 ");

}?>

クエリ(命令文の実行) mysql_query(SQL 命令文 , 接続してきたも

の変数 );

連想配列で、結果が返ってきます。

<?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 />";

}?>

演習 同じようにして、 UPDATE,DELETE 文も

作れます。

CRUD

CRUD とは、データベース管理システム( DBRS )に必要とされる 4 つの主要な機能、「作成( Create )」「読み出し( Read )」「更新( Update )」「削除( Delete )」をそれぞれ頭文字で表したものです。

これが、上手く使えるようになれば、たいていの Web アプリケーションは作れるようになります。