クライアント(str1)とMySQLサーバ(str2)の文字コード MySQLの練習 free38

Thursday,June,20,2013
概略があまりつかめてませんがメモします。
BINARY型について
クライアントが保存する文字コード(カムラ?)をMySQLサーバに送信すしサーバがデータ保存するメカニズムについて。
山山クライアントcp932→      |データ8E52      E5B1B1       ←*MySQRサーバUTF8のbinaryとchar
定近定近クライアントcp932→  |データ92E88BDF  E5AE9AE8BF91 ←*MySQRサーバUTF8のbinaryとchar
定近_定近_クライアントcp932→|データ92E88BDF2 E5AE9AE8BF91 ←*MySQRサーバUTF8のbinaryとchar

mysql> show databases; 
mysql> use test;                *メッセージDatabase changedが表示される。 
mysql> show tables;                      *テーブル一覧が表示される。

○BYTE(5)型とCHAR(5)型のカラムを持つテーブルを作成する。
mysql> create table test18(str1 binary(5), str2 char(5));  

mysql> insert into test18(str1, str2) values('山','山');
mysql> insert into test18(str1, str2) values('定近','定近');
mysql> insert into test18(str1, str2) values('定近 ','定近 ');     *半角スペースを入れた
mysql> insert into test18(str1, str2) values('定近 ','定近 ');   *全角スペース入力失敗

○「test18」テーブルの構造を見る。 カラムの設定が見れます。桁数、NULL値が無い場合の表示方法など 
mysql> describe test18; 
mysql> show columns from test18;  同じ結果
Field  Type        Null  Key  Default  Extra
str1   binary(5)   YES        NULL                      *BINARY型          
str2   char(5)     YES        NULL

○作成したテーブルの定義を確認してみる。
mysql> show create table test18\G
Table: test18
Create Table: CREATE TABLE 'test18'(                   *ここはサーバの文字コードの設定だな  クライアントはcp932のはずだから            
'str1' binary(5) CHARACTER SET latin1 DEFAULT NULL,  *ここはサーバの文字コードの設定だな BINARY型カムラの形に文字コードで一応理解しておくことに。
'str2' char(5) CHARACTER SET ucs2 DEFAULT NULL,    *ここはサーバの文字コードの設定だな カムラの形に文字コードで一応理解しておくことに。
)ENGINE=InnoDB DEFAULT CHARSET=utf8                    *ここはサーバの文字コードUTF8だよね。
1 row in set (0.00 sec)

○テーブルの中身の表示 
mysql> select * from test18;
str1   str2
山     山
定近   定近
定近   定近

○BINARY型のカラムに格納する時は、送られたきたデータをそのまま格納する。*クライアント(str1)とMySQLサーバ(str2)の文字コードの表示かな?
mysql> select hex(str1), hex(str2) from test18;                        

hex(str1)                                             hex(str2)
8E52000000  (山クライアントcp932→データ8E52)         E5B1B1        *クライアントcp932 MySQRサーバUTF8
92E88BDF00  (定近クライアントcp932→データ92E88BDF)   E5AE9AE8BF91     *クライアントcp932 MySQRサーバUTF8
92E88BDF20  (定近_クライアントcp932→データ92E88BDF2) E5AE9AE8BF91     *クライアントcp932 MySQRサーバUTF8

mysql> select str1, str2 from test18;    *テーブルの中身の表示とにている
str1   str2
山     山
定近   定近
定近   定近


* 参考にしたサイトは→ こちら です。


これは赤色の文字例です。

これは青色の文字例です。