修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则
生活随笔
收集整理的這篇文章主要介紹了
修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述
目前數據庫字符集統一用的utf8,由于項目需要,引進了表情,但是utf8mb5才支持表情字符,所以需統一修改數據庫字符集,下面介紹批量修改數據庫字符集的辦法。
修正順序是字段級別>表級別>庫級別。
一、批量修改整個數據庫字符集(字段級別)
統一將字符字符集變成utf8_general_ci
SELECT TABLE_SCHEMA '數據庫', TABLE_NAME '表', COLUMN_NAME '字段', CHARACTER_SET_NAME '原字符集', COLLATION_NAME '原排序規則', CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = 'lcpdb1' AND CHARACTER_SET_NAME = 'utf8';utf8是我demo的模糊匹配排序規則,這里需要替換為你數據庫中需要替換的字段的排序規則,utf8mb4設置的是替換的字符集,utf8mb4_general_ci設置的是替換的排序規則,可以換為需要修正為什么標準
二、批量修改整個數據庫字符集(表級別)
1、創建批量修改語句
修改單個表的字符集的命令是:alter table 表名 convert to character set utf8mb4 collate utf8mb4_bin;
創建修改語句的命令是:
SELECT TABLE_SCHEMA '數據庫', TABLE_NAME '表', TABLE_COLLATION '原排序規則', CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'lcpdb1' AND TABLE_COLLATION = 'utf8_general_ci';將上面的修正SQL語句批量復制,然后全部執行。
三、批量修改多個數據庫字符集(庫級別)
1、找出MySQL實例中字符集不是utf8mb4的數據庫
SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';2、批量修改
SELECT SCHEMA_NAME '數據庫', DEFAULT_CHARACTER_SET_NAME '原字符集', DEFAULT_COLLATION_NAME '原排序規則', CONCAT( 'ALTER DATABASE ', SCHEMA_NAME, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`SCHEMATA` WHERE DEFAULT_CHARACTER_SET_NAME='utf8';覺得有用的朋友多幫忙轉發哦!后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~
總結
以上是生活随笔為你收集整理的修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 多表查询输出,ThinkPHP多
- 下一篇: php中的全局异常,PHP的全局错误处理