程序員必備mysql高級知識(mysql必備基礎知識)

本文目錄一覽:

高級mysql dba必備哪些技能

高級操作

1.Mysql 主從同步配置

2.Mysql 雙master 配置

3.Mysql 雙master+叢庫+keepalived 配置高可用數據庫

客戶端

作為DBA,一定不要用各種GUI工具,mysql自帶命令行client才是你的最佳武器

可選項

1.mysql 分區配置,因為限制太多,實際中分表都是程序做

2.高性能 mysql

a).drizzle

b).MariaDB

c).handlersocket

基本知識

1.mysql的編譯安裝

2.mysql 第3方存儲引擎安裝配置方法

3.mysql 主流存儲引擎(MyISAM/innodb/MEMORY)的特點

4.字符串編碼知識

5.MySQL用戶賬戶管理

6.數據備份/數據入導出

7.mysql 支持的基本數據類型

8.庫/表/字段/索引 的創建/修改/刪除

9.基本sql 語法:select/insert/update/delete,掌握最基本的語法即可,什麼inner join,left join的了解就行 mysql的應用場景大多都是高並發訪問/業務邏輯簡單,join/子查詢/視圖/觸發器 基本上不用

10.sql 聚集查詢:group by/having

11.如何用explain 分析優化查詢

12.常見 sql 優化技巧

a).select xx from yyy limited …,

b).order by random

c).select count(*) from

13.各種show xxx 指令,大概有20種,每個都嘗試用一次

14.show VARIABLES; 大概有240項,逐條看懂,可以打印出來貼牆上

程序員面試寶典之Mysql數據庫Innodb引擎的4個隔離級別

題目:請闡述Mysql Innodb引擎的4個隔離級別

難度:三星

面試頻率:五星

這道題真的是一道數據庫的高頻題,數據庫題除了索引的原理之外就是這道題的面試頻率最高。

1.Read uncommitted(讀未提交):,最低的隔離級別,可以一個事務讀到其他事務沒有提交的數據,也稱臟讀,這個隔離級別很少人用

2.Read committed(讀已提交):相比於讀未提交,這個隔離級別只能讀到其他事物已經提交了的數據,這個隔離級別用得比較多。但是不是Mysql默認的隔離級別

3.Repeatable read(可重複讀): 在讀已提交隔離級別中,2次讀取同一個變量如果其他事務修改了它的值,會讀到的不一樣。而在這個隔離級別中,顧名思義,一個事務開始讀了。多次讀到的值可以保證是一樣的

4.Serializable 序列化 在這個隔離級別下,所有的事務都將串行操作,是隔離級別最高的也是效率最低的,很少人用

面試官追問:Innodb引擎默認隔離級別是哪個

答:可重複讀

面試官追問:可重複讀的實現原理

答:使用了MVCC多版本控制(類似樂觀鎖),Innodb引擎會給每一行數據加一個版本號信息,當一個事務修改一個數據時會增加它的版本號+1,當一個事務開始的時候會緩存下此時的版本號,後面讀取的時候只會讀取這個版本號的數據,因此別的事務提交了修改數據的版本號大於它,因此不會被讀到

面試官追問:事務的隔離級別如何設置:

答:在Mysql命令行下調用命令 set global.tx_isolation,但這樣Mysql重啟失效,修改my.cnf來永久設置

面試官追問:可重讀讀有什麼問題

答:會出現幻讀,幻讀是指事務讀取到一個值無法準確繼續後續操作。例如讀取一個值,沒有則插入,但是等插入的時候其他事務已經插入了,這就會導致插入失敗,解決辦法:sql語句顯示加鎖 :select xxxx for update,其他事務修改數據則會阻塞

高級程序員應必備哪些知識

作為高級程序員必須具備以下條件:

(1)必須一個或二個操作系統如:Windows的知識;

(2)熟悉操作系統課程體系、彙編語言課程體系和微機原理課程體系三個基礎內容;

