以下內容轉自:http://www.jb51.net/article/58079.htm
表的結構如下:
mysql> show create table person;
| person | CREATE TABLE `person` (
`number` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`birthday` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
刪除列:
ALTER TABLE person DROP COLUMN birthday;
添加列:
ALTER TABLE person ADD COLUMN birthday datetime;
修改列,把number修改為bigint:
ALTER TABLE person MODIFY number BIGINT NOT NULL;
或者是把number修改為id,類型為bigint:
ALTER TABLE person CHANGE number id BIGINT;
添加主鍵:
ALTER TABLE person ADD PRIMARY KEY (id);
刪除主鍵:
ALTER TABLE person DROP PRIMARY KEY;
添加唯一索引:
ALTER TABLE person ADD UNIQUE name_unique_index (`name`);
為name這一列創建了唯一索引,索引的名字是name_unique_index.
添加普通索引:
ALTER TABLE person ADD INDEX birthday_index (`birthday`);
刪除索引:
ALTER TABLE person DROP INDEX birthday_index;
ALTER TABLE person DROP INDEX name_unique_index;
禁用非唯一索引
ALTER TABLE person DISABLE KEYS;
ALTER TABLE...DISABLE KEYS讓MySQL停止更新MyISAM表中的非唯一索引。
激活非唯一索引
ALTER TABLE person ENABLE KEYS;
ALTER TABLE ... ENABLE KEYS重新創建丟失的索引。
把表默認的字符集和所有字符列(CHAR, VARCHAR, TEXT)改為新的字符集:
ALTER TABLE person CONVERT TO CHARACTER SET utf8;
修改表某一列的編碼
ALTER TABLE person CHANGE name name varchar(255) CHARACTER SET utf8;
僅僅改變一個表的默認字符集
ALTER TABLE person DEFAULT CHARACTER SET utf8;
修改表名
RENAME TABLE person TO person_other;
移動表到其他數據庫
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
以下內容轉自:http://www.cnblogs.com/FranklinD/p/4320155.html
MySql數據庫在表中添加新字段,設置主鍵,設置外鍵,字段移動位置,以及修改數據庫后如何進行部署和維護的總結
1,為當前已有的表添加新的字段
alter table student add studentName varchar(20) not null;
2,為當前已有的表中的字段設置為主鍵自增
alter table student add constraint PK_studentId primaryKey(studentId);
3,為當前已有的表中的字段設置為外鍵
alter table student add constraint FK_teacherId_studentInfo foreign key (teacherId) references teacherInfo(teacherId)
alter table 表名 add constraint 鍵名 foreign key (外鍵字段名) references 主表名(主表主鍵名)
4,字段移動位置
alter table student modify studentId varchar(20) first
將student表中的studentId字段的位置移動到第一位
5,關於修改數據庫結構后,如何部署,以及操作過程的總結
在項目開發過程中補課避免的需要修改數據庫的表結構,經過這幾天的操作總結的操作流程是
1,將遠程服務器上的數據庫復制到本地
2,在本地將數據庫的結構進行修改,並研發新的項目功能
3,功能研發完畢,對比之前的數據庫看修改了哪些結構,然后統一將這些操作利用腳本的方式寫出來
4,將本地的數據庫恢復成未修改之前的,然后運行腳本,為當前本地的數據庫修改結構
5,然后查看新增的功能是否能夠正常運行
6,如果出錯則重復3,4步,直至利用腳本能夠直接完美的修改數據庫結構,並再次測試新的功能是否能夠正常運行
7,如果功能能夠正常運行則進行下一步部署服務器
8,首先將遠程服務器中的數據庫進行備份
9,部署新增的功能
10,利用腳本修改服務器中的數據庫
11,修改完畢后查看新功能是否能夠正常運行,如果能夠正常運行並且日志文件中沒有出錯,則表明部署成功!
12,如果有出錯的話,則先恢復數據庫並且重復8,9,10,11步
以下內容轉自:http://www.cnblogs.com/mfryf/p/3457481.html
在我們使用mysql的時候,有時會遇到須要更改或者刪除mysql的主鍵,我們能夠簡單的使用alter table table_name drop primary key;來完成。以下我使用數據表table_test來作了樣例。
1、首先創建一個數據表table_test:
create table table_test(
`id` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`name`)
)ENGINE=MyISAM DEFAULT CHARSET=gb2312;
2、如果發現主鍵設置錯了,應該是id是主鍵,但如今表里已經有好多數據了,不能刪除表再重建了,僅僅能在這基礎上改動表結構。
先刪除主鍵
alter table table_test drop primary key;
然后再增加主鍵
alter table table_test add primary key(id);
注:在增加主鍵之前,必須先把反復的id刪除掉。
以下內容轉自:http://www.cnblogs.com/suiy-160428/p/5649911.html
MySQL修改主鍵屬性:
前言:在學習MySQL的過程中,對於主鍵的屬性以及操作理解較模糊,在輸入多條修改主鍵屬性的語句后經常報錯,所以想整理一下這個過程中遇到的問題,作為自己的學習記錄,可能都是基礎知識,但也希望提高自己對數據庫的理解,同時也能幫助到其他人。
主鍵約束在數據表中可以定義一個主鍵值,唯一確定表中的每一條記錄。每張表中只能有一個primary key,並且primary key不能為空。如果主鍵約束定義在不止一列,則一列的值可以重復,但是主鍵約束定義中的所有列組合必須唯一。
1. 添加主鍵約束:
alter table tbl_name add primary key (index_col_name,…); #括號中為字段名,可以為一個或者多個
2. 在數據表已存在的情況下,且無主鍵,添加新的字段作為主鍵,並將該字段移到表格的第一列
alter table tbl_name add col_name col_definition (data type, null, default...) primary key first current_first_col_name; # current_first_col_name表示當前數據表的第一列
Notes:關鍵字first表示位於某一列的前面,如果加入的字段需要位於某一列的后面,可以使用after
3. 數據表已存在,且有主鍵,修改主鍵的定義
關鍵字modify
alter table tbl_name modify col_name col_definition [first|after col_name] #在col_definition 聲明要修改的屬性,如要添加自動編號auto_increment
Notes:
1) 此時不需要重新聲明主鍵屬性primary key,如果添加了則會報錯:主鍵重復;
2) 如果原有屬性中存在auto_increment,修改時需要加上auto_increment,否則auto_increment屬性被刪除
關鍵字change
alter table tbl_name change col_name col_name col_definition [first|after col_name] #與modify的區別在於列表需要寫兩次列名,相當於原列名和新列名,所以change也可以用來修改列名