9.創建表-自增長(AUTO_INCREAMENT)


自增長-AUTO_INCREAMENT

之前說我們通過主鍵可以保證記錄的唯一性,舉個栗子,如果我們對人找一個主鍵的話,一般會找身份證號,因為身份證大家都不一樣,以身份證為主鍵來保證記錄的唯一性;

但是如果其他的表,可能不像人這樣會存在身份證號的字段,這時候我們會引入一個id,我們習慣性對每一個表建一個id,這個id通過一種正整數的值來保證數據的唯一。第一條記錄用1.第二個用2.依次往下增加。

通過自然數或者正整數保證每條記錄的唯一,但正整數雖然想法很好,但控制起來並不簡單,因為每一次要去數據庫現在最大的是哪一個值,再往上+1,所以這時就引入了自增長的概念。

自增長:把這種字段的這種增長。1,2,3,4,5不再自己去維護,交由數據庫去維護,但這種自增長它會自動去進行編號,需要注意的地方有:

1.必須與主鍵組合使用,即自增長的字段必須定義為主鍵。

2.默認情況下,起始值為1,每次增量為1 

3.定義的語法也非常簡單,在字段類型加AUTO_INCREAMENT

CREATE  TABLE S(id  INT  PRINMARY KEY  AUTO_INCREMENT,S_name  VARCHAR(20));

當你建表的時候這樣設置后,id這列的值就不需要填入了,它自動會賦值,第一條賦值為1;

1.當表中已經自動由自增長id為1和2 后,我手動指定第三條記錄給一個id(1000)填入表格中,此時在插入一條數據不填id時,id會顯示為1001,而非3,因為我們當前數據庫會找到最大的值1000,在此基礎+1;

2.當我在1的基礎上再輸入1001,此時會提示重復duplicate,因為唯一性。

3.當我再1的基礎上再插入一條記錄且id=3.是完全可以的,即:中間有沒有用到的值,是可以使用的。

4.假設我刪掉1000,和1001,再新建一條記錄不設置id值,保存,此時為1002.也就是說,雖然你把它刪掉了,它已經把前面最大的值已經記錄到數據庫中去了,所以以1002使用。

 

重置自增長初始值:

什么叫重置,也就是說把自增長的初始值給改掉。

1.ALTER   TABLE   S AUTO_INCREMENT=0;(這種適合表中沒有記錄的時候,如果有記錄的情況下設置,是無效的。)

2.TRUNCATE  TABLE  S;(TRUNCATE 表示截斷的意思,表示把數據給清空,清空后表中沒有記錄,再增加數據的時候,會從1開始。這里需要注意的是:通過TRUNCATE 截取、清空數據后都是從初始值開始的,但是如果是手動刪除數據后,是沒有影響的,仍然在刪除前的最大數據基礎上+1增加自增長值)

3刪除表 ,重建表。

 關於SQL SERVER自增長的設置魚mysql有所不同,使用identity來設置,可參考這篇文章:https://blog.csdn.net/tswc_byy/article/details/81747159


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM