1. 程式人生 > >MySQL修改表結構操作命令總結

MySQL修改表結構操作命令總結

在我們使用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也可以用來修改列名