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

MySQLでの一括変更列タイプ

    ストアドプロシージャを使用しないソリューション(phpMyAdminまたはその他のDBAツールのみを使用)。

    次のクエリを実行します

    SELECT 
        CONCAT('ALTER TABLE ',
                TABLE_NAME,
                ' CHANGE COLUMN ',
                COLUMN_NAME,
                ' ',
                column_name,
                ' TARGET_TYPE ',
                CASE
                    WHEN IS_NULLABLE = 'NO' THEN ' NOT '
                    ELSE ''
                END,
                ' NULL;') AS que
    FROM
        information_schema.columns
    WHERE
        table_schema = 'MY DB'
            AND data_type = 'SOURCE_TYPE';
    

    このクエリは、起動するすべてのステートメントを返します。それらを実行するか、SQLアップグレードスクリプトに保存できます

    例(tinyintからbitまで):

    ALTER TABLE mytable CHANGE COLUMN redacted redacted BIT  NULL;
    ALTER TABLE mytable CHANGE COLUMN redacted2 redacted2 BIT NOT NULL;
    


    1. レコードがテーブルに追加されたときに記録する日付/タイムスタンプ?

    2. Mysql:最新のレコードの更新フィールド

    3. フラスコ移行は、他のオブジェクトがテーブルに依存しているため、テーブルをドロップできません

    4. Oracle SQLクエリ:時間に基づいてグループごとに最新の値を取得します