eucjpms_bin cp932_japanese_ci 
テーブルの定義を確認したり、データベース(フォルダ)の文字セット、照合順序(eucjpms_bin cp932_japanese_ci)を確認する練習。 free44


Monday,June,24,2013

○データベースを指定し、テーブルの中身を表示する
mysql> select * from sadachika_books.sadachika_novel;   *データベース名sadachika_books テーブル名sadachika_novel
Empty set (0.00 set)               *中身が無いみたい

select * from test.test16;
str1     str2
abc      abc
あいう   あいう
abc      abc
 abc      abc
 abc      abc

select * from test.test17;
str1     str2      str3
abc      abc       abc
ABC      ABC       ABC
abc      abc       abc
ABC      ABC       ABC

mysql> select * from test.test18;
str1     str2
山       山
定近     定近
定近     定近


○省略文を使ってデータベースを指定する
mysql> USE test;
mysql> USE sadachika_books;        *データベースを指定する
mysql> SHOW TABLES;
mysql> \u sadachika_books          *省略文 後ろのコロンなし
mysql> select database();
database();
sadachika_books

mysql> \u test                     *省略文 データベースを指定する
Database changed
mysql> select database();
database()
test

mysql> SHOW TABLES;
Tables_in_test
test
test1
test10
test11
test12
test13
test14
test15
test16
test17
test18
test2
test3
test4
test5
test6
test7
test8
test9

mysql -u root -p test               *データベースを指定して起動する。
mysql -u root -p sadachika_books    *データベースを指定して起動する。

現在接続しているデータベースを確認するにはdatabase関数を使用する。
select database();
sadachika_books
1 row in set (0.05 sec)

○○文字セットと照合順序を指定してデータベース(フォルイダ)を作成
       mysql> create database cp932db character set cp932;     *お手本
mysql> create database sadachika_cp932db character set cp932;  *文字セットcp932入力 照合順序なし

mysql> show databases;
information_schema               *以下でこの中身を見ていきます
books
goods
mysql
performance_schema
personal
sadachika
sadachika_books
sadachika_cp932db                 *dbはデータベースの略 任意の目印
sadachika_eucjpdb
sakila
salesdb
sampledb040
test
world

mysql> \u information_schema      *省略文 データベースを指定する 
mysql> SHOW TABLES;
Tables_in_information_schema
CHARACTER_SET
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
COLUMN_PRIVILEGES
ENGINES
EVENTS
FILES
GLOBAL_STATUS
GLOBAL_VARIABLES
以下もっと続く


○全データベースの文字セットと照合順序を表示させる。
INFORMATION_SCHEMA.SCHEMATA
mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA\G           *全データベースの文字セットと照合順序が表示される


○○文字セットと照合順序を指定してデータベース(フォルダ)を作成
mysql> create database sadachika_eucjpdb character set eucjpms collate eucjpms_bin;    *文字セットeucjpms 照合順序eucjpms_binの順で入力
サクラエディタでデータベースsadachika_eucjpdbの中のdb.optを開いてみる
default-character-set=eucjpms             *文字セット
default-collation=eucjpms_bin             *照合順序

○データベース(フォルダ)の文字セットと照合順序を確認する。
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_eucjpdb'\G
*************************** 1.row ********************
              CATALOG_NAME: def
                SCHEMA_NAM: sadachika_eucjpdb
DEFAULT_CHARACTER_SET_NAME: eucjpms        *文字セット
    DEFAULT_COLLATION_NAME: eucjpms_bin    *照合順序
                  SQL_PATH: NULL
1 row in set (0.00 set)

デフォルトの文字セットがeucjpmsに設定されていることが確認できます。
また照合順序もeucjpmsのデフォルト照合順序のeucjpms_japanese_ciではなく指定したeucjpms_binに設定されていることが確認できます。

○○文字セットと照合順序を指定してデータベース(フォルダ)を作成
*mysql> create database sadachika_cp932db2 character set cp932;    *文字セットcp932 照合順序入力なし
サクラエディタでデータベースsadachika_eucjpdbの中のdb.optを開いてみる
default-character-set=cp932
default-collation=cp932_japanese_ci        *なぜか照合順序が自動で設定されている

○データーベースを削除する場合は以下
mysql> drop database sadachika2_cp932db;

○データベース(フォルダ)の文字セットと照合順序を確認する。
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_cp932db'\G *データベスを指定して文字セットと照合順序を表示させる
*************************** 1.row ********************
              CATALOG_NAME: def
                SCHEMA_NAM: sadachika_cp932db
DEFAULT_CHARACTER_SET_NAME: cp932
    DEFAULT_COLLATION_NAME: cp932_japanese_ci    *なぜか照合順序が自動で設定されている
                  SQL_PATH: NULL
