おさらい データベースの文字セットと照合順序の練習 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」となっているものは大文字と小文字を区別します。
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。