(3)必須熟悉一種或二種編程語言;

(4)必須熟練掌握網絡編程技術、數據結構、數據庫技術

(5)盡量要認識像QQ:105510061這樣的單片機高手

(6)熟練掌握如異步串口、USB的原理和使用;

(7)有豐富的屏幕編程經驗;

(8)要有敢於研究、探討問題的勇氣,正確評估系統的能力

(9)這些你可能不全明白,不要怕請教老程序員QQ:105510061

數據庫(mysql)關鍵知識

Mysql是目前互聯網使用最廣的關係數據庫,關係數據庫的本質是將問題分解為多個分類然後通過關係來查詢。 一個經典的問題是用戶借書,三張表,一個用戶,一個書,一個借書的關係表。當需要查詢某個用戶借書情況或者是書被那些人借了,就用關係查詢來實現。

關係數據庫範式

來自英文Normal form,簡稱NF。要想設計—個好的關係,必須使關係滿足一定的約束條件,滿足這些規範的數據庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。總共有六種範式:第一範式(1NF)、第二範式(2NF)、 第三範式 (3NF)、巴斯-科德範式(BCNF)、 第四範式 (4NF)和 第五範式 (5NF,又稱完美範式)。

1NF是指數據庫表的每一列都是不可分割的原子數據項。2NF必須滿足1NF,要求數據庫表中的每行記錄必須可以被唯一地區分。3NF在2NF基礎上,任何非主 屬性 不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)。BCNF是在3NF基礎上,任何非主屬性不能對主鍵子集依賴(在3NF基礎上消除對主碼子集的依賴), 滿足BCNF不再會有任何由於函數依賴導致的異常,但是我們還可能會遇到由於多值依賴導致的異常。4NF的定義很簡單:已經是BC範式,並且不包含多值依賴關係。5NF處理的是無損連接問題,這個範式基本沒有實際意義,因為無損連接很少出現,而且難以察覺。而域鍵範式試圖定義一個終極範式,該範式考慮所有的依賴和約束類型,但是實用價值也是最小的,只存在理論研究中。

Catalog和Schema

是數據庫對象命名空間中的層次,主要用來解決命名衝突的問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數據庫對象(表、視圖、字段等)。但是Mysql的數據庫名就是Schema,不支持Catalog。

Mysql的數據庫引擎主要有兩種MyISAM和InnoDB,MyISAM支持全文檢索,InnoDB支持事務。

SQL中的通配符‘%’代表任意字符出現任意次數。‘_’代表任意字符出現一次。SQL與正則表達式結合查詢一般用在WHERE table_name REGEXP ‘^12.34’。子查詢是從裡到外執行。

數據庫聯結(join)涉及到外鍵,外鍵是指一個表的列是另一個表的主鍵,那麼它就是外鍵。笛卡爾積聯結(不指定聯結條件時)生成的記錄條目是單純的第一個表的行乘以第二個表的列數。用得最多的是等值聯結也叫內部聯結。

高級聯結還有自連接,是指查詢中的兩張表是同一張表,它通常作為外部語句用來代替從相同表中檢索數據時使用的子查詢。自然聯結使每個列只返回一次。外部聯結是指聯結包含了那些在相關表中沒有關聯行的行。例如列出所有產品及其訂購數量,包括沒有人訂購的產品。LEFT OUTER JOIN指選擇左邊表的所有行。

組合查詢是指採用UNION等將兩個查詢結果取並集。

視圖是查看存儲在別處的數據的一種工具,它本身並不包含數據,因此表的數據修改了,視圖返回的數據也將隨之修改,因此如果使用了複雜或嵌套視圖會對性能有較大的影響。視圖的作用之一是隱藏複雜的SQL通常會涉及到聯結查詢。

存儲過程類似於批處理,包含了一條或多條SQL語句。語法:

CREATE PROCEDURE name()

BEGIN

SQL

END

————————-

CALL name()//來調用存儲過程

