2009/04/27

と、思ったけれど?!


Ruby②を本屋さんでパラパラ見てみたら、
アルゴリズムがあーだとかファイル構造がこーだと
あまり何につながるのかパッと浮かばない感じだったので
モチベーションが上がらず・・・

結局、これ買いました☆

どうでしょう?このワクワクするタイトル。
もう変数や配列の説明は、詳しく要らないので
ちょっとレベル上がりますが、ここから行ってみたいと思います!

2009/04/24

やりました!!

ようやく「ちょっと実用掲示板」が完成しました。
いっぱいエラーが出て、どうなることかと思ったけれど、ちゃんと稼働して、新規入力・検索・コメント挿入・初期化とかができるのを実感して感動しました~^▽^

PHPも面白いなぁ。
でも、
とりあえずはRubyだ!

さて、次の私のお目当てはですね・・・
Ruby②

これだ!
あー楽しみ♪

PHPからMySQLを操作する

ようやくPHPから操作する時がきた!

■PHPスクリプトでMySQLサーバーに接続する
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
print "成功しました";
mysql_close($s);
?>
+-----------------------------------------------------------------------+
mysql_connect(サーバー名,ユーザー名,パスワード)
接続に成功すると、「データベース接続の値」を返す
失敗すると、「false」を返す

or die(メッセージ)
()内を表示して、スクリプトの実行を中止する(=exit())

mysql_close(データベース接続の値)
切断に成功すると、「true」
失敗すると、「false」を返す


■PHPスクリプトでクエリを発行する
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
print "成功しました";
mysql_select_db("db1",$s);
mysql_query("INSERT INTO tb1 VALUES('K777','PHP太郎',20);
mysql_close($s);
?>
+-----------------------------------------------------------------------+
mysql_select_db(データベース名,データベース接続の値)
データベースを指定する
mysql_query(SQL文)
SQL文を発行する
(※SQL文のデリミタはつけない、「"」「'」を入れ子で使うかヒアドキュメントを使用)


■PHPでSQL文の実行結果を受け取る
$re=mysql_query("SELECT * FROM tb1);で
print $re;としても、mysql_queryの返す値が単純な文字列でないため結果が実行できない!

mysql_fetch_array(結果)
SQLコマンドの結果を配列として得る
呼び出すときは、while文を使って
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
・・・
}
とするとよい。

|point|
mysql_queryで実行されるクエリで、エラーが起こった場合、
mysql_query(・・・) or die(mysql_error());
でエラーの内容を表示できる


データベースに存在するテーブルの一覧を取得する
mysql_list_tables(データベース名,データベース接続の値):
|sample|
+-----------------------------------------------------------------------+
<?php
$s=mysql_connect("localhost","root","1234") or die("失敗です");
$re=mysql_list_tables("db1",$s);
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print "
";
}
mysql_close($s);
?>
+-----------------------------------------------------------------------+

2009/04/12

環境変数

phpinfo関数による表示の中の「Apache Environment」のブロックにあり、「Webサーバのソフトウェア」「クライアントIPアドレス」などの重要な情報が保管されている
REMOTE_ADDRは、使用中のマシンのIPアドレス(localhostの場合127.0.0.1)

getenv関数
環境変数を返す、引数に指定した情報を得られる
getenv(得たい情報の項目)
得たい情報の項目得られる情報
SERVER_SOFTWAREWebサーバーのソフトウェア
SERVER_PORT使用しているポート
PATHサーバーに設定されているPATH
REMOTE_ADDRクライアントのIPアドレス
HTTP_USER_AGENTクライアントのブラウザの情報


gethostbyaddr関数
IPアドレスからホスト名を得る
gethostbyaddr(得たいホストのIPアドレス)

例)クライアントのホスト名を表示する
<?php
print gethostbyaddr(getenv("REMOTE_ADDR"));
?>

PHPの基礎知識

「MySQL+PHPでWeb上でデータベースを操作する」をテーマに進めていくので、
まずはPHPの基礎を学習する。
気になったものだけを箇条書きでメモ。

・PHPでは変数に型を宣言しなくてよい
[変数のデータ型]
integer(整数)
float(浮動小数点)
double(浮動小数点)
string(文字列)
boolean(論理値)
object(オブジェクト)
array(配列)
NULL(空)
・文字列をつなげるには「.」
例)「あいうえお」と出力したい場合
「"あいう"."えお"」

