MySQL修改主鍵屬性

前言:在學習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也能夠用來修改列名
相關文章
相關標籤/搜索