おさらい データベースの文字セットと照合順序の練習 free77

Monday,July,22,2013

○データベースを表示させる。
MySQL> show databases;

○特定のデータベース内のテーブル 
SHOW TABLES FROM sadachika_books;
SHOW TABLES FROM sadachika_shop;
Tables_in_sadachika_shop
sadachi_products*すでのテーブル名が存在していた

○テーブルの中身の表示 (sadachi_seiseki)
mysql> select * from sadachika_shop.sadachi_products;
sada_id   sada_name  sada_category
      1   牛乳       飲み物
      2   たこ焼き   食べ物
      3   りんご     果物

○テーブルを作る
重複を許さない場合
VARCHAR型なら、unique その他のオプション default 'データなし', default 0, not null(データなし を許さない)
INT型なら、primary key

○
mysql> create table products(name varchar(20), price int, releasedate date);

○データベースを作る
mysql> create database sadachika_copy;
Query OK, 1 row affected (0.25 sec)

○データベースを表示させる。
MySQL> show databases;
Database
sadachika_copy  *作成された
              注*「information_schema」「mysql」はMySQL自身が使用しているデータベースです。また「test」はデフォルトで作成されているデータベース
○データーベースの参照?
MySQL> SHOW CREATE DATABASE sadachika_copy;
Database         Create Database
sadachika_copy   CREATE DATABASE 'sadachika_copy' /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.03 set)

○○データーベースの詳細表示
                       ↓db名SQLが作成   ↓テーブル名SQLが勝手に作成            
MySQL> SELECT * FROM information_schema.schemata;
              ↑全カラム名を表示schema_name, default_character_set_name, default_collation_name
                                 ↑*schema_nameカラムにはデータベース名が格納されている
                                              ↑*default_character_set_nameカラムには文字セット名が格納されている
                                                                          ↑*default_collation_nameカラムには照合順序が格納されている。
CATALOG_NAME  SCHEMA_NAME          DEFAULT_CHARACTER_SET_NAME   DEFAULT_COLLATION_NAME  SQL_PATH
def           information_schema   utf8                         utf8_general_ci         NULL
def           book                 utf8                         utf8_general_ci         NULL
def           goods                utf8                         utf8_general_ci         NULL
def           mysql                utf8                         utf8_general_ci         NULL
def           performance_schema   utf8                         utf8_general_ci         NULL
def           personal             utf8                         utf8_general_ci         NULL
def           sadachika            utf8                         utf8_general_ci         NULL
def           sadachika_books      utf8                         utf8_general_ci         NULL
def           sadachika_copy       utf8                         utf8_general_ci         NULL
def           sadachika_cp932db    cp932                        cp932_japanese_ci       NULL

def           sadachika_eucjpdb    eucjpms                      eucjpms_bin             NULL

○データベースに接続 *USE db_name; *データベースへ接続していれば、データベース名を省略しテーブル名の指定だけでデータを取得できます。
USE db_name;
\u db_name(セミコロンなし)

○ログインのときにデータベースを選択できる
mysql -u root -p db_name
mysql -u root -p sadachika_shop

○接続しているデータベースの確認
mysql> select database();

○○文字セットと照合順序を指定してデータベースを作成する
CREATE DATABASE db_name
  CHARACTER SET charset_name COLLATE collation_name;
未作成                            ↓db名                      ↓文字セット
未作成mysql> create database sadachika_cp932db character set cp932;         *照合順序を指定しなかった場合はデフォルトの照合順序に設定される。




○○中国語  文字セット[big5]で、データベースを作ってみます。デフォルトで設定されている照合順序は[big5_chinese_ci]中国?
mysql> create database sadachika_big5db character set big5; 
                                 ↑データベース名      ↑文字セット
Query OK, 1 row affected (0.25 sec)

○○[big5]文字セットのデフォルトではない照合順序を見る
mysql> SHOW COLLATION LIKE 'big5%'; 
Collation           Charset   Id  Default   Compiled   Sortlen
big5_chinese_ci     big5       1  Yes       Yes              1        *デフォルトで照合順序が設定されている「_ci」は大文字と小文字を区別しない。
big5_bin            big5      84            Yes              1        *デフォルト以外の選択肢はこれのみ 「_bin」バイナリ比較  バイナリ比較とは格納されているデータをバイナリデータと見なして数値の比較  結果的に大文字と小文字は区別
2 rows in set (0.94 set)
以上2つのみが全部