◆「"」と「'」の違い◆
文字列のデータは「"」か「'」で囲む
「" "」で囲んだ変数は展開され、「' '」で囲った変数は展開されない
「" "」で囲った文字の中に「"」の文字を入れたり、「' '」で囲った文字の中に「'」の文字を入れたりすることはできない
[対処法]
・「\"」でエスケープ処理する
・「' '」と「" "」を組み合わせる

MySQLによるWebアプリケーションを作成するとき、PHPスクリプトによってSQL文を発行する
SQL文を文字列としてmysql_query関数の引数にする
mysql_query(文字列としてのSQL文)
例)INSERT INTO tb1 VALUES('A101',・・・)のSQL文を発行する
mysql_query("INSERT INTO tb1 VALUES('A101',・・・)")

■今回扱うPHP関数
関数名内容
dieスクリプトの実行を中止する
execコマンドを実行する
phpinfoPHPの情報を表示する
mysql_connectMySQLサーバーに接続する
mysql_closeMySQLサーバーから切断する
mysql_select_db使うデータベースを指定する
mysql_fetch_arraySQL文を発行する
mysql_error最後に起こったエラーを返す
getenv環境変数を得る
gethostbynameホスト名からIPアドレスを得る
gethostbyaddrIPアドレスからホスト名を得る


(※mysql_で始まるのは、MySQLデータベースを扱う関数)

date関数
日時の書式返す値
g12時間単位の「時」
h12時間単位の「時」2桁表示
G24時間単位の「時」
H24時間単位の「時」2桁表示
j「日」
l「曜日」の英語の文字列
F「月」の英語の文字列
n「月」
m「月」2桁表示
s「秒」2桁表示
Y「年」
y「年」2桁表示


その他
■「繰り返し処理」
for(初期値;繰り返しの条件;変化){
繰り返し実行する処理
}

while(繰り返しを行う条件){
繰り返しの処理
}
最初にカウンタ変数の初期値を設定する
繰り返していくうちに、必ず繰り返しを行う条件がfalseになるようにする


do{
繰り返しの処理
}while(繰り返しを行う条件)

■「条件分岐」
if(条件が正しいときに実行する処理){
else{
条件が正しくないときに実行する処理
}

switch(変数){
case 変数の値1:
処理1
break;
case 変数の値2:
処理2
break;
...
default:
すべての条件が正しくないときに実行する処理
}
変数がcaseの条件と一致した場合、それぞれの処理が実行される
一致する値がなければ、default:以降の処理を実行


■「配列」「連想配列」

IE6で透過pngを表示する

久しぶりにやってきました、この課題。
前回やったときはスイスイできたはずなのに、なぜか今回はうまくいかない・・・。
結局最終的にできたのは、この方法でした。

透過PNGをCSSで背景に指定してIE6や5.5のバージョンでも綺麗に表示してみる(参考)

iepngfix.jsをダウンロードし、ディレクトリに保存

②透過pngを含むHTMLファイルの<head>~</head>内に、以下を記述
<script language="JavaScript" type="text/javascript" src="iepngfix.js"></script>

③CSSの背景画像として読み込んでいる タグorIDorクラス に、以下を設定
* html タグorIDorクラス {
behavior: expression(IEPNGFIX.fix(this));
}

----
ほかに試した方法で、JQueryを使う方法がある。

①以下をダウンロード
pngFix.zip

②この中の2つのjsファイルをコピーし、ディレクトリに保存
・jquery-1.3.2.min.js
・jquery.pngFix.js

③HTMLファイルの<head>~</head>内に、以下を記述
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.pngFix.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).pngFix();
});
</script>

・・・でもなぜかこれを<a>タグに読み込んだCSSの背景画像として表示させると、IE6でリンクがきかなくなってしまった。そのため、今回は見送ります。。。
私のやり方が間違っている可能性もあるので、またトライしてみたい。

2009/04/05

SELECTしたコードからSELECTする(サブクエリ)

サブクエリが使えるのはMySQL4.1以降のみ

サブクエリ・・・「副問い合わせ」
クエリを実行して取り出されたデータを使って、さらにクエリを発行する(2段階処理)

例えば、
最も売上の高い社員データを抽出するにあたって、

SELECT * FROM tb ORDER BY uria DESC LIMIT 1; (・・・①)

という方法でやってみたけれど、
サブクエリを使うと、こんなやり方ができる。

SELECT * FROM tb WHERE uria IN (SELECT MAX(uria) FROM tb); (・・・②)

もし最高売上獲得社員が複数いた場合、
①のやり方では一人しか抽出できないので、正確に最高額を売り上げた社員を割り出すことはできないが、②のやり方なら何人いても大丈夫!

GROUP BY関数
MAXAVGSUMなどの集計を行う関数はGROUP BY関数と呼ばれ、本来はグループ化したときの値を処理する。ただし、「GROUP BY・・・」がない場合は、テーブル全体を1つのグループとして処理する。

INを使う -カラムを返すサブクエリ-
サブクエリがカラムを返す例
1段階目:サブクエリで条件に一致したカラムを返す
2段階目:その値を含むレコードを対象に抽出する

サブクエリの構文
SELECT 表示するカラム FROM テーブル名 WHERE カラム名 IN (SELECTによるサブクエリでカラムを抽出);

INではなく=(イコール)を使おうとすると、サブクエリが1件以上抽出された場合は
「Subquery returns more than 1 row」
というエラーになる。
INは「・・・の中のどれか」という意味になるので、安心。

EXISTSで、存在するレコードだけを対象にする
特定のカラムではなく、1段階目のサブクエリが「対象となるレコードが存在する」という情報を返す

NOT EXISTSで、サブクエリによって抽出されないレコードを対象にして処理する

2009/04/04

複数のテーブルを利用する

■2つのテーブルのレコードを集めて表示
(SELECT カラム名1 FROM テーブル名1) UNION (SELECT カラム名2 FROM テーブル名2);
3つ以上のテーブルの場合もUNIONでつなげる
条件をつけてカラムを抽出する場合、
SELECT * FROM tb WHERE bang NOT IN('A101');
重複を省く場合、
UNION ALL

■複数のテーブルを結合して表示する(内部結合
内部結合は、「JOIN」(あるいはINNER JOIN)により、キーが一致しているレコードだけを取り出す

SELECT カラム名 FORM テーブル1 JOIN 結合するテーブル2
   ON テーブル1のカラム=テーブル2のカラム;
カラム名が同じ場合、
   USING(カラム名);
テーブルが2つ以上の場合、
SELECT ~ FROM
テーブル名1
JOIN テーブル名2 結合の条件
JOIN テーブル名3 結合の条件
・・・
;

■複数のテーブルの全てのレコードを表示する(外部結合
外部結合は、一致していなくても一方のテーブルのレコードはすべての取り出す
※存在しない値は、「NULL」になる

・左外部結合(LEFT JOIN または LEFT OUTER JOIN)
一致したレコード+テーブル1の全データ
SELECT カラム名 FROM テーブル1
LEFT JOIN 結合するテーブル2
ON テーブル1のカラム= テーブル2のカラム;

・右外部結合(RIGHT JOIN または RIGHT OUTER JOIN)
一致したレコード+テーブル2の全データ
SELECT カラム名 FROM テーブル1
RIGHT JOIN 結合するテーブル2
ON テーブル1のカラム= テーブル2のカラム;

自己結合
同じカラム名が2つ表示されてエラーになるため、必ずエイリアスをつける
SELECT カラム名 FROM テーブル名 AS エイリアス1 JOIN テーブル名 AS エイリアス2;

自己結合の活用法
・すべての組み合わせを表示し、そこから条件をつけて必要なものを選べる
(順位付けをするにはORDERとGROUPを組み合わせて処理する必要がある)
SELECT a.nama,a.tosi,COUNT(*) FROM tb1 AS b WHERE a.tosi<=b.tosi GROUP BY a.bang;

UPDATE、DELETEコマンド 【データ編集・削除編】

■カラムのデータを修正する
UPDATE テーブル名 SET カラム名=修正する値;
・条件をつける
~ WHERE 条件
・並べ替え後の抽出
~ ORDER BY カラム名 LIMIT 限定数

例) ALTER TABLE tb ADD bikou VARCHAR(100);
   UPDATE tb SET bikou='no data';
     (一行で書くと、ALTER TABLE tb ADD bikou VARCHAR(100) DEFAULT 'no data';)
   UPDATE tb SET bikou='good!' ORDER BY uria DESC LIMIT 3;

■条件に一致したレコードをコピーする
CREATE TABLE 新規テーブル名 SELECT * FROM tb WHERE カラム名 LIKE '抽出する文字列';
すでに存在するテーブルにレコードを挿入する場合、
INSERT INTO 存在するテーブル名 SELECT * FROM tb WHERE bang LIKE 'A101';
・順番に並べ替え、抽出してコピー
CREATE TABLE 新規テーブル名 SELECT * FROM tb ORDER BY uria DESC LIMIT 4 OFFSET 1;

■条件に一致したレコードを削除する
DELETE FROM テーブル名;(テーブルのカラム構造自体は残る)
DELETE FROM テーブル名 WHERE 条件;
DELETE FROM テーブル名 ORDER BY カラム名 LIMIT 限定数;

2009/04/03

表示の工夫【関数の処理など】

エイリアス(alias)・・・本物を参照するためにユーザーが自由につけた名前。偽名。別名。ニックネーム。

■カラム名をエイリアスにする
SELECT カラム名 AS エイリアス FROM テーブル名;
※複数のカラム名を指定するときは、「,」で区切って「カラム名 AS エイリアス」を付け加えていく

■関数を使って計算する
平均 AVG()
合計 SUM()
個数 COUNT()

結合 CONCAT() ※文字列を直接指定することもできる

など他にもたくさんの関数がある

たとえば
円周率 PI()
のように、テーブルと全く無縁の関数もある
引数は不要の場合も必ず付ける!

・MySQLサーバーのバージョン
SELECT VERSION();

・現在使っているデータベースを表示
SELECT DATABASE();

・現在のユーザーを表示
SELECT USER();

・引数で指定した文字の文字コード(文字セット)を表示
SELECT CHARSET('この文字');

■文字列操作で活躍する関数
・右から取り出す:RIGHT関数
・左から取り出す:LIGHT関数
例) SELECT RIGHT(bang,2) FROM tb;
「bangの右から2文字を表示する」