1 row in set (0.00 set)


mysql> SHOW DATABASES;
Database
information_schema
books
goods 増えた
mysql
performance_schema
personal
sadachika
sadachika_books
sadachika_cp932db     *増えた テーブルは入っていません
sadachika_ecujpdb     *増えた テーブルは未作成
sakila
salesdb
sampledb040
test
world





               ○文法を忘れそうなので書いておく
                 余分○作成したテーブル(sadachika_books)の定義を確認してみる。
                 USE sadachika_books;
                     mysql> show create table sadachika_magazine\G
                     *********** 1. row **************
                     Table: sadachika_magazine
                     Create Table: CREATE TABLE 'sadachika_magazine'(
                     'sada_id' int(11)  DEFAULT NULL                                 *カムラの名前sada_id、INT型で理解することにしておく。
                     ) ENGINE=InnoDB DEFAULT CHARSET=utf8                            *確かに文字セットと照合順序を指定してデータベース(フォルダ)を作成した設定になっている。
                     1 row in set (0.00 sec)                                         
                            *↑InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型 MyISAMと入力
                ○データベース(フォルダ)の文字セットと照合順序を確認する。
                mysql> select * from information_schema.schemata
                    -> where schema_name = 'sadachika_books'\G
                    *************************** 1.row ********************
                                  CATALOG_NAME: def
                                    SCHEMA_NAM: sadachika_books
                    DEFAULT_CHARACTER_SET_NAME: utf8
                        DEFAULT_COLLATION_NAME: utf8_general_ci                      *設定する場合の参考mysql> create database sadachika_eucjpdb character set eucjpms collate eucjpms_bin; 
                                      SQL_PATH: NULL
                        1 row in set (0.00 set)






○EUCJPMS とりあえず何かデータベース(sadachika_eucjpdb)内にテーブル(sada2_t text)を作ってテーブルの定義を見なきゃね
USE sadachika_eucjpdb;
mysql> create table sadachika_text_table(sada_t2 text2); 入力失敗 型に数字入れてるんだもん駄目だわな
mysql> create table sadachika_text(sada_t2 text2);  入力失敗 型に数字入れてるんだもん駄目だわな
mysql> create table sadachika_text(sada_t text);    入力OK
mysql> create table sadachika_text2(sada_t text);   入力OK
mysql> create table sadachika1_text(sada1_t text);  入力OK
mysql> create table sadachika2_text(sada2_t text);  これに値を入力していきます
○テーブルを削除する場合はこんな感じ
mysql> drop table sadachika_text;
mysql> drop table sadachika_text2;
mysql> drop table sadachika1_text;

○「sadachika2_text」テーブルの構造を見る。 カラムの設定が見れます。桁数、NULL値が無い場合の表示方法など 
mysql> show columns from sadachika2_text;
Field    Type    Null  Key  Default  Extra
sada2_t  text    YES        NULL

○作成したテーブル(sadachika2_text)の定義を確認してみる
mysql> show create table sadachika2_text\G
*********** 1. row **************
Table: sadachika2_text
Create Table: CREATE TABLE 'sadachika2_text'(
'sada2_t' text  COLLATE eucjpms_bin                                 *カムラの名前sada2_t、TEXT型で理解することにしておく。
) ENGINE=InnoDB DEFAULT CHARSET=eucjpms COLLATE=eucjpms_bin         *確かに文字セットと照合順序を指定してデータベース(フォルダ)を作成した設定になっている。
1 row in set (0.00 sec)                                             *mysql> create database sadachika_eucjpdb character set eucjpms collate eucjpms_bin; 
         *↑InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型 MyISAMと入力

○データベースデレクトリ(sadachika_eucjpdb;)フォルダ内に以下の2つのファイルが作成される
sadachika2_text.frm   *テーブル定義の保存
sadachika2_text.ibd

○サクラエディタでデータベースデレクトリ(sadachika_cp932db)フォルダ内のdb.optファイルを開いてみる
default-character-set=eucjpms 
default-collation=eucjpms_bin

現在接続しているデータベースを確認するにはdatabase関数を使用します。次のように入力して下さい。
mysql> select database();
sadachika_eucjpdb

