MySQL中主鍵為0與主鍵自排約束的關(guān)系詳解(細(xì)節(jié))
前言
本文主要介紹了關(guān)于MySQL主鍵為0與主鍵自排約束的關(guān)系,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
開(kāi)始不設(shè)置主鍵表的設(shè)計(jì)如下:


如果id的位置有好幾個(gè)0的話:設(shè)置主鍵并且自動(dòng)排序時(shí),0會(huì)從1開(kāi)始遞增;


Insert 進(jìn)去 id = 0的數(shù)據(jù),數(shù)據(jù)會(huì)從實(shí)際的行數(shù)開(kāi)始增加,和從0變化不一樣;



現(xiàn)在主鍵是沒(méi)有0的,如果把某個(gè)id改成0的話,0不會(huì)變!直接會(huì)進(jìn)行排序;


再insert一個(gè)id=0的看看,居然還是跟剛才一樣直接跟行數(shù)相關(guān)!


再重置一下自動(dòng)排序,看看這個(gè)0會(huì)不會(huì)有變化,先取消自排;


再加上自排,果然跟想的一樣,0要變成1了,錯(cuò)誤提示說(shuō)的是主鍵有重復(fù)的1所以不讓自排,

修改之后,果真可以了,0變成1了,


小結(jié)
我覺(jué)得也就這幾種情況吧,無(wú)符號(hào)的情況應(yīng)該沒(méi)什么區(qū)別,還有什么沒(méi)有考慮的希望大家給我留言,可以告訴我你是怎么想的,我也很想知道,現(xiàn)在拋磚引玉我把我的總結(jié)和想法寫一下:
對(duì)我來(lái)說(shuō),0在數(shù)據(jù)庫(kù)里很特殊。
使用limit查看指定范圍數(shù)據(jù)的時(shí)候這時(shí)候表就會(huì)是從0開(kāi)始往下排的順序,但是insert添加一行數(shù)據(jù)的時(shí)候反而是跟行數(shù)有關(guān)系,這時(shí)候又是按照從1開(kāi)始往下排的順序。如果使用主鍵自排約束以前表里有0,再設(shè)置完主鍵自排以后所有的0又不會(huì)根據(jù)行數(shù),而是直接按照自上而下的順序從1開(kāi)始排。如果把表中的某個(gè)主鍵的數(shù)改成0,那直接就會(huì)進(jìn)行排序放到正數(shù)前面,也就是說(shuō)主鍵自排是允許有0存在的,那為什么本身存在的0要去修改成從1開(kāi)始的遞增序列呢?哪怕沒(méi)加主鍵自排以前只有一個(gè)0,加了主鍵自排以后還是會(huì)變成1。
開(kāi)始有0,增加主鍵自排約束,0依次變?yōu)?,2,3,4.......
開(kāi)始沒(méi)0,增加主鍵自排約束,新添加的主鍵是0的行會(huì)根據(jù)行數(shù)自行變化,注意這里是新添加的行,使用的是insert。
開(kāi)始沒(méi)0,把某個(gè)主鍵的數(shù)修改成0,這個(gè)0會(huì)直接在排好序了再在表里顯示出來(lái)。
說(shuō)得簡(jiǎn)單一點(diǎn)就是,增加主鍵自排約束后:
主鍵的值:修改成的0,可以存在,就是排個(gè)序。
新添加的0,不允許存在,要根據(jù)行號(hào)改變。
本身存在的0,不允許存在,要從1開(kāi)始遞增變化。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
mysql查詢字符串替換語(yǔ)句小結(jié)(數(shù)據(jù)庫(kù)字符串替換)
有時(shí)候我們需要對(duì)mysql的字符串進(jìn)行替換,我們就可以通過(guò)sql語(yǔ)句直接實(shí)現(xiàn)了,不過(guò)對(duì)于大數(shù)據(jù)量的字段不建議使用此方法2012-07-07
Navicat使用報(bào)2059錯(cuò)誤的兩種解決方案
Navicat是一款流行的數(shù)據(jù)庫(kù)管理工具,而MySQL則是其中的一種數(shù)據(jù)庫(kù)軟件,下面這篇文章主要給大家介紹了關(guān)于Navicat使用報(bào)2059錯(cuò)誤的兩種解決方案,需要的朋友可以參考下2023-11-11
mysql?復(fù)制行數(shù)據(jù)命令經(jīng)驗(yàn)分享(Mysql?復(fù)制一條數(shù)據(jù))
有時(shí)候表里有一行已經(jīng)添加好的數(shù)據(jù),想要多復(fù)制幾百條用來(lái)測(cè)試比如要分頁(yè)測(cè)試等,需要多條數(shù)據(jù),但是有時(shí)候數(shù)據(jù)表字段太多了,有幾十個(gè),一個(gè)一個(gè)手寫那是不可能的2023-09-09
mysqldump?搭建復(fù)制報(bào)錯(cuò)原因解析
這篇文章主要介紹了mysqldump搭建復(fù)制失敗的問(wèn)題分析過(guò)程和改進(jìn)建議有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
解決當(dāng)MySQL數(shù)據(jù)庫(kù)遇到Syn Flooding問(wèn)題
Syn攻擊常見(jiàn)于應(yīng)用服務(wù)器,而數(shù)據(jù)庫(kù)服務(wù)器在內(nèi)網(wǎng)中,應(yīng)該很難碰到類似的攻擊,這篇文章主要介紹了當(dāng)MySQL數(shù)據(jù)庫(kù)遇到Syn Flooding問(wèn)題 ,需要的朋友可以參考下2019-06-06