・X番目から△個取り出す:SUBSTRING関数
例) SELECT SUBSTRING(bang,2,3) FROM tb;
「bangの2文字目から3文字分を表示する」

・繰り返して表示:REPEAT関数
例) SELECT REPEAT(' .' , tosi) FROM tb;
「「.」の文字をtosiの回数だけ繰り返して表示する」

・逆さから表示:REVERSE関数
例) SELECT REVERSE(nama) FROM tb;
「nama(氏名)のデータの文字列を逆さに表示する」

■日付・時刻の関数
NOW関数 現在の日付と時刻の値を返す
DATETIME型に設定してカラムを入力する

■条件を指定した選択
・レコードを決めて表示する
LIMIT関数
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード数;

・WHEREを使った抽出(条件に一致したレコードだけを取り出す)
SELECT カラム名 FROM テーブル名 WHERE 条件;
※条件には、比較演算子などを使う
[比較演算子]
=  等しい
>  より大きい
>= 以上
<  より小さい
<=  以下
<>  とは異なる
○ IN ×  ×のリスト中に○がある
○ NOT IN ×  ×のリスト中に○がない
○ BETWEEN × AND ××  ×から××の間に○がある
○ NOT BETWEEN × AND ××  ×から××の間に○がない

・文字列を使った条件
WHERE カラム名='文字列'

LIKE:あいまい検索
WHERE LIKE '~'
     「~の文字列を含む」
     NOT LIKE '~'
     「~の文字列を含まない」
[ワイルドカード]
  任意の文字列
_  任意の一文字

・NULLを使った条件
WHERE カラム名 IS NULL
           「カラムがNULLのレコードを抽出」
           IS NOT NULL
           「カラムがNULLでないレコードを抽出」

・重複したデータを省いて抽出
SELECT DISTINCT カラム名 FROM テーブル名;

・複数の条件を指定
AND かつ
OR  または
※ANDが優先して処理される
優先したい処理は()で囲むとよい

CASE WHEN:条件によって入力する値を変化させる
CASE
  WHEN 条件1 THEN 表示する値
  WHEN 条件2 THEN 表示する値
  WHEN 条件3 THEN 表示する値
・・・・・
ELSE すべての条件に当てはまらないときの値
END

・並べ替え
昇順
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム ASC;
降順
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム DESC ;
降順に下から5件だけ表示するとき
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム DESC LIMIT 5;