○入力してみる
mysql> insert into sadachika2_text(sada2_t) values('abc');              *ノーマルに入力した
mysql> insert into sadachika2_text(sada2_t) values('abc ');             *後ろに半角スペースを入力
mysql> insert into sadachika2_text(sada2_t) values(' abc ');            *前後に半角スペースを挿入
mysql> insert into sadachika2_text(sada2_t) values('sadachika');        *小文字のアルファベット
mysql> insert into sadachika2_text(sada2_t) values('SADACHIKA');        *大文字のアルファベット
mysql> insert into sadachika2_text(sada2_t) values('SADACHIKA ');       *後ろに半角スペースを入力
mysql> insert into sadachika2_text(sada2_t) values('定近');             *漢字を入力してみる
mysql> insert into sadachika2_text(sada2_t) values('定近 ');            *後ろに半角スペースを入力
mysql> insert into sadachika2_text(sada2_t) values(' 定近 ');           *前後に半角スペースを入力してみる
mysql> insert into sadachika2_text(sada2_t) values('2013');             *数字のテスト ただシングルクォーテーションだから文字として記録されるんだろうと思う
mysql> insert into sadachika2_text(sada2_t) values('2013 ');            *後ろに半角スペース
mysql> insert into sadachika2_text(sada2_t) values(' 2013 ');           *前後に半角スペース
mysql> insert into sadachika2_text(sada2_t) values('201306');           *2013の検索でかかるかテスト 結果はかからない
mysql> insert into sadachika2_text(sada2_t) values('2013 6 ');          *半角スペースを間に入れて数字を入力してみた

○テーブルの中身の表示
mysql> select * from sadachika_eucjpdb.sadachika2_text;
sada2_t
abc
abc
 abc
sadachika
SADACHIKA
SADACHIKA
定近
定近
 定近
2013
2013
 2013
201306
2013 6


○テーブルの中身を表示 プログラムの文法テスト
\u sadachika_eucjpdb   *USE省略文
mysql> select concat('(',sada2_t,')')from sadachika2_text;
concat('(',sada2_t,')')
(abc)               *ノーマルに入力した
(abc )              *後ろに半角スペースを入力
( abc )             *前後に半角スペースを挿入
(sadachika)         *小文字のアルファベット
(SADACHIKA)         *大文字のアルファベット
(SADACHIKA )        *後ろに半角スペースを入力
(定近)              *漢字を入力してみる
(定近 )             *後ろに半角スペースを入力  
( 定近 )            *前後に半角スペースを入力してみる 
(2013)              *数字のテスト ただシングルクォーテーションだから文字として記録されるんだろうと思う
(2013 )             *後ろに半角スペース 
( 2013 )            *前後に半角スペース
(201306)            *2013の検索でかかるかテスト 結果はかからない
(2013 6 )           *半角スペースを間に入れて数字を入力してみた








○CP932 とりあえず何かデータベース(sadachika_cp932db)内にテーブル(sada_t text)を作ってテーブルの定義を見なきゃね
USE sadachika_cp932db;
mysql> create table sadachika_text(sada_t text);

○「sadachika_text」テーブルの構造を見る。 カラムの設定が見れます。桁数、NULL値が無い場合の表示方法など 
      mysql> describe test2;             *プログラムの文法を忘れるので書いておく
      mysql> show columns from test2;  *同じ結果
mysql> show columns from sadachika_text;
Field   Type    Null  Key  Default  Extra
sada_t  text    YES        NULL

○作成したテーブル(sadachika_text)の定義を確認してみる
mysql> show create table sadachika_text\G
*********** 1. row **************
Table: sadachika_text
Create Table: CREATE TABLE 'sadachika_text'(
'sada_t' text                                 *カムラの名前sada_t、TEXT型で理解することにしておく。
) ENGINE=InnoDB DEFAULT CHARSET=cp932         *確かに文字セットと照合順序を指定してデータベース(フォルダ)を作成した設定になっている。
1 row in set (0.00 sec)                       *mysql> create database sadachika_cp932db character set cp932; 
         *↑InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型 MyISAMと入力

○データベースデレクトリ(sadachika_cp932db)フォルダ内に以下の2つのファイルが作成される
sadachika_text.frm   テーブル定義の保存
sadachika_text.ibd

○サクラエディタでデータベースデレクトリ(sadachika_cp932db)フォルダ内のdb.optファイルを開いてみる
default-character-set=cp932 
default-collation=cp932_japanese_ci

○テーブルを削除する場合はこんな感じ
mysql> drop table sadachika_text;


