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

データベース内のすべてのテーブルを1つの照合に変換するにはどうすればよいですか?

    テーブルごとにaltertableステートメントを実行する必要があります。ステートメントは次の形式に従います:

    ALTER TABLE tbl_name
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]
    

    ここで、データベース内のすべてのテーブルを取得するには、次のクエリを実行する必要があります。

    SELECT * 
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA="YourDataBaseName"
    AND TABLE_TYPE="BASE TABLE";
    

    では、MySQLにコードを書かせてください:

    SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE your_collation_name_here;") AS    ExecuteTheString
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA="YourDatabaseName"
    AND TABLE_TYPE="BASE TABLE";
    

    結果をコピーして実行できます。私は構文をテストしていませんが、残りを理解できるはずです。ちょっとした練習だと思ってください。

    お役に立てば幸いです!



    1. TransactSQLでNOTEXISTSではなくEXCEPTを使用する場合

    2. 自動車修理店のデータモデル

    3. 削除された行が占めるスペースは再利用されますか?

    4. 自動化されたクラウドデータベース展開のガイド