MySQL 全庫調整表大小寫語句

2022-09-14 21:18:16 字數 3326 閱讀 1233

統一修改欄位成小寫+下劃線的命名規則:

sql例項:

select

concat( 'alter table ', table_name, ' change column ', column_name, ' ', lower( column_name ), ' ', column_type, ' ', if(extra = 'auto_increment', extra, ''), if(collation_name = 'utf8mb4_0900_ai_ci', ' character set utf8mb4 collate utf8mb4_general_ci', ''), ' comment \'', column_comment, '\';' ) as '修改指令碼'

from

information_schema.columns

where

table_schema = 'dcs_coordinate_sit';

更改庫名即可:

查詢結果是一條條的改表語句,把sql複製出來執行

保證單字段主鍵的自增不會被覆蓋掉

if(extra =

'auto_increment

',extra,''),

統一字段字符集標準:

if(collation_name ='

utf8mb4_0900_ai_ci

', 'character set utf8mb4 collate utf8mb4_general_ci', ''),

使用風險:

1、主鍵失去自增設置

2、失去非空約束

v1上線後,重新看sql調整的較可行的寫法:

# ===

====

====

==== 統一更改全庫所有字段大小寫指令碼sql(會刪除字段原來的字符集和排序規則) ===

====

====

====

====

=select

concat(

'alter table `

', `table_schema`, '

`.`', `table_name`, '

` change column `',

`column_name`,

'` `

', lower(`column_name`) , '

` ', --

調整小寫或者大寫 upper(`column_name`)

`column_type`,

if(`is_nullable` ='no

', '

not null

', '

null

'), --

保持原欄位 是否非空設定

if(`extra` is

notnull, '

auto_increment

', ''), --

保持主鍵自帶自增屬性

if(`column_default` is

null, '', concat('

default \

'', `column_default`,

'\'')), --

保持字段預設值屬性

'comment \

'', `column_comment`,

'\';'--

保持字段注釋資訊,如果無則是空字串

) as

'統一更改字段大小寫指令碼sql

'from

`information_schema`.`columns`

where

`table_schema`

notin('

mysql

', '

information_schema

', '

performance_schema

', '

sys') --

非mysql庫

如果要對字段統一設定字符集&排序規則:

# ===

====

====

==== 統一更改字段字符集指令碼sql(utf8mb4_general_ci) ===

====

====

====

====

=select

concat(

'alter table `

', `table_schema`, '

`.`'

, `table_name`,

'` modify column `

', `column_name`, '` '

, `column_type`,

'character set utf8mb4 collate utf8mb4_general_ci

', --

設定字符集

if(`is_nullable` ='no

', '

not null

', '

null

'),

if(`column_default` is

null, '', concat('

default \

'', `column_default`,

'\''

)),

'comment \

'', `column_comment`,

'\';'--

保持注釋

) as

'統一更改字段字符集指令碼sql

'from

`information_schema`.`columns`

where

`table_schema`

notin('

mysql

', '

information_schema

', '

performance_schema

', '

sys') --

非mysql庫

and `data_type` in ('

varchar

', '

char

', '

tinytext

', '

text

', '

mediumtext

', '

longtext

') --

指定文字型別才具有字符集和排序規則屬性設定

and `column_key` !=

'pri

'; --

不干涉主鍵

mysql限制大小寫 mysql對大小寫的限制問題

今天研發人員問我,mysql對大小寫有限制嗎?我想都沒想,說沒限制。過了一會兒,研發人員告訴我說linux下是有限制的。我頓時有種打自己臉的感覺。對於自己不確定的問題,一定得想清楚,查明白了再說。在windows和mac os中,lower case tables name的預設值是1.如果只是在乙...

mysql 區分大小寫 大小寫敏感 配置

linux下mysql預設區分大小寫 windows下mysql預設不區分大小寫 檢視是否區分大小寫 lower case table names引數詳解 lower case table names 0 其中 0 區分大小寫,1 不區分大小寫 mysql在linux下資料庫名 表名 列名 別名大小...

mysql 小寫 MySQL大小寫小結

小結 1.資料庫名大小寫敏感,不可引數調配 2.表名大小寫敏感 可引數調配lower case table names 表別名敏感大小寫 3.列名和列的別名不敏感大小寫 4.變數名嚴格敏感大小寫,不可引數調配 5.執行目錄大小寫敏感,可引數調配 lower case file system 6.wi...