統一修改欄位成小寫+下劃線的命名規則:
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...