sql >> データベース >  >> RDS >> Mysql

MySQLのデフォルトの文字セット/照合をどのように把握できますか

    SHOW CREATE TABLEを使用します 。例:

    CREATE TABLE a (
        dflt VARCHAR(11),
        cs   VARCHAR(11)  CHARACTER SET latin1,
        cola VARCHAR(11)  COLLATE utf8mb4_hungarian_ci,
        cc   VARCHAR(11)  CHARACTER SET latin1  COLLATE latin1_bin,
        colb VARCHAR(11)  COLLATE latin1_bin
    );
    
    SHOW CREATE TABLE a\G
    
    mysql> SHOW CREATE TABLE a\G
    *************************** 1. row ***************************
           Table: a
    Create Table: CREATE TABLE `a` (
      `dflt` varchar(11) DEFAULT NULL,
      `cs`   varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL,
      `cola` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_hungarian_ci DEFAULT NULL,
      `cc`   varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
      `colb` varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    

    注:

    • ほとんどの列には、文字セットと照合が綴られています。
    • そうでないもの(dfltDEFAULTsからこれらの設定を継承します テーブルのために。
    • CHARACTER SET 「デフォルト」の照合があります。
    • COLLATE 正確に1つのCHARACTER SETに関連付けられています 、つまり照合名の最初の部分。
    • (ここには表示されていません):DEFAULTs テーブルの場合はDATABASEから継承されます 。
    • MySQL8のデフォルトはCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 何もしなければ。
    • 古いバージョンはデフォルトでCHARSET=latin1 COLLATE=latin1_swedish_ci
    • 一部の照合での「0900」または「520」は、UnicodeStandardsバージョン9.0および5.20を指します。このことから、将来、新しい「より良い」照合が行われる可能性があると推測できます。



    1. mysqliで合計行数を取得する方法

    2. SequelProとMySQLの接続に失敗しました

    3. SQLServerデータベースのすべてのテーブルのID列に主キー制約を追加する方法-SQLServer/TSQLチュートリアルパート63

    4. データベース設計:EAVオプション?