前言:在學習MySQL的過程當中,對於主鍵的屬性以及操做理解較模糊,在輸入多條修改主鍵屬性的語句後常常報錯,因此想整理一下這個過程當中遇到的問題,做爲本身的學習記錄,可能都是基礎知識,但也但願提升本身對數據庫的理解,同時也能幫助到其餘人。數據庫
主鍵約束在數據表中能夠定義一個主鍵值,惟一肯定表中的每一條記錄。每張表中只能有一個primary key,而且primary key不能爲空。若是主鍵約束定義在不止一列,則一列的值能夠重複,可是主鍵約束定義中的全部列組合必須惟一。學習
1. 添加主鍵約束:spa
alter table tbl_name add primary key (index_col_name,…); #括號中爲字段名,能夠爲一個或者多個
2. 在數據表已存在的狀況下,且無主鍵,添加新的字段做爲主鍵,並將該字段移到表格的第一列code
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表示位於某一列的前面,若是加入的字段須要位於某一列的後面,可使用afterblog
3. 數據表已存在,且有主鍵,修改主鍵的定義rem
關鍵字modifyit
alter table tbl_name modify col_name col_definition [first|after col_name] #在col_definition 聲明要修改的屬性,如要添加自動編號auto_increment
Notes:io
1) 此時不須要從新聲明主鍵屬性primary key,若是添加了則會報錯:主鍵重複;table
2) 若是原有屬性中存在auto_increment,修改時須要加上auto_increment,不然auto_increment屬性被刪除class
關鍵字change
alter table tbl_name change col_name col_name col_definition [first|after col_name] #與modify的區別在於列表須要寫兩次列名,至關於原列名和新列名,因此change也能夠用來修改列名