游標有DECLARE定義,游標與存儲過程是綁定的,存儲過程處理完成,游標就會消失。游標被打開後可以使用FETCH語句訪問每一行。

觸發器是在某個時間發生時自動執行某條SQL語句。語法:

CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW

事務處理可以維護數據庫的完整性,保證批量的操作要麼完全執行,要麼完全不執行。包括事務、回退、提交、保留點幾個關鍵術語。ROLLBACK只能在一個事務處理內使用。他不能回退CREATE和DROP操作。使用COMMIT保證事務提交。複雜的事務處理需要部分提交或回退,因此我們需要使用保留點SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留點越多越好。保留點在事務執行完成後自動釋放。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/241908.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:44
下一篇 2024-12-12 12:44

相關推薦

  • 兼職程序員能掙錢嗎?

    可以。不過,兼職程序員賺錢的關鍵就在於如何找到並利用合適的機會。 一、掌握技能 作為程序員,掌握必要的技能是兼職掙錢的前提。除了紮實的編程技能,了解相關工具和平台也非常重要。常見的…

    編程 2025-04-29
  • 兼職程序員外包平台的開發與實現

    隨着社會經濟和科技的快速發展,更多人選擇通過互聯網進入編程行業。兼職開發已成為一種新型就業方式,並且這種方式在新冠肺炎疫情襲來、大規模遠程辦公的背景下更為普遍。本文將從多個方面詳細…

    編程 2025-04-28
  • Python元祖排序:從基礎知識到高級應用

    Python元祖是一種不可變序列,通常用於將一組數據綁定在一起。元祖之間經常需要排序,本文將從基礎知識到高級應用,為你詳細講解Python元祖排序。 一、排序方法 Python提供…

    編程 2025-04-28
  • Python 知乎:一個全新的知識分享平台

    Python 知乎,是一個全新的知識分享平台,它將知識分享變得更加輕鬆簡單,為用戶提供了一個學習、交流和分享的社區平台。Python 知乎致力於幫助用戶分享、發現和表達他們的見解,…

    編程 2025-04-27
  • 計算機二級基礎知識題庫

    計算機二級基礎知識題庫考試為計算機二級考試的必修科目之一,其中包含了計算機的基本知識以及應用能力等內容。本文將從題庫概述、考試內容、備考建議以及編程實例等幾個方面進行介紹,希望對廣…

    編程 2025-04-27
  • Isodata算法算高級算法嗎?

    是的,Isodata算法算得上是一種高級算法。 一、Isodata算法的定義 Isodata算法是一種基於聚類的圖像分割算法,廣泛應用於圖像處理領域。 該算法首先對圖像進行預處理,…

    編程 2025-04-27
  • 傳智播客黑馬程序員怎麼樣

    傳智播客是一家專業的IT培訓機構,旗下的黑馬程序員培訓項目備受好評,那麼傳智播客黑馬程序員怎麼樣呢?本文將從多個方面為大家詳細闡述,讓大家更加了解其優缺點。 一、學習方式 傳智播客…

    編程 2025-04-27
  • Python高級用法:re.split函數雙空格

    本文將詳細介紹Python中re模塊中的split函數雙空格的用法及其應用場景。 一、split函數雙空格概述 re.split() 是 Python re(正則表達式) 模塊中的…

    編程 2025-04-27
  • 軟件測試理論基礎知識

    一、測試概述 軟件測試是指在已知測試用例的前提下,檢查軟件是否滿足規定的功能和質量要求的過程。 軟件測試的目的是要發現並糾正可能存在的缺陷。它涉及軟件開發周期的各個階段,從需求分析…

    編程 2025-04-23
  • 如何使用getField函數:Java程序員的必備技能

    Java中有很多反射API可以幫助開發者在運行時獲取或者修改某些屬性或方法的值。getField方法就是Java反射中一個非常實用的方法。本文將詳細介紹getField方法的用法以…

    編程 2025-04-23

發表回復

登錄後才能評論