・表示するレコードの範囲を決める
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード OFFSET 表示開始レコードのシフト数;
表示開始のレコード数とは、「何個移動したところから表示させるか」を指定する数
(「指定した数の次」個目から表示)

・グループごとに表示
グループとして扱うことで、グループ単位での処理が可能になる
GROUP BY:グループ化
SELECT カラム名 FROM テーブル名 GROUP BY グループ化するカラム名;
指定したカラムの偶然選ばれたレコードが表示される
ただし、処理の対象は同じグループに属するすべてのレコードが対象

・グループごとの数を数える
例) SELECT bang,COUNT(*) AS 件数 FROM tb GROUP BY bang;
・グループごとの合計・平均を表示する
例) SELECT bang,SUM(uria) AS 合計 FROM tb GROUP BY bang;
   SELECT bang,AVG(uria) AS 平均 FROM tb GROUP BY bang;

・グループに分けて条件をつけて取り出す
「グループ化した後で抽出」
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム HAVING 条件;
「抽出してからグループ化」
SELECT 集計したカラム FROM テーブル名 WHERE 条件 GROUP BY グループ化するカラム;
「グループ化してから並べ替える」
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム ORDER BY キーとなるカラム;
+------------------------------+
 ◆記述順のポイント◆
  ①WHERE条件
      ↓
  ②GROUP BY
      ↓
  ③ORDER BY ○○ (DESC)
+------------------------------+

テーブルやレコードのコピー・削除、さまざまな抽出方法など

■テーブルのコピー方法
・テーブルのカラム構造+データのコピー
CREATE TABLE 新規テーブル名 SELECT * FROM 元となるテーブル名;
・テーブルのカラム構造だけをコピー
CREATE TABLE 新規テーブル名 LIKE 元となるテーブル名;
AUTO_INCREMENTやPRIMARY KEYの属性もコピーされる
・他のテーブルのデータのみコピー
INSERT INTO テーブル名 SELECT * FROM 元となるテーブル名;
・特定カラムを選択してコピー
INSERT INTO テーブル名(カラム名) SELECT カラム名 FROM 元となるテーブル名;
※データ型が同じであること!

■テーブル・データベース・レコードの削除
・テーブルを削除
DROP TABLE テーブル名;
・もし指定のテーブルがあれば削除する
DROP TABLE IF EXISTS テーブル名;
・データベースの削除
DROP DATABASE データベース名;
・レコード丸ごと削除
DELETE FROM テーブル名;
※丸ごとでなくレコードを選択して削除するときは
「WHERE」で条件を設定する

xamppのインストール

いつもいつも、悩まされるのが最初の環境作り。
今回もXPでは問題なくできたものの、
家のVISTAでやってみたらAPACHEのインストールがうまくいかない。
エラーメッセージ:
「ポート80または443(SSL)はすでに利用されています。Apache2をサービスとしてインストールするのに失敗しました。」

どうやらポート番号がかぶっている模様。。。
ネットで調べたらSkypeが標準でポート80番を使っているらしい。

Skypeの
[Tools > Options > Connections ]で、
Use ports 80 and 443 for incoming connectionsのチェックを外せばいいらしいが、
[Connections]がないんですけどぉ???

よく分かりません。。。

MySQLのコマンドいろいろ【カラム構造変更編】

■カラムの定義を変更する
alter table テーブル名 modify カラム名 データ型;
カラム順を変更するには、
alter table テーブル名 modify 対象カラム 場所;

■カラムを追加する
alter table テーブル名 add カラム名 データ型;
カラムの先頭に新規カラムを追加するには、
alter table テーブル名 add カラム名 データ型 first;
任意カラムの後に新規カラムを追加する場合、
alter table テーブル名 add カラム名 データ型 after 任意カラム名;

■カラムの名前と定義を変更する
alter table テーブル名 change 変更前カラム名 変更後カラム名 変更後データ型;

■カラムを削除する
alter table テーブル名 drop カラム名;

データ型<よく使うものだけ~>

「フィールド」…テーブルを構成する項目のデータ
「カラム」…実際に入力されたレコードを構成する項目のデータ

データベース名やテーブル名、カラム名には日本語を使わない!

