mysql 修改表的字段

2022-03-12 04:36:08 字數 2860 閱讀 3696

修改乙個表的字段

alter table `member` change `memberid` `memberid` bigint unsigned;

修改含有外來鍵的字段

-- 執行 begin 到 end 之間的**可能需要修改sql_mode值

show variables like '%sql_mode'

-- 儲存查詢出來的sql_mode 值

set global sql_mode=''

set session sql_mode=''

-- begin

set group_concat_max_len = 2048;

set @table_name ="member";

set @change ="bigint unsigned";

set @table_id = "memberid";

select distinct table_name,

column_name,

constraint_name,

referenced_table_name,

referenced_column_name,

concat(

group_concat('alter table ',table_name,' drop foreign key ',constraint_name separator ';'),

';\n',

group_concat('alter table `',table_name,'` change `',column_name,'` `',column_name,'` ',@change separator ';'),

';\n',

concat('alter table `',@table_name,'` change `',@table_id,'` `',@table_id,'` ',@change),

';\n',

group_concat('alter table `',table_name,'` add constraint `',constraint_name,'` foreign key(',column_name,') references ',referenced_table_name,'(',referenced_column_name,')' separator ';')

) as query

from information_schema.key_column_usage

where referenced_table_name is not null

and referenced_column_name is not null

and referenced_table_name = @table_name

group by referenced_table_name

-- end

-- 恢復

set session sql_mode='only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution';

set global sql_mode='only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution';

執行begin到end之間的**會得到 query **:

alter

table member_weixin drop

foreign

key member_weixin_ibfk_1;alter

table member_qq drop

foreign

key member_qq_ibfk_1;alter

table member_visitor drop

foreign

keymember_visitor_ibfk_1;

alter

table `member_weixin` change `memberid` `memberid` bigint unsigned;alter

table `member_qq` change `memberid` `memberid` bigint unsigned;alter

table `member_visitor` change `memberid` `memberid` bigint

unsigned;

alter

table `member` change `memberid` `memberid` bigint

unsigned;

alter

table `member_weixin` add

constraint `member_weixin_ibfk_1` foreign

key(memberid) references member(memberid);alter

table `member_qq` add

constraint `member_qq_ibfk_1` foreign

key(memberid) references member(memberid);alter

table `member_visitor` add

constraint `member_visitor_ibfk_1` foreign

key(memberid) references member(memberid)

執行query**,即修改了字段。並且外來鍵保持不變

MySQL新增字段,修改字段,刪除字段,修改表資訊

mysql的簡單語法,常用,卻不容易記住。當然,這些sql語法在各資料庫中基本通用。下面列出 一 查詢資訊 1.登入資料庫 mysql u root p 資料庫名稱 2.查詢所有資料表 show tables 3.查詢表的字段資訊 desc 表名稱 二 修改表資訊 1.修改表名 2.修改表注釋 三 ...

MySQL 批量修改表和字段

mysql 的 information schema 資料庫中包含了大量的元資料,通過這些資料可以方便的獲取表和字段的資訊,通過組合這些資訊可以生成操作表和字段的 sql。本文只是為了方便自己的記錄。由於發現系統多個資料庫使用的字符集和排序方式有誤,因此要修改錯誤的這部分表,由於修改表無法直接影響 ...

Mysql修改字段

新增乙個字段,預設值為0,非空,自動增長,主鍵 alter table tabelname add new field name field type default 0 not null auto increment add primary key new field name 增加乙個新字段 a...