修改乙個表的字段
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 **:
altertable 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...