主鍵一般要設置成自增。
創新互聯于2013年成立,是專業互聯網技術服務公司,擁有項目網站設計、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元忻州做網站,已為上家服務,為忻州各地企業和個人服務,聯系電話:18982081108
所謂自增,就是在插入的時候,該字段不需要賦值,會自動+1;
如果我的表有id,name兩個字段,id自增。插入的時候只需這樣:
insert
into
tablename(name)
values('zhangsan');//id會自動有值
如果你沒有自增,那就要指明字段了:
insert
into
tablename(id,name)
values(1,'zhangsan');//id不會自動有值
如果你數據庫已經建立 用這個方法:
ALTER TABLE `test` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
如果你數據庫沒有建立 ?就用CREATE :
如果你用的數據庫軟件 比如Navicat for MySQL。 ?那么在設計表選項里有設置自動增長的,打上勾
1、打開navicat工具,連接上mysql服務器,選擇完數據庫之后,選擇一個表右擊選擇設計表(這里為了演示測試,隨便選擇一個表即可)。
2、在設計表頁面,可以看到當前表的所有字段信息,我們選擇的學生表有一個id字段,目前該表沒有主鍵字段。
3、如圖,在最后一列右擊選擇主鍵,即可將該字段設置為主鍵,也可以直接點擊鼠標左鍵,可以快速添加和取消主鍵。
4、設置完主鍵之后,可以看到一把鎖的標志,并且有一個1字,因為一個表可以給多個字段添加主鍵,則為聯合主鍵,這樣就顯示為主鍵1,主鍵2等。
5、主鍵設置完成之后,還沒有自增,選擇id字段之后,在下方,如圖,勾選自動遞增,這樣id在每次插入記錄之后都會自增一個值。
6、設置完成主鍵和自增之后,點擊保存,關閉當前窗口,然后選擇表名右擊選擇對象信息。
7、在DLL頁面中,可以看到剛剛添加的主鍵和自增的DLL語句,這里就是創建表的DLL語句。
8、上面有提到聯合主鍵,其實一個表可以給多個字段設置主鍵,這樣可以組成聯合主鍵,對于特定的業務,聯合主鍵也是必須的。
列的自增屬性,一般用來設置整數列根據一定步長逐步增長的值,類似于其他數據庫的序列。不過這里的“序列”是基于特定一張表的。關于自增屬性的相關特性如下:
1. 控制自增屬性性能的變量:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統模式,也就是說,在對有自增屬性的字段插入記錄時,會持續持有一個表級別的自增鎖,直到語句執行結束為止。比如說下面兩條語句,SQL 1 在執行期間,一直持有對表 f1 的表級自增鎖,接下來 SQL 2 執行時鎖超時。
innodb_autoinc_lock_mode=1
代表連續模式,和傳統模式差不多,不同的點在于對于簡單的插入語句,比如 SQL 2,只在分配新的 ID 過程中持有一個輕量級的互斥鎖(線程級別,而不是事務級別),而不是直到語句結束才釋放的表鎖。
代表交錯模式。這個模式下放棄了自增表鎖,產生的值會不連續。不過這是性能最高的模式,多條插入語句可以并發執行。MySQL 8.0 默認就是交錯模式。
那針對復制安全來說,以上三種模式,0 和 1 對語句級別安全,也就是產生的二進制日志復制到任何其他機器都數據都一致;2 對于語句級別不安全;三種模式對二進制日志格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主復制架構或者多源復制架構里,主動規避主鍵沖突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對于要立刻獲取插入值的需求
就是說要獲取一張表任何時候的最大值,應該時刻執行以下 SQL 3 ,而不是 SQL 2。SQL 2 里的函數 last_insert_id() 只獲取上一條語句最開始的 ID,只適合簡單的 INSERT。
4. 自增列溢出現象
自增屬性的列如果到了此列數據類型的最大值,會發生值溢出。比如變更表 f1 的自增屬性列為 tinyint。
分享題目:mysql怎么主鍵自增長 mysql主鍵自增長有什么好處
標題鏈接:http://vcdvsql.cn/article40/doieoeo.html
成都網站建設公司_創新互聯,為您提供小程序開發、全網營銷推廣、定制開發、電子商務、網站營銷、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