■数値型■
INT正負の整数(-2147483648~2147483647)
DOUBLE小数点以下(「○E+△(○×10の△乗)」)
■文字列型■
VARCHAR(最大文字数)文字データ(255文字まで)
TEXT(最大文字数)文字データ(65535文字まで)
■日付・時刻型■
DATETIME日付と時刻 YYYY-MM-DD HH:MM:SS
DATE日付のみ YYYY-MM-DD

MySQLのコマンドいろいろ【テーブル操作編】

■テーブルの作成
create table テーブル名 (カラム名1 データ型1, カラム名2 データ型2 ...);
主キーを設定してテーブルを作成する場合、
create table テーブル名 (カラム名 データ型 primary key...);
主キーはレコードを厳密に特定できるように
・値の重複がない
・何のデータも入力しない(null)ことはできない
主キーの代わりに、一意キーunique)を指定することもできる
一意キーは、重複はできないがnullを入力することは可能
自動的に連続番号が入力されるauto_incrementは、主キーに適する
例:create table renzoku (a INT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10));

■すべてのテーブルの表示
show tables;
文字セットを指定してテーブルを作る場合、
(Shift_JISを指定してテーブルを作成)
create table テーブル名 (カラム名1 データ型1, カラム名2 データ型2 ...) charset=sjis;

■他のデータベースへのアクセス
select * from データベース名.テーブル名;

■テーブルのカラム構造の確認
desc テーブル名;
[見方]
null…何も入力しなくても許す!
default…何も入らなければこの値
Field…カラム名
Type…データ型

■データの挿入
insert into テーブル名 values(データ1,データ2...);
設定したカラムの順に、データを「,」で区切って記述
※文字列データは「"(ダブルクォーテーション)」「'(シングルクォーテーション)」で囲む

■カラム名を指定してデータを挿入する
insert into テーブル名 (カラム1,カラム2...) values(データ1,データ2...);

■一度にデータを入力する
insert into テーブル名 (カラム1,カラム2...) values(データ1,データ2...),(データ1,データ2...),(データ1,データ2...);

■データの表示
select カラム1,カラム2... from テーブル名;
全部のカラムの場合、
select * from テーブル名;

MySQLのコマンドいろいろ【データベース操作編】

■MySQLモニタの起動
mysql -u ユーザー名 -pパスワード
(※-pの後には半角スペースを入れない)
-----
mysql -u ユーザー名 -p
Enter password:
の方が、パスワードを盗み見られてしまうことがにため、より安全

■MySQLモニタの終了
exit(あるいは 
quit)

■新規ユーザーの作成
create user 新規ユーザー名 identified by '新規パスワード';

■ユーザー権限を設定
grant 与える権限 on データベース名.テーブル名 to ユーザー名;
[与える権限について]
・全権限 「ALL」
・指定する場合 「例)SELECT,UPDATE」
・全データベースの全テーブル 「*.*」


■ユーザーの削除
drop user ユーザー名;

データベースの作成
create database データベース名;

■データベースの一覧を表示
show databases;

■使うデータベースを指定する
use データベース名
(※SQL文ではないので最後に「;」は不要)
¥U データベース名

■現在使用しているデータベースの表示
select database();
データベースをあらかじめ選択して、MySQLモニタを起動するには、
mysql データベース名 -u root -p
とすればよい

Shift_JISでやっていくワケ【5C問題】

日本語を利用するため!
…なんだけど、それ以外の文字コードでは日本語に対応するターミナルソフト(例:コマンドプロンプト)が必要だったり、またShift_JISはWindowsでは初心者でも扱いやすいものだそう。

ただし、文字コードの中に「5C」が含まれてる文字では、エスケープ処理されて「¥」がついたり、文字化けすることがある。
代表的なものでは、 「十、申、貼、能、表、予、ソ」 など。


設定の変更はc:\xampp\mysql\bin内の「my.cnf」というファイルをメモ帳で開いて以下のように変更する。
(30行目付近)
[mysqld]
...
old-passwords
character-set-server = sjis
#collation-server = latin1_general_ci
skip-character-set-client-handshake


とりあえずはShift_JISで行きます。

2009/04/02

基礎からのMySQL


ようやくRuby①の本が終わりました…。(時間かかりすぎ)

そして今日からスタートです!!
データベースは初めてだけど、前にRuby on RailsやPHPをやったときにデータベースをちょこっと触っていたのもあって、今のところ順調です。このまま行けますように・・・☆

今回はxamppを使ってやりまーす。