當前位置 主頁 > 網站技術 > 代碼類 > 最大化 縮小

    2019最新21個MySQL高頻面試題介紹

    欄目:代碼類 時間:2020-02-06 18:09

    今天給大家分享 21 個 MySQL 面試題。

    1、Mysql中有哪幾種鎖?

    MyISAM 支持表鎖,InnoDB 支持表鎖和行鎖,默認為行鎖。

    表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的概率最高,并發量 最低。

    行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖沖突的概率小,并發度最高。

    2、Mysql支持事務嗎?

    在缺省模式下,MYSQL 是 autocommit 模式的,所有的數據庫更新操作都會即時提交,所 以在缺省情況下,mysql 是不支持事務的。

    但是如果你的 MYSQL 表類型是使用 InnoDB Tables 或 BDB tables 的話,你的 MYSQL 就可以 使用事務處理,使用 SET AUTOCOMMIT=0 就可以使 MYSQL 允許在非 autocommit 模式,在非autocommit 模式下,你必須使用 COMMIT 來提交你的更改,或者用 ROLLBACK 來回滾你的 更改。

    示例如下:

    START TRANSACTION;
    
    SELECT @A:=SUM(salary) FROM table1 WHERE type=1; 
    
    UPDATE table2 SET summmary=@A WHERE type=1; 
    
    COMMIT;

    3、Mysql查詢是否區分大小寫?

    不區分。

    SELECT VERSION(), CURRENT_DATE;
    
    SeLect version(), current_date;
    
    seleCt vErSiOn(), current_DATE;

    這幾個例子都是一樣的,Mysql 不區分大小寫。

    4、列設置為 AUTO INCREMENT 時,如果在表中達到最大值,會發生什么情況?

    答:它會停止遞增,任何進一步的插入都將產生錯誤,因為密鑰已被使用。

    5、一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,刪除了第 15,16,17 條記錄, 再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?

    如果表的類型是 MyISAM,那么是 18。因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大ID 也不會丟失。

    如果表的類型是 InnoDB,那么是 15。InnoDB 表只是把自增主鍵的最大 ID 記錄到內存中,所以重啟數據庫或者是對表進行OPTIMIZE 操作,都會導致最大 ID 丟失。

    6、數據庫三范式是什么?

    第一范式(1NF):字段具有原子性,不可再分。(所有關系型數據庫系 統都滿足第一范式數據庫表中的字段都是單一屬性的,不可再分)

    第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足 第二范式(2NF)必須先滿足第一范式(1NF)。要求數據庫表中的每 個實例或行必須可以被惟一地區分。通常需要為表加上一個列,以存儲 各個實例的惟一標識。這個惟一屬性列被稱為主關鍵字或主鍵。

    滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三 范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關 鍵字信息。>所以第三范式具有如下特征: >>1. 每一列只有一個 值 >>2. 每一行都能區分。>>3. 每一個表都不包含其他表已經包含 的非主關鍵字信息。

    7、mysql 的復制原理以及流程?

    答:Mysql 內建的復制功能是構建大型,高性能應用程序的基礎。將 Mysql 的數據 分布到多個系統上去,這種分布的機制,是通過將 Mysql 的某一臺主機的數據 復制到其它主機(slaves)上,并重新執行一遍來實現的。* 復制過程中一 個服務器充當主服務器,而一個或多個其它服務器充當從服務器。主服務器將 更新寫入二進制日志文件,并維護文件的一個索引以跟蹤日志循環。這些日志 可以記錄發送到從服務器的更新。當一個從服務器連接主服務器時,它通知主 服務器在日志中讀取的最后一次成功更新的位置。從服務器接收從那時起發生 的任何更新,然后封鎖并等待主服務器通知新的更新。

    過程如下 :

    主服務器 把更新記錄到二進制日志文件中。

    下一篇:沒有了
在线观看中文字幕理论片