php面试题2018mysql_PHP程序员必会的MySQL面试题
01數(shù)據(jù)庫字段類型
MySQL常見的數(shù)據(jù)類型有哪些?
MySQL數(shù)據(jù)類型分為數(shù)值類型、日期時間型和字符串類型。數(shù)值類型常見的是TINYINT、INT、DECIMAL,日期類型常見的有DATE、DATETIME,字符串類型常見的有CHAR、VARCHAR、TEXT。詳細介紹見文章末尾的圖片。
MySQL數(shù)據(jù)類型中CHAR和VARCHAR有什么區(qū)別?
CHAR和VARCHAR都是用來存儲字符串的,但是他們存儲和查詢的方式不同。
CHAR是屬于固定長度的字符類型,而VARCHAR是屬于可變長度的字符類型。
因為CHAR是固定長度的,所以它的處理速度比VARCHAR快很多,但是它的缺點是浪費存儲空間。在讀取CHAR類型數(shù)據(jù)時如果尾部有空格會丟失空格,所以對于那種長度變化不大的并且對查詢速度有較高要求的數(shù)據(jù)可以考慮使用CHAR類型來存儲。
VARCHAR是變長字符串,對那些對長度不確定的字符串可以使用VARCHAR類型來存儲。
02存儲引擎相關(guān)問題
MySQL常見的存儲引擎有哪些?
常見的存儲引擎有InnoDB、MyISAM、MEMORY等
MySQL存儲引擎之間的區(qū)別
(1)對于MyISAM來說,不支持事務(wù);不支持外鍵;支持表鎖;這種存儲引擎的表會生成三個文件(索引文件、表結(jié)構(gòu)文件、數(shù)據(jù)文件);存儲表的總行數(shù),查詢時只要讀取這個總函數(shù)就行;采用非聚集索引;支持全文索引和空間索引;
(2)于InnoDB來說,支持事務(wù),有四種事務(wù)隔離級別;支持行鎖和外鍵約束;不存儲總行數(shù),查詢總行數(shù)需要遍歷整張表;對于AUTO_INCREMENT類型的字段,必須包含只有該字段的索引;表索引和數(shù)據(jù)存儲在一個文件內(nèi);主鍵索引采用聚集索引;
03數(shù)據(jù)庫事務(wù)
數(shù)據(jù)庫范式介紹
(1)1NF:字段不可分;原子性,字段不可再分,否則就算不上關(guān)系數(shù)據(jù)庫
(2)2NF:有主鍵,非主鍵字段依賴主鍵;唯一性,一個表只說明一個事物
(3)3NF:非主鍵字段不能相互依賴;每列都與主鍵有直接關(guān)系,不存在傳遞依賴
數(shù)據(jù)庫事務(wù)基本要素
(1)原子性(Atomicity);事務(wù)開始后所有操作,要么全部做完,要么全部不做,不能停滯在中間環(huán)節(jié)。
(2)一致性(Consistency):事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫的完整性約束沒有被破壞。
(3)隔離性(Isolation):同一時間,只允許一個事務(wù)請求同一數(shù)據(jù),不同的事務(wù)之間彼此沒有任何干擾。
(4)持久性(Durability):事務(wù)完成后,事務(wù)對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫,不能回滾。
數(shù)據(jù)庫事務(wù)隔離級別
讀未提交(read-uncommitted)、不可重復(fù)讀(read-committed)、可重復(fù)讀(repeatable-read)、串行化(serializable)
臟讀、幻讀、不可重復(fù)讀介紹
(1)臟讀:事務(wù)B修改數(shù)據(jù)但未提交,事務(wù)A讀數(shù)據(jù),然后B回滾,則A讀到的是臟數(shù)據(jù)。
(2)不可重復(fù)讀:事務(wù)A第一次讀取數(shù)據(jù),事務(wù)B修改數(shù)據(jù)提交,事務(wù)A第二次讀數(shù)據(jù),兩次數(shù)據(jù)不一致。
(3)幻讀:事務(wù)A update表的全部行,事務(wù)B插入一行,事務(wù)A就會發(fā)現(xiàn)表中還有未修改的行。(一般加間隙鎖)
總結(jié)
以上是生活随笔為你收集整理的php面试题2018mysql_PHP程序员必会的MySQL面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络理论篇】 10
- 下一篇: mysql lib 5.5.28_mys