在網站重構中,通常會進行數據結構的修改,所以添加,刪除,增加mysql表的字段是難免的,有時為了方便,還會增加修改表或字段的注釋,把同字段屬性調整到一塊兒。這些操作可以在phpmyadmin或者別的mysql管理工具中完成,但是我們有時為了更方便的管理,會選擇寫sql語句來實現。
1.增加一個字段
代碼如下
復制代碼
//增加一個字段,默認為空
alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL;
//增加一個字段,默認不能為空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL;
2.批量怎加字段
方法一
這裡可以使用事務
代碼如下
復制代碼
bagin; //事務開始
alter table em_day_data add f_day_house7 int(11);
alter table em_day_data add f_day_house8 int(11);
alter table em_day_data add f_day_house9 int(11);
alter table em_day_data add f_day_house10 int(11);
commit; //提交事務,事務結束
事務(transaction)是由一系列操作序列構成的程序執行單元,這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。
方法二
mysql 批量為表添加多個字段
alter table 表名 add (字段1 類型(長度),字段2 類型(長度),字段3 類型(長度));
代碼如下
復制代碼
alter table em_day_data add (f_day_house11 int(11),f_day_house12 int(11),f_day_house13 int(11));
3.刪除一個字段
代碼如下
復制代碼
//刪除一個字段
alter table user DROP COLUMN new2;
4.修改一個字段
代碼如下
復制代碼
//修改一個字段的類型
alter table user MODIFY new1 VARCHAR(10);
//修改一個字段的名稱,此時一定要重新指定該字段的類型
alter table user CHANGE new1 new4 int;
5.批量修改字段名稱
代碼如下
復制代碼
alter table 表 change 修改前字段名 修改後字段名稱 int(11) not null,
change 修改前字段名 修改後字段名稱 int(11) not null,
change 修改前字段名 修改後字段名稱 int(11) not null,
change 修改前字段名 修改後字段名稱 int(11) not null,
change 修改前字段名 修改後字段名稱 int(11) not null
例子:
代碼如下
復制代碼
alter table em_day_data change f_day_house11 f_day_hour11 int(11) not null,
change f_day_house12 f_day_hour12 int(11) not null,
change f_day_house13 f_day_hour13 int(11) not null,
change f_day_house14 f_day_hour14 int(11) not null,
change f_day_house15 f_day_hour15 int(11) not null,
change f_day_house16 f_day_hour16 int(11) not null,
change f_day_house17 f_day_hour17 int(11) not null
6,添加注釋
代碼如下
復制代碼
// 可以為表添加注釋
ALTER TABLE `table_name` COMMENT'注釋';
// 為字段添加注釋,同樣適用於修改
ALTER TABLE `table_name` CHANGE `column_name` `column_name` type(longth) UNSIGNED NULL DEFAULT NULL COMMENT '注釋'
7,調整字段順序:
alter table 表名
change 字段名 新字段名 字段類型 默認值 after 字段名(跳到哪個字段之後)
例子:
代碼如下
復制代碼
alter table appstore_souapp_app_androidmarket;
change getPriceCurrency getPriceCurrency varchar(50) default null AFTER getPrice;