Closed12
MySQL勉強
- 文字セット
記号とエンコーディングのセット - 照合順序
文字セット内の文字を比較するためのルールを集めたもの
文字セット
4 文字のアルファベットがあるとします: A, B, a, b。
各文字に数字を付けます: A = 0, B = 1, a = 2, b = 3。
文字 A は記号、数字 0 は A 用の encoding で、4 文字すべてとそのエンコーディングの組合せは文字セットです。
つまり各文字に対して数字を割りふったペアの組み合わせのすべてのことを文字セットと呼ぶ
照合順序
mysql内部で文字列を比較 & 並び替えするときのルール
以下のルールで決定する
文字セット_言語名_照合接尾辞
この中でも接尾辞(suffix)がもっとも重要で大文字小文字を区別するかどうかなどが記載される
サフィックス | ルール | 英名称 |
---|---|---|
_ci | 大文字小文字を区別しない | Case Insensitive |
_cs | 大文字小文字を区別する | Case sensitive |
_bin | バイナリ比較 | binary |
文字セットの設定はMySQLのクライアントプログラムにも影響を与える。つまりサーバーサイド側でも同じ値を設定する必要がある
utf8mb4とutf8の違い
mysqlにおけるutf-8
は1~3byteまでの数値を扱います
しかしこの場合サロゲートペアやemojiなどの文字を保存できない。
そのため、utf8 multi byte four (多分この省略だと思っている)を扱う
charset collateはスキーマ, テーブル, カラムに設定できる
優先はカラム > テーブル > スキーマであり特に何も記載していない場合もこの順序で確定する
基本的にテーブルに書いておけば大丈夫そう。
もしcharsetのdefaultのcollateであっても明記したほうがよい。
version upなどで変更の可能性があるので
imageも削除
docker-compose down --rmi all
キャッシュを使う
docker-compose up --no-cache
このスクラップは2022/07/04にクローズされました