○入力してみる 
mysql> insert into sadachika_text(sada_t) values('abc');              *ノーマルに入力した
mysql> insert into sadachika_text(sada_t) values('abc ');             *後ろに半角スペースを入力
mysql> insert into sadachika_text(sada_t) values(' abc ');            *前後に半角スペースを挿入
mysql> insert into sadachika_text(sada_t) values('sadachika');        *小文字のアルファベット
mysql> insert into sadachika_text(sada_t) values('SADACHIKA');        *大文字のアルファベット
mysql> insert into sadachika_text(sada_t) values('SADACHIKA ');       *後ろに半角スペースを入力
mysql> insert into sadachika_text(sada_t) values('定近');             *漢字を入力してみる
mysql> insert into sadachika_text(sada_t) values('定近 ');            *後ろに半角スペースを入力
mysql> insert into sadachika_text(sada_t) values(' 定近 ');           *前後に半角スペースを入力してみる
mysql> insert into sadachika_text(sada_t) values('2013');             *数字のテスト ただシングルクォーテーションだから文字として記録されるんだろうと思う
mysql> insert into sadachika_text(sada_t) values('2013 ');            *後ろに半角スペース
mysql> insert into sadachika_text(sada_t) values(' 2013 ');           *前後に半角スペース
mysql> insert into sadachika_text(sada_t) values('201306');           *2013の検索でかかるかテスト 結果はかからない
mysql> insert into sadachika_text(sada_t) values('2013 6 ');          *半角スペースを間に入れて数字を入力してみた

○テーブルの中身の表示
mysql> select * from sadachika_cp932db.sadachika_text;   *データベース テーブルの順
sada_t
abc
abc
 abc
sadachika
SADACHIKA
SADACHIKA
定近
定近
 定近
2013
2013
 2013
201306
2013 6

○テーブルの中身の表示 プログラムの文法テスト
\u sadachika_cp932db   *USE省略文
mysql> select concat('(',sada_t,')')from sadachika_text;
concat('(',sada_t,')')
(abc)               *ノーマルに入力した
(abc )              *後ろに半角スペースを入力
( abc )             *前後に半角スペースを挿入
(sadachika)         *小文字のアルファベット
(SADACHIKA)         *大文字のアルファベット
(SADACHIKA )        *後ろに半角スペースを入力
(定近)              *漢字を入力してみる
(定近 )             *後ろに半角スペースを入力  
( 定近 )            *前後に半角スペースを入力してみる 
(2013)              *数字のテスト ただシングルクォーテーションだから文字として記録されるんだろうと思う
(2013 )             *後ろに半角スペース 
( 2013 )            *前後に半角スペース
(201306)            *2013の検索でかかるかテスト 結果はかからない
(2013 6 )            *半角スペースを間に入れて数字を入力してみた

○データベースを削除する場合こんな感じ
DROP DATABASE db_name;
mysql> drop database cp932db;
再度データベースの一覧を確認
show databases;

○前回のコマンドでの警告を表示する
mysql> show warnings;







○データベースの属性を変更する方法を確認します。
まずテスト用のデータベースを作ってみる
mysql> create database sadachika_eucjpdb02test character set eucjpms collate eucjpms_bin;    *文字セットeucjpms 照合順序eucjpms_binの順で入力

サクラエディタでdb.optファイルを開いてみる
default-character-set=eucjpms
default-collation=eucjpms_bin

○データベース(フォルダ)の文字セットと照合順序を確認する。
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_eucjpdb02test'\G
*************************** 1.row ********************
              CATALOG_NAME: def
                SCHEMA_NAM: sadachika_eucjpdb02test
DEFAULT_CHARACTER_SET_NAME: eucjpms
    DEFAULT_COLLATION_NAME: eucjpms_bin
                  SQL_PATH: NULL
1 row in set (0.00 set)

○デフォルト文字セットと照合順序の変更です。
mysql> ALTER  DATABASE db_name
  CHARACTER SET charset_name COLLATE collation_name;

mysql> ALTER  DATABASE sadachika_eucjpdb02test
  CHARACTER SET cp932 COLLATE cp932_japanese_ci;           *eucjpmsをcp932に、eucjpms_binをcp932_japanese_ciに変更してみた
  
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_eucjpdb02test'\G
*************************** 1.row ********************
              CATALOG_NAME: def
                SCHEMA_NAM: sadachika_eucjpdb02test
DEFAULT_CHARACTER_SET_NAME: cp932                         *変更された
    DEFAULT_COLLATION_NAME: cp932_japanese_ci             *変更された
                  SQL_PATH: NULL
1 row in set (0.00 set)

○もう一度変更をテストしてみる。
mysql> alter database sadachika_eucjpdb02test character set utf8;      *cp932からUTF8へ変更

mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_eucjpdb02test'\G
*************************** 1.row ********************
              CATALOG_NAME: def
                SCHEMA_NAM: sadachika_eucjpdb02test
DEFAULT_CHARACTER_SET_NAME: utf8
    DEFAULT_COLLATION_NAME: utf8_general_ci
                  SQL_PATH: NULL
1 row in set (0.00 set)
あくまで変更以降に作成されるテーブルのデフォルトの文字セットに影響があるだけとのこと


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

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

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