溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

總結(jié)工作中經(jīng)常用到的mysql基礎(chǔ)知識(shí)

發(fā)布時(shí)間:2020-06-08 11:27:30 來源:網(wǎng)絡(luò) 閱讀:306 作者:三月 欄目:MySQL數(shù)據(jù)庫
本文主要給大家介紹工作中經(jīng)常用到的mysql基礎(chǔ)知識(shí),文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對(duì)性,對(duì)大家的參考意義還是比較大的,下面跟筆者一起了解下工作中經(jīng)常用到的mysql基礎(chǔ)知識(shí)吧。
  1. 一張表,里面有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ù)庫或者是對(duì)表進(jìn)行OPTIMIZE操作,都會(huì)導(dǎo)致最大ID丟失

    (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ù)庫請(qǐng)求的信息,不論這些請(qǐng)求是否得到了正確的執(zhí)行。
慢查詢?nèi)罩荆涸O(shè)置一個(gè)閾值,將運(yùn)行時(shí)間超過該值的所有SQL語句都記錄到慢查詢的日志文件中。
二進(jìn)制日志:記錄對(duì)數(shù)據(jù)庫執(zhí)行更改的所有操作。

redo日志:記錄已提交的修改后的數(shù)據(jù),用于數(shù)據(jù)庫突然斷電,重啟后可以通過redolog來恢復(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ù),不是長度,不管n為多少,int的長度只能是4個(gè)字節(jié)

看完以上關(guān)于工作中經(jīng)常用到的mysql基礎(chǔ)知識(shí),很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識(shí)信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI