一張表,里面有ID自增主鍵,當(dāng)insert了17條記錄之后,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ?
(1)如果表的類型是MyISAM,那么是18
因?yàn)镸yISAM表會(huì)把自增主鍵的最大ID記錄到數(shù)據(jù)文件里,重啟MySQL自增主鍵的最大ID也不會(huì)丟失
(2)如果表的類型是InnoDB,那么是15
InnoDB表只是把自增主鍵的最大ID記錄到內(nèi)存中,所以重啟數(shù)據(jù)庫(kù)或者是對(duì)表進(jìn)行OPTIMIZE操作,都會(huì)導(dǎo)致最大ID丟失
創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營(yíng)銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營(yíng)銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站建設(shè)、做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來(lái)將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式網(wǎng)絡(luò)營(yíng)銷推廣需求,讓再小的成都品牌網(wǎng)站建設(shè)也能產(chǎn)生價(jià)值!
(3) 如果不重啟的話 兩個(gè)引擎都是從18開始
(4)如果用truncate 兩個(gè)引擎都是從1開始
2. 字符串?dāng)?shù)據(jù)類型enum與set
(1)enum
單選字符串?dāng)?shù)據(jù)類型,適合存儲(chǔ)表單界面中的“單選值”。
設(shè)定enum的時(shí)候,需要給定“固定的幾個(gè)選項(xiàng)”;存儲(chǔ)的時(shí)候就只存儲(chǔ)其中的一個(gè)值。
設(shè)定enum的格式:
enum("選項(xiàng)1","選項(xiàng)2","選項(xiàng)3",...);
實(shí)際上,enum的選項(xiàng)都會(huì)對(duì)應(yīng)一個(gè)數(shù)字,依次是1,2,3,4,5...,最多有65535個(gè)選項(xiàng)
使用的時(shí)候,可以使用選項(xiàng)的字符串格式,也可以使用對(duì)應(yīng)的數(shù)字。
(2)set
多選字符串?dāng)?shù)據(jù)類型,適合存儲(chǔ)表單界面的“多選值”。
設(shè)定set的時(shí)候,同樣需要給定“固定的幾個(gè)選項(xiàng)”;存儲(chǔ)的時(shí)候,可以存儲(chǔ)其中的若干個(gè)值。
設(shè)定set的格式:
set("選項(xiàng)1","選項(xiàng)2","選項(xiàng)3",...)
同樣的,set的每個(gè)選項(xiàng)值也對(duì)應(yīng)一個(gè)數(shù)字,依次是1,2,4,8,16...,最多有64個(gè)選項(xiàng)
使用的時(shí)候,可以使用set選項(xiàng)的字符串本身(多個(gè)選項(xiàng)用逗號(hào)分隔),也可以使用多個(gè)選項(xiàng)的數(shù)字之和(比如:1+2+4=7)
3.mysql log
錯(cuò)誤日志:記錄出錯(cuò)信息,也記錄一些警告信息或者正確的信息。
查詢?nèi)罩荆河涗浰袑?duì)數(shù)據(jù)庫(kù)請(qǐng)求的信息,不論這些請(qǐng)求是否得到了正確的執(zhí)行。
慢查詢?nèi)罩荆涸O(shè)置一個(gè)閾值,將運(yùn)行時(shí)間超過該值的所有SQL語(yǔ)句都記錄到慢查詢的日志文件中。
二進(jìn)制日志:記錄對(duì)數(shù)據(jù)庫(kù)執(zhí)行更改的所有操作。
redo日志:記錄已提交的修改后的數(shù)據(jù),用于數(shù)據(jù)庫(kù)突然斷電,重啟后可以通過redolog來(lái)恢復(fù)斷電前的數(shù)據(jù)
undo日志:記錄事務(wù)修改前的數(shù)據(jù),用于事務(wù)回退,可以通過undolog恢復(fù)事務(wù)之前的數(shù)據(jù)
4、MySQL中myisam與innodb的區(qū)別
1>.InnoDB支持事物,而MyISAM不支持事物
2>.InnoDB支持行級(jí)鎖,而MyISAM支持表級(jí)鎖
3>.InnoDB支持MVCC, 而MyISAM不支持
4>.InnoDB支持外鍵,而MyISAM不支持
5>.InnoDB不支持全文索引,而MyISAM支持。
(2)、innodb引擎的4大特性
插入緩沖(insert buffer),二次寫(double write),自適應(yīng)哈希索引(ahi),預(yù)讀(read ahead)
(3)、2者selectcount(*)哪個(gè)更快,為什么
myisam更快,因?yàn)閙yisam內(nèi)部維護(hù)了一個(gè)計(jì)數(shù)器,可以直接調(diào)取。
5、多對(duì)多關(guān)系的理解
比如有兩個(gè)表A、B, 多對(duì)多是指A表中的某一條數(shù)據(jù)有可能對(duì)應(yīng)B表中的多條數(shù)據(jù),而且還有一些條數(shù)據(jù)可能對(duì)應(yīng)B表中的一條數(shù)據(jù)。(不是指A表中的多條數(shù)據(jù)對(duì)應(yīng)著B表中的多條數(shù)據(jù))
所以這里需要個(gè)中間表C,C中至少有兩列,每列上都創(chuàng)建外鍵并分別引用A和B。C表中的這兩列為聯(lián)合主鍵,防止重復(fù)。
6.char(n)和varchar(n)這里的n是n個(gè)字符,不是字節(jié)(mysql5以上)
7.int(n) n是顯示的位數(shù),不是長(zhǎng)度,不管n為多少,int的長(zhǎng)度只能是4個(gè)字節(jié)
看完以上關(guān)于工作中經(jīng)常用到的mysql基礎(chǔ)知識(shí),很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識(shí)信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。