○○データーベースの詳細表示 MySQLの自動生成するテーブルにMySQLの設定が保存されている
schema_nameカラムにはデータベース名、default_character_set_nameカラムには文字セット名が格納されている。
                       ↓db名SQLが作成   ↓テーブル名SQLが勝手に作成            
MySQL> SELECT * FROM information_schema.schemata;

CATALOG_NAME  SCHEMA_NAME          DEFAULT_CHARACTER_SET_NAME   DEFAULT_COLLATION_NAME  SQL_PATH
def           information_schema   utf8                         utf8_general_ci         NULL
def           book                 utf8                         utf8_general_ci         NULL
def           goods                utf8                         utf8_general_ci         NULL
以下もっとつづく
def           sadachika_big5db     big5                         big5_chinese_ci         NULL*新しくデータベースが作成された

○○データーベースの詳細表示
                             ↓db名自動作 ↓MySQLがテーブルを自動で作る(データーベースの情報を格納)
mysql> select * from information_schema.schemata 
    -> where schema_name = 'sadachika_big5db'\G
***************** 1. row *******************
              CATALOG_NAME:def
               SCHEMA_NAME:sadachika_big5db      *データベース名
DEFAULT_CHARACTER_SET_NAME:big5
    DEFAULT_COLLATION_NAME:big5_chinese_ci       *「_ci」は大文字と小文字を区別しない。
                  SQL_PATH:NULL
1 row in set (0.14 sec)

○データベースを表示させる。
MySQL> show databases;
Database
sadachika_big5db  *追加されたね




○○スウェーデン語  [dec8]照合順序も設定して         
                       ↓db名                         ↓文字セット    ↓照合順序 (デフォルトではなく任意で_binを選んだ)  
mysql> create database sadachika_dec8db character set dec8 collate dec8_bin;   *「_bin」バイナリ比較 *尚、デフォルトは[dec8_swedish_ci]
Query OK, 1 row affected (0.09 sec)

○○[big5]文字セットのデフォルトではない照合順序を見る
mysql> SHOW COLLATION LIKE 'dec8%'; 
Collation           Charset   Id  Default   Compiled   Sortlen
dec8_swedish_ci     dec8       3  Yes       Yes              1        *スウェーデン語*デフォルトで照合順序が設定されている「_ci」は大文字と小文字を区別しない。
dec8_bin            dec8      69            Yes              1        *デフォルト以外の選択肢はこれのみ 「_bin」バイナリ比較  バイナリ比較とは格納されているデータをバイナリデータと見なして数値の比較  結果的に大文字と小文字は区別
2 rows in set (0.00 set)
以上2つのみが全部

○○データーベースの詳細表示 MySQLの自動生成するテーブルにMySQLの設定が保存されている
schema_nameカラムにはデータベース名、default_character_set_nameカラムには文字セット名が格納されている。
                       ↓db名SQLが作成   ↓テーブル名SQLが勝手に作成            
MySQL> SELECT * FROM information_schema.schemata;

CATALOG_NAME  SCHEMA_NAME          DEFAULT_CHARACTER_SET_NAME   DEFAULT_COLLATION_NAME  SQL_PATH
def           information_schema   utf8                         utf8_general_ci         NULL
def           book                 utf8                         utf8_general_ci         NULL
def           goods                utf8                         utf8_general_ci         NULL
以下もっとつづく
def           sadachika_big5db     big5                         big5_chinese_ci         NULL   *中国
def           sadachika_dec8db     dec8                         dec8_bin                NULL   *スウェーデン新しくデータベースが作成された

○○データーベースの詳細表示
                             ↓db名自動作 ↓MySQLがテーブルを自動で作る(データーベースの情報を格納)
mysql> select * from information_schema.schemata 
    -> where schema_name = 'sadachika_dec8db'\G
***************** 1. row *******************
              CATALOG_NAME:def
               SCHEMA_NAME:sadachika_dec8db      *データベース名
DEFAULT_CHARACTER_SET_NAME:dec8
    DEFAULT_COLLATION_NAME:dec8_bin       *スウェーデン語「_bin」バイナリ比較
                  SQL_PATH:NULL
1 row in set (0.14 sec)

○データベースを表示させる。
MySQL> show databases;
Database
sadachika_big5db
sadachika_dec8db  *追加されたね  スウェーデン語

未作成○○データーベースの詳細表示
                             ↓db名自動作 ↓MySQLがテーブルを自動で作る(データーベースの情報を格納)
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachika_cp932db'\G

○○照合順序も設定して         
                          ↓db名                         ↓文字セット    ↓照合順序(デフォルトでない)   
mysql> create database sadachika_eucjpdb character set eucjpms collate eucjpms_bin;

○○データーベースの詳細表示                           
                           ↓db名名自動作 ↓MySQLがテーブルを自動で作る(データーベースの情報を格納)
mysql> select * from information_schema.schemata
    -> where schema_name = 'sadachi_eucjpdb'\G

eucjpmsのデフォルト照合順序のeucjpms_japanese_ci
eucjpms_binに設定されている




○○指定可能な文字セットの一覧
mysql> SHOW CHARACTER SET;
↓文字セット                           ↓デフォルトで設定されている照合順序 照合順序というのは複数の値を比較する時に、どのように比較するのかを定義しているもの
Charset    Description                Default collation     Maxlen
big5       Big5 Traditional Chinese   big5_chinese_ci            2
dec8       DEC West European          dec8_swedish_ci            1
cp850      DOS West European          cp850_general_ci           1
hp8        HP West European           hp8_english_ci             1

latin1     cp1252 West European       latin1_swedish_ci          1
ascii      US ASCII                   ascii_general_ci           1
ujis       EUC-JP Japanese            ujis_japanese_ci           3
sjis       Shift-JIS Japanese         sjis_japanese_ci           2
utf8       UTF-8 Unicode              utf8_general_ci            3  *「utf8」のデフォルト照合順序は「utf8_general_ci」
ucs2       UCS-2 Unicode              ucs2_general_ci            2
binary     Binary pseudo charset      binary                     1
cp932      SJIS for Windows Japanese  cp932_japanese_ci          2
eucjpms    UJIS for Windows Japanese  eucjpms_japanese_ci        3
                                                                 *↑文字セットで1つの文字に必要となる最大バイト数
*文字セットの末尾が「_ci」となっているものは大文字と小文字を区別しない。
*「_bin」バイナリ比較  バイナリ比較とは格納されているデータをバイナリデータと見なして数値の比較  結果的に大文字と小文字は区別

LIKE式の後に'文字コード名%'
○○文字セットのデフォルトではない照合順序を見る
mysql> SHOW COLLATION LIKE 'latin1%';                           *「latin1」文字セット
Collation           Charset   Id  Default   Compiled   Sortlen
latin1_german1_ci   latin1     5            Yes              1
latin1_swedish_ci   latin1     8  Yes       Yes              1
latin1_danish_ci    latin1    15            Yes              1
latin1_german2_ci   latin1    31            Yes              2
以下つづく

○○文字セットのデフォルトではない照合順序を見る 例えばutf8ならば次のように入力します。
mysql> show collation like 'utf8%';
Collation           Charset   Id  Default   Compiled   Sortlen
utf8_general_ci     utf8      33  Yes       Yes              1
utf8_bin            utf8      83            Yes              1
utf8_unicode_ci     utf8     192            Yes              8
utf8_icelandic_ci   utf8     193            Yes              8
以下つづく

○○文字セットのデフォルトではない照合順序を見る
mysql> show collation like 'cp932%';
Collation           Charset   Id  Default   Compiled   Sortlen
cp932_japanese_ci   cp932     95  Yes       Yes              1
cp932_bin           cp932     95            Yes              1
以上で全部です


*「_cs」となっているものは大文字と小文字を区別します。








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

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

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