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

MariaDBでテーブルの文字セットと照合を設定する

    MariaDBのさまざまなレベルで文字セットと照合を指定できます。それらは、接続レベル、サーバーレベル、データベースレベル、テーブルレベル、さらには列レベルで指定できます。

    クエリで照合を指定して、前述のレベルで以前に指定された照合を上書きすることもできます。

    テーブルレベルで文字セットと照合を設定するには、CREATE TABLEを使用します ステートメントまたはALTER TABLE ステートメント(テーブルを作成するか変更するかによって異なります)。

    テーブルを作成するとき

    テーブルを作成するときに照合と文字セットを設定する例を次に示します。

    CREATE TABLE Products ( 
        ProductId CHAR(10), 
        ProductName VARCHAR(255) NOT NULL, 
        PRIMARY KEY (ProductId)) 
        CHARACTER SET latin1 
        COLLATE latin1_general_ci;

    これにより、Productsというテーブルが作成されます latin1を使用 文字セット、およびlatin1_general_ciの照合 。

    既存のテーブルを変更する

    既存のテーブルの照合と文字セットを変更する例を次に示します。

    ALTER TABLE Products 
    CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

    新しい照合と文字セットを使用するようになりました。

    CONVERT TOを省略することもできます パート:

    ALTER TABLE Products 
    CHARACTER SET utf8 
    COLLATE utf8_spanish_ci;

    文字セットに対して照合が有効である必要があります

    照合と文字セットの両方を設定するときは、選択した文字セットに対して照合が有効であることを確認する必要があります。その逆も同様です。そうでない場合は、エラーが返されます。

    指定された文字セットに対して無効な照合を使用して指定する例を次に示します。

    ALTER TABLE Products 
    CHARACTER SET latin1 
    COLLATE utf8_spanish_ci;

    結果:

    ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'

    これは、選択した照合が、選択した指定した文字セットに対して無効であることを示しています。

    一致する照合と文字セットのリストについては、MariaDBでサポートされている照合の完全なリストまたはMariaDBでサポートされている文字セットの完全なリストを参照してください。

    照合または文字セットのみを指定する

    照合のみまたは文字セットのみ(またはどちらも指定しない)を指定してもかまいません:

    • 文字セットのみが提供されている場合、その文字セットのデフォルトの照合が使用されます。
    • 照合のみが提供されている場合は、関連する文字セットが使用されます。
    • 照合も文字セットも指定されていない場合は、テーブルのデフォルトが使用されます。

    より多くのバイトを必要とする文字セットへの変換

    VARCHARの場合 またはTEXT 列、CONVERT TO CHARACTER SET 新しい列が元の列と同じ数の文字を格納するのに十分な長さになるように、必要に応じてデータ型を変更します。

    たとえば、ASCII TEXT 列は1文字あたり1バイトを必要とするため、列は最大65,535文字を保持できます。列がutf8に変換される場合、各文字に最大3バイトが必要になる可能性があるため、列はMEDIUMTEXTに変換されます。 (最大長は16,777,215です)同じ数の文字を保持できるようにします。

    このようなデータ型の変更を行わせたくない場合は、MODIFYを使用してください 代わりに、個々の列に。

    例:

    ALTER TABLE Products 
    MODIFY ProductName VARCHAR(255) 
    CHARACTER SET utf8; 

    バイナリへの変換

    CONVERT TO CHARACTER SET binary CHARを変換します 、VARCHAR およびTEXT BINARYへの列 、VARBINARY およびBLOB それぞれ。

    これが完了すると、そのような列には文字セットがなくなります。また、将来のCONVERT TO CHARACTER SETの影響を受けなくなります。 ステートメント。

    MariaDBでの照合と文字セットの確認

    チェックするレベル(サーバー、データベース、テーブル、列、接続など)に応じて、MariaDBの照合と文字セットをチェックするさまざまな方法があります。例については、MariaDBでの照合の表示を参照してください。


    1. @@ IDENTITY、SCOPE_IDENTITY()、OUTPUT、および最後のIDを取得するその他のメソッド

    2. WHERE句を動的/プログラムでSQLに追加します

    3. VBA基本クラスと派生オブジェクト-2

    4. 陳記法